|
@@ -14,6 +14,7 @@ from taipy import ScenarioId, SequenceId, TaskId
|
|
|
from taipy.config.common.frequency import Frequency
|
|
|
from taipy.config.config import Config
|
|
|
from taipy.core._entity._ready_to_run_property import _ReadyToRunProperty
|
|
|
+from taipy.core.common.reason import Reason
|
|
|
from taipy.core.scenario._scenario_manager_factory import _ScenarioManagerFactory
|
|
|
from taipy.core.sequence._sequence_manager_factory import _SequenceManagerFactory
|
|
|
from taipy.core.task._task_manager_factory import _TaskManagerFactory
|
|
@@ -32,6 +33,7 @@ def test_scenario_without_input_is_ready_to_run():
|
|
|
scenario = scenario_manager._create(scenario_config)
|
|
|
|
|
|
assert scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
assert scenario.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
|
|
|
|
|
@@ -44,6 +46,7 @@ def test_scenario_submittable_with_inputs_is_ready_to_run():
|
|
|
scenario = scenario_manager._create(scenario_config)
|
|
|
|
|
|
assert scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
assert scenario.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
|
|
|
|
|
@@ -58,7 +61,7 @@ def test_scenario_submittable_even_with_output_not_ready_to_run():
|
|
|
dn_3 = scenario.dn_3
|
|
|
|
|
|
assert not dn_3.is_ready_for_reading
|
|
|
- assert scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
assert scenario.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
|
|
|
|
|
@@ -75,6 +78,7 @@ def test_scenario_not_submittable_not_in_property_because_it_is_lazy():
|
|
|
assert dn_1.is_ready_for_reading
|
|
|
assert not dn_2.is_ready_for_reading
|
|
|
assert not scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
|
|
|
# Since it is a lazy property, the scenario and the datanodes is not yet in the dictionary
|
|
|
assert scenario.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
@@ -93,14 +97,16 @@ def test_scenario_not_submittable_if_one_input_edit_in_progress():
|
|
|
|
|
|
assert not dn_1.is_ready_for_reading
|
|
|
assert not scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
|
|
|
assert scenario.id in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
- assert dn_1.id in _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons
|
|
|
+ assert dn_1.id in _ReadyToRunProperty._submittable_id_datanodes[scenario.id]._reasons
|
|
|
assert dn_1.id in _ReadyToRunProperty._datanode_id_submittables
|
|
|
assert scenario.id in _ReadyToRunProperty._datanode_id_submittables[dn_1.id]
|
|
|
- assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons[dn_1.id] == {
|
|
|
+ assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id]._reasons[dn_1.id] == {
|
|
|
f"DataNode {dn_1.id} is being edited"
|
|
|
}
|
|
|
+ assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons == f"DataNode {dn_1.id} is being edited."
|
|
|
|
|
|
|
|
|
def test_scenario_not_submittable_for_multiple_reasons():
|
|
@@ -119,21 +125,25 @@ def test_scenario_not_submittable_for_multiple_reasons():
|
|
|
assert not dn_1.is_ready_for_reading
|
|
|
assert not dn_2.is_ready_for_reading
|
|
|
assert not scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
|
|
|
assert scenario.id in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
- assert dn_1.id in _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons
|
|
|
- assert dn_2.id in _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons
|
|
|
+ assert dn_1.id in _ReadyToRunProperty._submittable_id_datanodes[scenario.id]._reasons
|
|
|
+ assert dn_2.id in _ReadyToRunProperty._submittable_id_datanodes[scenario.id]._reasons
|
|
|
assert dn_1.id in _ReadyToRunProperty._datanode_id_submittables
|
|
|
assert dn_2.id in _ReadyToRunProperty._datanode_id_submittables
|
|
|
assert scenario.id in _ReadyToRunProperty._datanode_id_submittables[dn_1.id]
|
|
|
- assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons[dn_1.id] == {
|
|
|
+ assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id]._reasons[dn_1.id] == {
|
|
|
f"DataNode {dn_1.id} is being edited"
|
|
|
}
|
|
|
assert scenario.id in _ReadyToRunProperty._datanode_id_submittables[dn_2.id]
|
|
|
- assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons[dn_2.id] == {
|
|
|
+ assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id]._reasons[dn_2.id] == {
|
|
|
f"DataNode {dn_2.id} is being edited",
|
|
|
f"DataNode {dn_2.id} is not written",
|
|
|
}
|
|
|
+ reason_str = _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons
|
|
|
+ assert f"DataNode {dn_2.id} is being edited" in reason_str
|
|
|
+ assert f"DataNode {dn_2.id} is not written" in reason_str
|
|
|
|
|
|
|
|
|
def test_writing_input_remove_reasons():
|
|
@@ -146,17 +156,22 @@ def test_writing_input_remove_reasons():
|
|
|
|
|
|
assert not dn_1.is_ready_for_reading
|
|
|
assert not scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
# Since it is a lazy property, the scenario is not yet in the dictionary
|
|
|
assert scenario.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
|
|
|
dn_1.lock_edit()
|
|
|
- assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons[dn_1.id] == {
|
|
|
+ assert _ReadyToRunProperty._submittable_id_datanodes[scenario.id]._reasons[dn_1.id] == {
|
|
|
f"DataNode {dn_1.id} is being edited",
|
|
|
f"DataNode {dn_1.id} is not written",
|
|
|
}
|
|
|
+ reason_str = _ReadyToRunProperty._submittable_id_datanodes[scenario.id].reasons
|
|
|
+ assert f"DataNode {dn_1.id} is being edited" in reason_str
|
|
|
+ assert f"DataNode {dn_1.id} is not written" in reason_str
|
|
|
|
|
|
dn_1.write(10)
|
|
|
assert scenario_manager._is_submittable(scenario)
|
|
|
+ assert isinstance(scenario_manager._is_submittable(scenario), Reason)
|
|
|
assert scenario.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
assert dn_1.id not in _ReadyToRunProperty._datanode_id_submittables
|
|
|
|
|
@@ -165,20 +180,25 @@ def identity(arg):
|
|
|
return arg
|
|
|
|
|
|
|
|
|
-def __assert_not_submittable_becomes_submittable_when_dn_edited(sequence, manager, dn):
|
|
|
+def __assert_not_submittable_becomes_submittable_when_dn_edited(entity, manager, dn):
|
|
|
assert not dn.is_ready_for_reading
|
|
|
- assert not manager._is_submittable(sequence)
|
|
|
+ assert not manager._is_submittable(entity)
|
|
|
# Since it is a lazy property, the sequence is not yet in the dictionary
|
|
|
- assert sequence.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
+ assert entity.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
|
|
|
dn.lock_edit()
|
|
|
- assert _ReadyToRunProperty._submittable_id_datanodes[sequence.id].reasons[dn.id] == {
|
|
|
+ assert _ReadyToRunProperty._submittable_id_datanodes[entity.id]._reasons[dn.id] == {
|
|
|
f"DataNode {dn.id} is being edited",
|
|
|
f"DataNode {dn.id} is not written",
|
|
|
}
|
|
|
+ reason_str = _ReadyToRunProperty._submittable_id_datanodes[entity.id].reasons
|
|
|
+ assert f"DataNode {dn.id} is being edited" in reason_str
|
|
|
+ assert f"DataNode {dn.id} is not written" in reason_str
|
|
|
+
|
|
|
dn.write("ANY VALUE")
|
|
|
- assert manager._is_submittable(sequence)
|
|
|
- assert sequence.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
+ assert manager._is_submittable(entity)
|
|
|
+ assert isinstance(manager._is_submittable(entity), Reason)
|
|
|
+ assert entity.id not in _ReadyToRunProperty._submittable_id_datanodes
|
|
|
assert dn.id not in _ReadyToRunProperty._datanode_id_submittables
|
|
|
|
|
|
|