diff --git a/autosubmit/job/job.py b/autosubmit/job/job.py index ba4d704079cc82ffe5560d752feab7eb759da7ef..ca3c38619189758a16847635112f403601233c9e 100644 --- a/autosubmit/job/job.py +++ b/autosubmit/job/job.py @@ -1881,7 +1881,8 @@ class Job(object): return parameters def update_job_parameters(self,as_conf, parameters): - self.splits = as_conf.jobs_data[self.section].get("SPLITS", None) + if self.splits == "auto": + self.splits = as_conf.jobs_data[self.section].get("SPLITS", None) self.delete_when_edgeless = as_conf.jobs_data[self.section].get("DELETE_WHEN_EDGELESS", True) self.check = as_conf.jobs_data[self.section].get("CHECK", False) self.check_warnings = as_conf.jobs_data[self.section].get("CHECK_WARNINGS", False) @@ -1901,8 +1902,7 @@ class Job(object): parameters['MEMBER'] = self.member parameters['SPLIT'] = self.split parameters['SHAPE'] = self.shape - if parameters.get('SPLITS', "auto") == "auto": - parameters['SPLITS'] = self.splits + parameters['SPLITS'] = self.splits parameters['DELAY'] = self.delay parameters['FREQUENCY'] = self.frequency parameters['SYNCHRONIZE'] = self.synchronize diff --git a/autosubmit/job/job_list.py b/autosubmit/job/job_list.py index d373fb6b2861aa081ba793c610e84de3a4114bc6..ab4406c3f6a1a1f922fe0c689783c5c519d2d2cb 100644 --- a/autosubmit/job/job_list.py +++ b/autosubmit/job/job_list.py @@ -1257,6 +1257,7 @@ class JobList(object): if "auto" in filters_to.get("SPLITS_TO", "").lower(): filters_to["SPLITS_TO"] = filters_to["SPLITS_TO"].lower() filters_to["SPLITS_TO"] = filters_to["SPLITS_TO"].replace("auto", auto_splits) + job.splits = auto_splits return dependency def _manage_job_dependencies(self, dic_jobs, job, date_list, member_list, chunk_list, dependencies_keys, diff --git a/test/unit/test_dependencies.py b/test/unit/test_dependencies.py index e6dc3e8804ee12065200131b45ff2c372935bc20..8c0bb563fd945e4388771a03ca35e939de9473c6 100644 --- a/test/unit/test_dependencies.py +++ b/test/unit/test_dependencies.py @@ -6,6 +6,7 @@ import tempfile import unittest from copy import deepcopy from datetime import datetime + from mock import patch from mock.mock import MagicMock @@ -551,7 +552,7 @@ class TestJobList(unittest.TestCase): self.assertEqual(expected_output, result) -def test_normalize_auto_keyword(autosubmit_config): +def test_normalize_auto_keyword(autosubmit_config, mocker): as_conf = autosubmit_config('a000', experiment_data={ }) @@ -602,6 +603,7 @@ def test_normalize_auto_keyword(autosubmit_config): dependency.section = "minus" dependency = job_list._normalize_auto_keyword(job, dependency) assert dependency.relationships["SPLITS_FROM"]["key"]["SPLITS_TO"] == "40" + assert job.splits == "40" dependency.relationships = { "SPLITS_FROM": { "key": { @@ -613,7 +615,17 @@ def test_normalize_auto_keyword(autosubmit_config): dependency.section = "plus" dependency = job_list._normalize_auto_keyword(job, dependency) assert dependency.relationships["SPLITS_FROM"]["key"]["SPLITS_TO"] == "50" - + assert job.splits == "50" # Test that the param is assigned + + # Test that the param is not being changed after update_job_parameters + as_conf.experiment_data["JOBS"] = {} + as_conf.experiment_data["JOBS"][job.section] = {} + as_conf.experiment_data["JOBS"][job.section]["SPLITS"] = "auto" + job.date = None + mocker.patch("autosubmit.job.job.Job.calendar_split", side_effect=lambda x, y: y) + parameters = job.update_job_parameters(as_conf, {}) + assert job.splits == "50" + assert parameters["SPLITS"] == "50" if __name__ == '__main__':