From 71d69093d11db038c0b3f782ca77692eaeafb816 Mon Sep 17 00:00:00 2001 From: Martin Lange <martin.lange@ufz.de> Date: Sun, 27 Nov 2022 17:57:41 +0100 Subject: [PATCH] add a test for sjipped pushes in multiple links between components --- tests/core/test_schedule.py | 68 ++++++++++++++++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/tests/core/test_schedule.py b/tests/core/test_schedule.py index bfd6d9af..2afedc28 100644 --- a/tests/core/test_schedule.py +++ b/tests/core/test_schedule.py @@ -716,7 +716,7 @@ class TestComposition(unittest.TestCase): module1.outputs["Out"] >> Scale(1.0) >> module2.inputs["In"] - composition.connect(datetime(2000, 1, 1)) + composition.connect() self.assertEqual(updates, ["A", "B"]) composition.run(t_max=datetime(2000, 1, 2)) @@ -734,6 +734,72 @@ class TestComposition(unittest.TestCase): ], ) + def test_dependencies_schedule_no_push_double(self): + start = datetime(2000, 1, 1) + info = fm.Info(time=start, grid=fm.NoGrid()) + + updates = [] + + def lambda_generator_1(t): + updates.append("A1") + return t.day + + def lambda_generator_2(t): + if (t.day - 1) % 5 != 0: + return None + updates.append("A2") + return t.day + + def lambda_component(inp, t): + updates.append("B") + return {"Out": inp["In1"]} + + module1 = CallbackGenerator( + callbacks={ + "Out1": (lambda_generator_1, info), + "Out2": (lambda_generator_2, info), + }, + start=start, + step=timedelta(days=1), + ) + module2 = CallbackComponent( + inputs={ + "In1": fm.Info(time=None, grid=fm.NoGrid()), + "In2": fm.Info(time=None, grid=fm.NoGrid()), + }, + outputs={ + "Out": fm.Info(time=None, grid=fm.NoGrid()), + }, + callback=lambda_component, + start=start, + step=timedelta(days=1), + ) + composition = Composition([module1, module2]) + composition.initialize() + + module1.outputs["Out1"] >> Scale(1.0) >> module2.inputs["In1"] + module1.outputs["Out2"] >> Scale(1.0) >> module2.inputs["In2"] + + composition.connect() + self.assertEqual(updates, ["A1", "A2", "B"]) + + composition.run(t_max=datetime(2000, 1, 2)) + self.assertEqual( + updates, + [ + "A1", + "A2", + "B", # Connect + "A1", + "A1", + "A1", + "A1", + "A1", + "A2", + "B", # Update B to 5 + ], + ) + def test_dependency_fail(self): start = datetime(2000, 1, 1) info = fm.Info(time=start, grid=fm.NoGrid()) -- GitLab