Skip to content

Commit

Permalink
Fix and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
TorecLuik committed Feb 29, 2024
1 parent 234be02 commit 1d8d035
Showing 1 changed file with 49 additions and 3 deletions.
52 changes: 49 additions & 3 deletions tests/unit/test_slurm_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,9 +201,6 @@ def test_get_workflow_command(slurm_client,
"IMAGE_PATH": "/path/to/slurm_images/workflow_path",
"IMAGE_VERSION": "1.0",
"SINGULARITY_IMAGE": "image_1.0.sif",
"CONVERSION_PATH": "/path/to/slurm_converters",
"CONVERTER_IMAGE": "convert_zarr_to_tiff.sif",
"DO_CONVERT": "true",
"SCRIPT_PATH": "/path/to/slurm_script",
"PARAM1": "value1",
"PARAM2": "value2"
Expand All @@ -218,6 +215,55 @@ def test_get_workflow_command(slurm_client,
assert env == expected_env


@pytest.mark.parametrize("source_format, target_format", [("zarr", "tiff"), ("xyz", "abc")])
@patch('biomero.slurm_client.SlurmClient.run_commands')
@patch('fabric.Result')
def test_run_conversion_workflow_job(mock_result, mock_run_commands, slurm_client, source_format, target_format):
# GIVEN
folder_name = "example_folder"

slurm_client.slurm_data_path = "/path/to/slurm_data"
slurm_client.slurm_converters_path = "/path/to/slurm_converters"
slurm_client.slurm_script_path = "/path/to/slurm_script"

expected_config_file = f"config_{folder_name}.txt"
expected_data_path = f"{slurm_client.slurm_data_path}/{folder_name}"
expected_conversion_cmd, expected_sbatch_env = (
"sbatch --job-name=conversion --export=ALL,CONFIG_PATH=\"$PWD/$CONFIG_FILE\" --array=1-$N $SCRIPT_PATH/convert_job_array.sh",
{
"DATA_PATH": f"{expected_data_path}",
"CONVERSION_PATH": f"{slurm_client.slurm_converters_path}",
"CONVERTER_IMAGE": f"convert_{source_format}_to_{target_format}.sif",
"SCRIPT_PATH": f"{slurm_client.slurm_script_path}",
"CONFIG_FILE": f"{expected_config_file}"
}
)
expected_commands = [
f"find {expected_data_path}/data/in -name '*.{source_format}' | awk '{{print NR, $0}}' > {expected_config_file}",
f"N=$(wc -l < \"{expected_config_file}\")",
f"echo \"Number of .{source_format} files: $N\"",
expected_conversion_cmd
]

# Mocking the run_commands method to avoid actual execution
mock_run_commands.return_value = mock_result

# WHEN
slurm_job = slurm_client.run_conversion_workflow_job(
folder_name, source_format, target_format)

# THEN
assert slurm_job is not None

assert mock_run_commands.call_args[0][0] == expected_commands
assert mock_run_commands.call_args[0][1] == expected_sbatch_env

# Check properties of slurm_job
assert slurm_job.job_id == -1
assert slurm_job.submit_result.ok
assert slurm_job.job_state is None


def test_pull_descriptor_from_github(slurm_client):
# GIVEN
workflow = "example_workflow"
Expand Down

0 comments on commit 1d8d035

Please sign in to comment.