|
@@ -24,7 +24,6 @@ from taipy.core.data import PickleDataNode
|
|
from taipy.core.data._data_manager import _DataManager
|
|
from taipy.core.data._data_manager import _DataManager
|
|
from taipy.core.scenario._scenario_manager import _ScenarioManager
|
|
from taipy.core.scenario._scenario_manager import _ScenarioManager
|
|
from taipy.core.submission._submission_manager_factory import _SubmissionManagerFactory
|
|
from taipy.core.submission._submission_manager_factory import _SubmissionManagerFactory
|
|
-from taipy.core.submission.submission import Submission
|
|
|
|
from taipy.core.submission.submission_status import SubmissionStatus
|
|
from taipy.core.submission.submission_status import SubmissionStatus
|
|
from taipy.core.task._task_manager import _TaskManager
|
|
from taipy.core.task._task_manager import _TaskManager
|
|
|
|
|
|
@@ -56,7 +55,10 @@ def test_submit_scenario_development_mode():
|
|
|
|
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
with freezegun.freeze_time(submit_time):
|
|
with freezegun.freeze_time(submit_time):
|
|
- jobs = orchestrator.submit(scenario) # scenario is executed directly in development mode
|
|
|
|
|
|
+ submission = orchestrator.submit(
|
|
|
|
+ scenario, no_of_retry=10, log=True, log_file="file_path"
|
|
|
|
+ ) # scenario is executed directly in development mode
|
|
|
|
+ jobs = submission.jobs
|
|
|
|
|
|
# data nodes should have been written (except the input dn_0)
|
|
# data nodes should have been written (except the input dn_0)
|
|
assert scenario.dn_0.last_edit_date < submit_time
|
|
assert scenario.dn_0.last_edit_date < submit_time
|
|
@@ -74,8 +76,8 @@ def test_submit_scenario_development_mode():
|
|
assert job_1.submit_entity_id == scenario.id
|
|
assert job_1.submit_entity_id == scenario.id
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.stacktrace == []
|
|
assert job_1.stacktrace == []
|
|
- assert len(job_1._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_1._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_1._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_1._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
# t2 or t2_bis
|
|
# t2 or t2_bis
|
|
job_2 = jobs[1]
|
|
job_2 = jobs[1]
|
|
@@ -85,8 +87,8 @@ def test_submit_scenario_development_mode():
|
|
assert job_2.submit_entity_id == scenario.id
|
|
assert job_2.submit_entity_id == scenario.id
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.stacktrace == []
|
|
assert job_2.stacktrace == []
|
|
- assert len(job_2._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_2._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_2._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_2._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
# t2_bis or t2
|
|
# t2_bis or t2
|
|
job_2bis = jobs[2]
|
|
job_2bis = jobs[2]
|
|
@@ -95,8 +97,8 @@ def test_submit_scenario_development_mode():
|
|
assert not job_2bis.force
|
|
assert not job_2bis.force
|
|
assert job_2bis.submit_entity_id == scenario.id
|
|
assert job_2bis.submit_entity_id == scenario.id
|
|
assert job_2bis.creation_date == submit_time
|
|
assert job_2bis.creation_date == submit_time
|
|
- assert len(job_2bis._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_2bis._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_2bis._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_2bis._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_2bis._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2bis._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2bis.stacktrace == []
|
|
assert job_2bis.stacktrace == []
|
|
# t3
|
|
# t3
|
|
@@ -106,15 +108,14 @@ def test_submit_scenario_development_mode():
|
|
assert job_3.is_completed()
|
|
assert job_3.is_completed()
|
|
assert job_3.submit_entity_id == scenario.id
|
|
assert job_3.submit_entity_id == scenario.id
|
|
assert job_3.creation_date == submit_time
|
|
assert job_3.creation_date == submit_time
|
|
- assert len(job_3._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_3._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_3._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_3._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_3.stacktrace == []
|
|
assert job_3.stacktrace == []
|
|
|
|
|
|
assert job_1.submit_id == job_2.submit_id == job_2bis.submit_id == job_3.submit_id
|
|
assert job_1.submit_id == job_2.submit_id == job_2bis.submit_id == job_3.submit_id
|
|
|
|
|
|
# submission is created and correct
|
|
# submission is created and correct
|
|
- submission = _SubmissionManagerFactory._build_manager()._get(job_1.submit_id)
|
|
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert submission.submission_status == SubmissionStatus.COMPLETED
|
|
assert submission.submission_status == SubmissionStatus.COMPLETED
|
|
assert submission.jobs == jobs
|
|
assert submission.jobs == jobs
|
|
@@ -122,6 +123,7 @@ def test_submit_scenario_development_mode():
|
|
assert submission.entity_id == scenario.id
|
|
assert submission.entity_id == scenario.id
|
|
assert submission.entity_type == "SCENARIO"
|
|
assert submission.entity_type == "SCENARIO"
|
|
assert submission.entity_config_id == "scenario_cfg"
|
|
assert submission.entity_config_id == "scenario_cfg"
|
|
|
|
+ assert submission.properties == {"no_of_retry": 10, "log": True, "log_file": "file_path"}
|
|
|
|
|
|
# orchestrator state is correct
|
|
# orchestrator state is correct
|
|
assert len(orchestrator.blocked_jobs) == 0
|
|
assert len(orchestrator.blocked_jobs) == 0
|
|
@@ -134,7 +136,10 @@ def test_submit_scenario_development_mode_blocked_jobs():
|
|
|
|
|
|
s_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the scenario creation is before the submit time
|
|
s_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the scenario creation is before the submit time
|
|
with freezegun.freeze_time(s_time):
|
|
with freezegun.freeze_time(s_time):
|
|
- jobs = orchestrator.submit(scenario) # first task is blocked because input is not ready
|
|
|
|
|
|
+ submission = orchestrator.submit(
|
|
|
|
+ scenario, no_of_retry=10, log=True, log_file="file_path"
|
|
|
|
+ ) # first task is blocked because input is not ready
|
|
|
|
+ jobs = submission.jobs
|
|
|
|
|
|
# dn should be locked for edition
|
|
# dn should be locked for edition
|
|
assert scenario.dn_2.edit_in_progress
|
|
assert scenario.dn_2.edit_in_progress
|
|
@@ -151,8 +156,8 @@ def test_submit_scenario_development_mode_blocked_jobs():
|
|
assert job_1.submit_entity_id == scenario.id
|
|
assert job_1.submit_entity_id == scenario.id
|
|
assert job_1.creation_date == s_time
|
|
assert job_1.creation_date == s_time
|
|
assert job_1.stacktrace == []
|
|
assert job_1.stacktrace == []
|
|
- assert len(job_1._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_1._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_1._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_1._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
# t2 or t2_bis
|
|
# t2 or t2_bis
|
|
job_2 = jobs[1]
|
|
job_2 = jobs[1]
|
|
@@ -162,8 +167,8 @@ def test_submit_scenario_development_mode_blocked_jobs():
|
|
assert job_2.submit_entity_id == scenario.id
|
|
assert job_2.submit_entity_id == scenario.id
|
|
assert job_2.creation_date == s_time
|
|
assert job_2.creation_date == s_time
|
|
assert job_2.stacktrace == []
|
|
assert job_2.stacktrace == []
|
|
- assert len(job_2._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_2._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_2._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_2._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
# t2_bis or t2
|
|
# t2_bis or t2
|
|
job_2bis = jobs[2]
|
|
job_2bis = jobs[2]
|
|
@@ -172,8 +177,8 @@ def test_submit_scenario_development_mode_blocked_jobs():
|
|
assert job_2bis.submit_entity_id == scenario.id
|
|
assert job_2bis.submit_entity_id == scenario.id
|
|
assert not job_2bis.force
|
|
assert not job_2bis.force
|
|
assert job_2bis.creation_date == s_time
|
|
assert job_2bis.creation_date == s_time
|
|
- assert len(job_2bis._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_2bis._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_2bis._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_2bis._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_2bis._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2bis._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2bis.stacktrace == []
|
|
assert job_2bis.stacktrace == []
|
|
# t3
|
|
# t3
|
|
@@ -184,8 +189,8 @@ def test_submit_scenario_development_mode_blocked_jobs():
|
|
assert job_3.submit_entity_id == scenario.id
|
|
assert job_3.submit_entity_id == scenario.id
|
|
assert job_3.creation_date == s_time
|
|
assert job_3.creation_date == s_time
|
|
assert job_3.stacktrace == []
|
|
assert job_3.stacktrace == []
|
|
- assert len(job_3._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_3._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_3._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_3._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
|
|
|
|
# Same submit_id
|
|
# Same submit_id
|
|
@@ -193,13 +198,13 @@ def test_submit_scenario_development_mode_blocked_jobs():
|
|
|
|
|
|
# submission is created and correct
|
|
# submission is created and correct
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
- submission = _SubmissionManagerFactory._build_manager()._get(job_1.submit_id)
|
|
|
|
assert submission.submission_status == SubmissionStatus.BLOCKED
|
|
assert submission.submission_status == SubmissionStatus.BLOCKED
|
|
assert submission.jobs == jobs
|
|
assert submission.jobs == jobs
|
|
assert submission.creation_date == s_time
|
|
assert submission.creation_date == s_time
|
|
assert submission.entity_id == scenario.id
|
|
assert submission.entity_id == scenario.id
|
|
assert submission.entity_type == "SCENARIO"
|
|
assert submission.entity_type == "SCENARIO"
|
|
assert submission.entity_config_id == "scenario_cfg"
|
|
assert submission.entity_config_id == "scenario_cfg"
|
|
|
|
+ assert submission.properties == {"no_of_retry": 10, "log": True, "log_file": "file_path"}
|
|
|
|
|
|
# orchestrator state is correct
|
|
# orchestrator state is correct
|
|
assert len(orchestrator.blocked_jobs) == 4
|
|
assert len(orchestrator.blocked_jobs) == 4
|
|
@@ -214,7 +219,10 @@ def test_submit_scenario_standalone_mode():
|
|
sc.dn_0.write(0) # input data is made ready
|
|
sc.dn_0.write(0) # input data is made ready
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
with freezegun.freeze_time(submit_time):
|
|
with freezegun.freeze_time(submit_time):
|
|
- jobs = orchestrator.submit(sc) # No dispatcher running. sc is not executed.
|
|
|
|
|
|
+ submission = orchestrator.submit(
|
|
|
|
+ sc, no_of_retry=10, log=True, log_file="file_path"
|
|
|
|
+ ) # No dispatcher running. sc is not executed.
|
|
|
|
+ jobs = submission.jobs
|
|
|
|
|
|
# task output should be locked for edition
|
|
# task output should be locked for edition
|
|
assert sc.dn_1.edit_in_progress
|
|
assert sc.dn_1.edit_in_progress
|
|
@@ -230,8 +238,8 @@ def test_submit_scenario_standalone_mode():
|
|
assert job_1.is_pending()
|
|
assert job_1.is_pending()
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.submit_entity_id == sc.id
|
|
assert job_1.submit_entity_id == sc.id
|
|
- assert len(job_1._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_1._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_1._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_1._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_1.stacktrace == []
|
|
assert job_1.stacktrace == []
|
|
# t2 or t2_bis
|
|
# t2 or t2_bis
|
|
@@ -242,18 +250,18 @@ def test_submit_scenario_standalone_mode():
|
|
assert job_2.submit_entity_id == sc.id
|
|
assert job_2.submit_entity_id == sc.id
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.stacktrace == []
|
|
assert job_2.stacktrace == []
|
|
- assert len(job_2._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
|
|
+ assert len(job_2._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
- assert job_2._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert job_2._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
# t2_bis or t2
|
|
# t2_bis or t2
|
|
job_2bis = jobs[2]
|
|
job_2bis = jobs[2]
|
|
assert job_2bis.task == sc.t_2bis or job_2bis.task == sc.t_2
|
|
assert job_2bis.task == sc.t_2bis or job_2bis.task == sc.t_2
|
|
assert job_2bis.is_blocked()
|
|
assert job_2bis.is_blocked()
|
|
assert not job_2bis.force
|
|
assert not job_2bis.force
|
|
assert job_2bis.submit_entity_id == sc.id
|
|
assert job_2bis.submit_entity_id == sc.id
|
|
- assert len(job_2bis._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
|
|
+ assert len(job_2bis._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
assert job_2bis._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2bis._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
- assert job_2bis._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert job_2bis._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_2bis.creation_date == submit_time
|
|
assert job_2bis.creation_date == submit_time
|
|
assert job_2bis.stacktrace == []
|
|
assert job_2bis.stacktrace == []
|
|
# t3
|
|
# t3
|
|
@@ -262,16 +270,15 @@ def test_submit_scenario_standalone_mode():
|
|
assert not job_3.force
|
|
assert not job_3.force
|
|
assert job_3.is_blocked()
|
|
assert job_3.is_blocked()
|
|
assert job_3.submit_entity_id == sc.id
|
|
assert job_3.submit_entity_id == sc.id
|
|
- assert len(job_3._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
|
|
+ assert len(job_3._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
- assert job_3._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert job_3._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_3.creation_date == submit_time
|
|
assert job_3.creation_date == submit_time
|
|
assert job_3.stacktrace == []
|
|
assert job_3.stacktrace == []
|
|
|
|
|
|
assert job_1.submit_id == job_2.submit_id == job_2bis.submit_id == job_3.submit_id
|
|
assert job_1.submit_id == job_2.submit_id == job_2bis.submit_id == job_3.submit_id
|
|
|
|
|
|
# submission is created and correct
|
|
# submission is created and correct
|
|
- submission = _SubmissionManagerFactory._build_manager()._get(job_1.submit_id)
|
|
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert submission.submission_status == SubmissionStatus.PENDING
|
|
assert submission.submission_status == SubmissionStatus.PENDING
|
|
assert submission.jobs == jobs
|
|
assert submission.jobs == jobs
|
|
@@ -279,6 +286,7 @@ def test_submit_scenario_standalone_mode():
|
|
assert submission.entity_id == sc.id
|
|
assert submission.entity_id == sc.id
|
|
assert submission.entity_type == "SCENARIO"
|
|
assert submission.entity_type == "SCENARIO"
|
|
assert submission.entity_config_id == "scenario_cfg"
|
|
assert submission.entity_config_id == "scenario_cfg"
|
|
|
|
+ assert submission.properties == {"no_of_retry": 10, "log": True, "log_file": "file_path"}
|
|
|
|
|
|
# orchestrator state is correct
|
|
# orchestrator state is correct
|
|
assert len(orchestrator.blocked_jobs) == 3
|
|
assert len(orchestrator.blocked_jobs) == 3
|
|
@@ -291,21 +299,22 @@ def test_submit_scenario_with_callbacks_and_force_and_wait():
|
|
orchestrator = _OrchestratorFactory._build_orchestrator()
|
|
orchestrator = _OrchestratorFactory._build_orchestrator()
|
|
|
|
|
|
with mock.patch("taipy.core._orchestrator._orchestrator._Orchestrator._wait_until_job_finished") as mck:
|
|
with mock.patch("taipy.core._orchestrator._orchestrator._Orchestrator._wait_until_job_finished") as mck:
|
|
- jobs = orchestrator.submit(scenario, callbacks=[nothing], force=True, wait=True, timeout=5)
|
|
|
|
|
|
+ submission = orchestrator.submit(scenario, callbacks=[nothing], force=True, wait=True, timeout=5)
|
|
|
|
+ jobs = submission.jobs
|
|
|
|
|
|
# jobs are created in a specific order and are correct
|
|
# jobs are created in a specific order and are correct
|
|
assert len(jobs) == 4
|
|
assert len(jobs) == 4
|
|
assert len(jobs[0]._subscribers) == 3 # nothing, _update_submission_status, and _on_status_change
|
|
assert len(jobs[0]._subscribers) == 3 # nothing, _update_submission_status, and _on_status_change
|
|
assert jobs[0]._subscribers[0].__code__ == nothing.__code__
|
|
assert jobs[0]._subscribers[0].__code__ == nothing.__code__
|
|
- assert jobs[0]._subscribers[1].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert jobs[0]._subscribers[1].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert jobs[0]._subscribers[2].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert jobs[0]._subscribers[2].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert len(jobs[1]._subscribers) == 3 # nothing, _update_submission_status, and _on_status_change
|
|
assert len(jobs[1]._subscribers) == 3 # nothing, _update_submission_status, and _on_status_change
|
|
assert jobs[1]._subscribers[0].__code__ == nothing.__code__
|
|
assert jobs[1]._subscribers[0].__code__ == nothing.__code__
|
|
- assert jobs[1]._subscribers[1].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert jobs[1]._subscribers[1].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert jobs[1]._subscribers[2].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert jobs[1]._subscribers[2].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert len(jobs[2]._subscribers) == 3 # nothing, _update_submission_status, and _on_status_change
|
|
assert len(jobs[2]._subscribers) == 3 # nothing, _update_submission_status, and _on_status_change
|
|
assert jobs[2]._subscribers[0].__code__ == nothing.__code__
|
|
assert jobs[2]._subscribers[0].__code__ == nothing.__code__
|
|
- assert jobs[2]._subscribers[1].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert jobs[2]._subscribers[1].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert jobs[2]._subscribers[2].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert jobs[2]._subscribers[2].__code__ == _Orchestrator._on_status_change.__code__
|
|
mck.assert_called_once_with(jobs, timeout=5)
|
|
mck.assert_called_once_with(jobs, timeout=5)
|
|
|
|
|
|
@@ -320,7 +329,10 @@ def test_submit_sequence_development_mode():
|
|
|
|
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
with freezegun.freeze_time(submit_time):
|
|
with freezegun.freeze_time(submit_time):
|
|
- jobs = orchestrator.submit(seq) # sequence is executed directly in development mode
|
|
|
|
|
|
+ submission = orchestrator.submit(
|
|
|
|
+ seq, no_of_retry=10, log=True, log_file="file_path"
|
|
|
|
+ ) # sequence is executed directly in development mode
|
|
|
|
+ jobs = submission.jobs
|
|
|
|
|
|
# data nodes should have been written (except the input dn_0)
|
|
# data nodes should have been written (except the input dn_0)
|
|
assert sce.dn_0.last_edit_date < submit_time
|
|
assert sce.dn_0.last_edit_date < submit_time
|
|
@@ -336,8 +348,8 @@ def test_submit_sequence_development_mode():
|
|
assert job_1.submit_entity_id == seq.id
|
|
assert job_1.submit_entity_id == seq.id
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.stacktrace == []
|
|
assert job_1.stacktrace == []
|
|
- assert len(job_1._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_1._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_1._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_1._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_1._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
# t2
|
|
# t2
|
|
job_2 = jobs[1]
|
|
job_2 = jobs[1]
|
|
@@ -347,8 +359,8 @@ def test_submit_sequence_development_mode():
|
|
assert job_2.submit_entity_id == seq.id
|
|
assert job_2.submit_entity_id == seq.id
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.stacktrace == []
|
|
assert job_2.stacktrace == []
|
|
- assert len(job_2._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_2._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_2._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_2._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_2._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
# t3
|
|
# t3
|
|
job_3 = jobs[2]
|
|
job_3 = jobs[2]
|
|
@@ -356,8 +368,8 @@ def test_submit_sequence_development_mode():
|
|
assert not job_3.force
|
|
assert not job_3.force
|
|
assert job_3.is_completed()
|
|
assert job_3.is_completed()
|
|
assert job_3.submit_entity_id == seq.id
|
|
assert job_3.submit_entity_id == seq.id
|
|
- assert len(job_3._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
- assert job_3._subscribers[0].__code__ == Submission._update_submission_status.__code__
|
|
|
|
|
|
+ assert len(job_3._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
|
|
+ assert job_3._subscribers[0].__code__ == _Orchestrator._update_submission_status.__code__
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_3._subscribers[1].__code__ == _Orchestrator._on_status_change.__code__
|
|
assert job_3.creation_date == submit_time
|
|
assert job_3.creation_date == submit_time
|
|
assert job_3.stacktrace == []
|
|
assert job_3.stacktrace == []
|
|
@@ -365,8 +377,6 @@ def test_submit_sequence_development_mode():
|
|
assert job_1.submit_id == job_2.submit_id == job_3.submit_id
|
|
assert job_1.submit_id == job_2.submit_id == job_3.submit_id
|
|
|
|
|
|
# submission is created and correct
|
|
# submission is created and correct
|
|
- submit_id = job_2.submit_id
|
|
|
|
- submission = _SubmissionManagerFactory._build_manager()._get(submit_id)
|
|
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert submission.entity_type == "SEQUENCE"
|
|
assert submission.entity_type == "SEQUENCE"
|
|
assert submission.submission_status == SubmissionStatus.COMPLETED
|
|
assert submission.submission_status == SubmissionStatus.COMPLETED
|
|
@@ -374,6 +384,7 @@ def test_submit_sequence_development_mode():
|
|
assert submission.jobs == jobs
|
|
assert submission.jobs == jobs
|
|
assert submission.creation_date == submit_time
|
|
assert submission.creation_date == submit_time
|
|
assert submission.entity_id == seq.id
|
|
assert submission.entity_id == seq.id
|
|
|
|
+ assert submission.properties == {"no_of_retry": 10, "log": True, "log_file": "file_path"}
|
|
|
|
|
|
# orchestrator state is correct
|
|
# orchestrator state is correct
|
|
assert len(orchestrator.blocked_jobs) == 0
|
|
assert len(orchestrator.blocked_jobs) == 0
|
|
@@ -392,7 +403,10 @@ def test_submit_sequence_standalone_mode():
|
|
|
|
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
submit_time = datetime.now() + timedelta(seconds=1) # +1 to ensure the edit time of dn_0 is before the submit time
|
|
with freezegun.freeze_time(submit_time):
|
|
with freezegun.freeze_time(submit_time):
|
|
- jobs = orchestrator.submit(sequence) # sequence is executed directly in development mode
|
|
|
|
|
|
+ submission = orchestrator.submit(
|
|
|
|
+ sequence, no_of_retry=10, log=True, log_file="file_path"
|
|
|
|
+ ) # sequence is executed directly in development mode
|
|
|
|
+ jobs = submission.jobs
|
|
|
|
|
|
assert scenario.dn_1.edit_in_progress
|
|
assert scenario.dn_1.edit_in_progress
|
|
assert scenario.dn_2.edit_in_progress
|
|
assert scenario.dn_2.edit_in_progress
|
|
@@ -408,7 +422,7 @@ def test_submit_sequence_standalone_mode():
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.creation_date == submit_time
|
|
assert job_1.submit_entity_id == sequence.id
|
|
assert job_1.submit_entity_id == sequence.id
|
|
assert job_1.stacktrace == []
|
|
assert job_1.stacktrace == []
|
|
- assert len(job_1._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
|
|
+ assert len(job_1._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
# t2
|
|
# t2
|
|
job_2 = jobs[1]
|
|
job_2 = jobs[1]
|
|
assert job_2.task == scenario.t_2
|
|
assert job_2.task == scenario.t_2
|
|
@@ -417,7 +431,7 @@ def test_submit_sequence_standalone_mode():
|
|
assert job_2.submit_entity_id == sequence.id
|
|
assert job_2.submit_entity_id == sequence.id
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.creation_date == submit_time
|
|
assert job_2.stacktrace == []
|
|
assert job_2.stacktrace == []
|
|
- assert len(job_2._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
|
|
+ assert len(job_2._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
# t3
|
|
# t3
|
|
job_3 = jobs[2]
|
|
job_3 = jobs[2]
|
|
assert job_3.task == scenario.t_3
|
|
assert job_3.task == scenario.t_3
|
|
@@ -425,14 +439,12 @@ def test_submit_sequence_standalone_mode():
|
|
assert job_3.is_blocked()
|
|
assert job_3.is_blocked()
|
|
assert job_3.creation_date == submit_time
|
|
assert job_3.creation_date == submit_time
|
|
assert job_3.submit_entity_id == sequence.id
|
|
assert job_3.submit_entity_id == sequence.id
|
|
- assert len(job_3._subscribers) == 2 # submission._update_submission_status and orchestrator._on_status_change
|
|
|
|
|
|
+ assert len(job_3._subscribers) == 2 # _Orchestrator._update_submission_status and orchestrator._on_status_change
|
|
assert job_3.stacktrace == []
|
|
assert job_3.stacktrace == []
|
|
|
|
|
|
assert job_1.submit_id == job_2.submit_id == job_3.submit_id
|
|
assert job_1.submit_id == job_2.submit_id == job_3.submit_id
|
|
|
|
|
|
# submission is created and correct
|
|
# submission is created and correct
|
|
- submit_id = job_2.submit_id
|
|
|
|
- submission = _SubmissionManagerFactory._build_manager()._get(submit_id)
|
|
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert len(_SubmissionManagerFactory._build_manager()._get_all()) == 1
|
|
assert submission.submission_status == SubmissionStatus.PENDING
|
|
assert submission.submission_status == SubmissionStatus.PENDING
|
|
assert submission.entity_type == "SEQUENCE"
|
|
assert submission.entity_type == "SEQUENCE"
|
|
@@ -440,6 +452,7 @@ def test_submit_sequence_standalone_mode():
|
|
assert submission.jobs == jobs
|
|
assert submission.jobs == jobs
|
|
assert submission.creation_date == submit_time
|
|
assert submission.creation_date == submit_time
|
|
assert submission.entity_id == sequence.id
|
|
assert submission.entity_id == sequence.id
|
|
|
|
+ assert submission.properties == {"no_of_retry": 10, "log": True, "log_file": "file_path"}
|
|
|
|
|
|
# orchestrator state is correct
|
|
# orchestrator state is correct
|
|
assert len(orchestrator.blocked_jobs) == 2
|
|
assert len(orchestrator.blocked_jobs) == 2
|
|
@@ -453,7 +466,7 @@ def test_submit_sequence_with_callbacks_and_force_and_wait():
|
|
orchestrator = _OrchestratorFactory._build_orchestrator()
|
|
orchestrator = _OrchestratorFactory._build_orchestrator()
|
|
|
|
|
|
with mock.patch("taipy.core._orchestrator._orchestrator._Orchestrator._wait_until_job_finished") as mck:
|
|
with mock.patch("taipy.core._orchestrator._orchestrator._Orchestrator._wait_until_job_finished") as mck:
|
|
- jobs = orchestrator.submit(scenario, callbacks=[nothing], force=True, wait=True, timeout=5)
|
|
|
|
|
|
+ jobs = orchestrator.submit(scenario, callbacks=[nothing], force=True, wait=True, timeout=5).jobs
|
|
mck.assert_called_once_with(jobs, timeout=5)
|
|
mck.assert_called_once_with(jobs, timeout=5)
|
|
|
|
|
|
# jobs are created in a specific order and are correct
|
|
# jobs are created in a specific order and are correct
|
|
@@ -477,8 +490,8 @@ def test_submit_submittable_generate_unique_submit_id():
|
|
scenario = Scenario("scenario", {task_1, task_2}, {})
|
|
scenario = Scenario("scenario", {task_1, task_2}, {})
|
|
_ScenarioManager._set(scenario)
|
|
_ScenarioManager._set(scenario)
|
|
|
|
|
|
- jobs_1 = taipy.submit(scenario)
|
|
|
|
- jobs_2 = taipy.submit(scenario)
|
|
|
|
|
|
+ jobs_1 = taipy.submit(scenario).jobs
|
|
|
|
+ jobs_2 = taipy.submit(scenario).jobs
|
|
assert len(jobs_1) == 2
|
|
assert len(jobs_1) == 2
|
|
assert len(jobs_2) == 2
|
|
assert len(jobs_2) == 2
|
|
assert jobs_1[0].submit_id == jobs_1[1].submit_id
|
|
assert jobs_1[0].submit_id == jobs_1[1].submit_id
|