From e76d52ba642be12030f6780451bb3d36ea63ad58 Mon Sep 17 00:00:00 2001 From: Aaron R Hall Date: Mon, 27 Jan 2025 15:20:06 -0700 Subject: [PATCH 1/3] Adds regression test for archive_workflow in wf_update --- beeflow/tests/test_wf_update.py | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 beeflow/tests/test_wf_update.py diff --git a/beeflow/tests/test_wf_update.py b/beeflow/tests/test_wf_update.py new file mode 100644 index 00000000..42eca295 --- /dev/null +++ b/beeflow/tests/test_wf_update.py @@ -0,0 +1,52 @@ +"""Tests for wf_update module.""" + +import os +import pytest +from beeflow.wf_manager.resources import wf_update + + +@pytest.mark.parametrize( + "final_state, expected_state", [(None, "Archived"), ("FAILED", "Archived/FAILED")] +) +def test_archive_workflow(tmpdir, mocker, final_state, expected_state): + """Regression test archive_workflow.""" + workdir = str(tmpdir / "workdir") + db = mocker.MagicMock() + mocker.patch("os.path.expanduser", return_value=str(tmpdir)) + mocker.patch( + "beeflow.wf_manager.resources.wf_utils.get_workflow_dir", return_value=workdir + ) + mocker.patch( + "beeflow.common.config_driver.BeeConfig.get", + return_value=str(tmpdir / "bee_archive_dir"), + ) + mock_export_dag = mocker.patch("beeflow.wf_manager.resources.wf_utils.export_dag") + mock_update_wf_status = mocker.patch( + "beeflow.wf_manager.resources.wf_utils.update_wf_status" + ) + mock_remove_wf_dir = mocker.patch( + "beeflow.wf_manager.resources.wf_utils.remove_wf_dir" + ) + mock_log = mocker.patch("logging.Logger.info") + with tmpdir.as_cwd(): + # set up dummy folders for archiving process + os.makedirs(".config/beeflow") + os.makedirs("workdir") + os.makedirs("bee_archive_dir/workflows") + with open(".config/beeflow/bee.conf", "w", encoding="utf-8"): + pass + wf_update.archive_workflow(db, "wf_id_test", final_state) + assert os.path.exists("bee_archive_dir/wf_id_test.tgz") + mock_export_dag.assert_called_once_with( + "wf_id_test", + workdir + "/dags", + workdir + "/graphmls", + no_dag_dir=True, + copy_dag_in_archive=False, + ) + db.workflows.update_workflow_state.assert_called_once_with( + "wf_id_test", expected_state + ) + mock_update_wf_status.assert_called_once_with("wf_id_test", expected_state) + mock_remove_wf_dir.assert_called_once_with("wf_id_test") + mock_log.assert_called_once_with("Removing Workflow Directory") From ef9d0ae45ba3e8ab4257a08845974ad108b99604 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 27 Jan 2025 22:27:27 +0000 Subject: [PATCH 2/3] Updated coverage.svg --- coverage.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coverage.svg b/coverage.svg index f5af1dbe..6d24dca8 100644 --- a/coverage.svg +++ b/coverage.svg @@ -15,7 +15,7 @@ coverage coverage - 72% - 72% + 73% + 73% From 2b0a2617cc79cf28a7f4ec56744584ff98590a58 Mon Sep 17 00:00:00 2001 From: Aaron R Hall Date: Tue, 28 Jan 2025 13:48:18 -0700 Subject: [PATCH 3/3] Added regression test for archive_fail_workflow --- beeflow/tests/test_wf_update.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/beeflow/tests/test_wf_update.py b/beeflow/tests/test_wf_update.py index 42eca295..06ee991a 100644 --- a/beeflow/tests/test_wf_update.py +++ b/beeflow/tests/test_wf_update.py @@ -6,9 +6,13 @@ @pytest.mark.parametrize( - "final_state, expected_state", [(None, "Archived"), ("FAILED", "Archived/FAILED")] + "test_function, expected_state", + [ + (wf_update.archive_workflow, "Archived"), + (wf_update.archive_fail_workflow, "Archived/Failed"), + ], ) -def test_archive_workflow(tmpdir, mocker, final_state, expected_state): +def test_archive_workflow(tmpdir, mocker, test_function, expected_state): """Regression test archive_workflow.""" workdir = str(tmpdir / "workdir") db = mocker.MagicMock() @@ -35,7 +39,7 @@ def test_archive_workflow(tmpdir, mocker, final_state, expected_state): os.makedirs("bee_archive_dir/workflows") with open(".config/beeflow/bee.conf", "w", encoding="utf-8"): pass - wf_update.archive_workflow(db, "wf_id_test", final_state) + test_function(db, "wf_id_test") assert os.path.exists("bee_archive_dir/wf_id_test.tgz") mock_export_dag.assert_called_once_with( "wf_id_test",