test_submittable_status_cache.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Copyright 2021-2024 Avaiga Private Limited
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  4. # the License. You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  9. # an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  10. # specific language governing permissions and limitations under the License.
  11. from datetime import datetime
  12. from taipy.config import Config, Frequency
  13. from taipy.core.notification._ready_to_run_cache import _ReadyToRunCache
  14. from taipy.core.scenario._scenario_manager_factory import _ScenarioManagerFactory
  15. def test_get_reason_submittable_is_not_ready_to_submit():
  16. scenario_manager = _ScenarioManagerFactory._build_manager()
  17. assert len(scenario_manager._get_all()) == 0
  18. dn_config_1 = Config.configure_pickle_data_node("dn_1", default_data=10)
  19. dn_config_2 = Config.configure_pickle_data_node("dn_2", default_data=15)
  20. task_config = Config.configure_task("task", print, [dn_config_1, dn_config_2])
  21. scenario_config = Config.configure_scenario("sc", {task_config}, set(), Frequency.DAILY)
  22. scenario = scenario_manager._create(scenario_config)
  23. dn_1 = scenario.dn_1
  24. dn_2 = scenario.dn_2
  25. dn_2.edit_in_progress = True
  26. assert not scenario.is_ready_to_run()
  27. assert not scenario_manager._is_submittable(scenario)
  28. assert (
  29. _ReadyToRunCache.get_reason_submittable_is_not_ready_to_submit(scenario.id)
  30. == f"DataNode {dn_2.id} is being edited."
  31. )
  32. dn_1.last_edit_date = None
  33. assert not scenario.is_ready_to_run()
  34. assert not scenario_manager._is_submittable(scenario)
  35. assert (
  36. _ReadyToRunCache.get_reason_submittable_is_not_ready_to_submit(scenario.id)
  37. == f"DataNode {dn_2.id} is being edited; DataNode {dn_1.id} is not written."
  38. )
  39. dn_2.edit_in_progress = False
  40. assert not scenario.is_ready_to_run()
  41. assert not scenario_manager._is_submittable(scenario)
  42. assert (
  43. _ReadyToRunCache.get_reason_submittable_is_not_ready_to_submit(scenario.id)
  44. == f"DataNode {dn_1.id} is not written."
  45. )
  46. dn_1.last_edit_date = datetime.now()
  47. assert scenario.is_ready_to_run()
  48. assert scenario_manager._is_submittable(scenario)
  49. assert _ReadyToRunCache.get_reason_submittable_is_not_ready_to_submit(scenario.id) == ""