From 97af2cb50546bd55721ad205be08c6d9dfc48565 Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski Date: Thu, 13 Aug 2026 08:29:28 +0100 Subject: [PATCH 1/2] Changing reqs based on clarification --- docs/features/lifecycle/glossary.rst | 13 +++++ .../docs/requirements/requirements.rst | 57 ++++++------------- .../src/configuration/component_config.hpp | 2 + .../src/daemon/src/configuration/config.hpp | 2 + .../details/transition.hpp | 1 + 5 files changed, 35 insertions(+), 40 deletions(-) diff --git a/docs/features/lifecycle/glossary.rst b/docs/features/lifecycle/glossary.rst index f0075d78b0..68f3d2871a 100644 --- a/docs/features/lifecycle/glossary.rst +++ b/docs/features/lifecycle/glossary.rst @@ -60,6 +60,19 @@ Glossary Component A configurable unit in the Launch Manager that describes an executable and its runtime environment (sandbox). Components can be grouped together in Run Targets to define system operational states. + Ready State + A state when the component is ready to provide services to other components. + + Dependency (between components) + A configuration parameter indicating that **Component A** can only start + after **Component B** has reached its :term:`Ready State`. In this case, + **Component A** depends on **Component B**. + + Dependency (between run targets) + A configuration parameter indicating that **Run Target A** includes all + components from **Run Target B**. In this case, **Run Target A** depends + on **Run Target B**. + Lifecycle Component Node of the dependency tree. diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index f345e8ff73..870fc9986e 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -268,8 +268,8 @@ Launching Processes Conditional Launching ===================== -.. comp_req:: Conditionally launch of processes - :id: comp_req__launch_man__cond_process_start +.. comp_req:: Configuration of component readiness conditions + :id: comp_req__launch_man__conf_of_comp_ready_cond :reqtype: Functional :security: NO :safety: ASIL_B @@ -278,12 +278,12 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall provide support to conditionally start a process - or process group based on the return value of a single or multiple :term:`Processes ` - executed before. + The :term:`Launch Manager` shall support configuration of conditions that + shall be met before the component is considered to have reached its + :term:`Ready State`. -.. comp_req:: Condition timeout - :id: comp_req__launch_man__total_wait_time_support +.. comp_req:: Dependency based startup order + :id: comp_req__launch_man__dep_based_startup_order :reqtype: Functional :security: NO :safety: ASIL_B @@ -292,11 +292,11 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall provide support for per condition configurable - total wait time for launch conditions to be satisfied. + The :term:`Launch Manager` shall start a component only after all its + :term:`dependencies ` have successfully reached their :term:`Ready State`. -.. comp_req:: Conditional launch polling interval - :id: comp_req__launch_man__polling_interval +.. comp_req:: Configuration of run target activation timeout + :id: comp_req__launch_man__conf_rt_active_timeout :reqtype: Functional :security: NO :safety: ASIL_B @@ -305,11 +305,11 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall provide support for per condition configurable - :term:`Polling Interval` for launch conditions to be checked. + The :term:`Launch Manager` shall support configuration of the maximum time + an activation of a run target can take. -.. comp_req:: Pre-start validation - :id: comp_req__launch_man__validate_conditions +.. comp_req:: Run target activation timeout + :id: comp_req__launch_man__rt_activate_timeout :reqtype: Functional :security: NO :safety: ASIL_B @@ -318,19 +318,8 @@ Conditional Launching :version: 1 :satisfied_by: comp__lifecycle_launch_manager - The :term:`Launch Manager` shall be able to validate the pre-start conditions of the executable using the conditions. - -.. comp_req:: post-start validation - :id: comp_req__launch_man__validation_conditions - :reqtype: Functional - :security: NO - :safety: ASIL_B - :derived_from: feat_req__lifecycle__conditional_startup[version==1] - :status: valid - :version: 1 - :satisfied_by: comp__lifecycle_launch_manager - - The :term:`Launch Manager` shall be able to validate the start of the executable using the conditions. + If the activation of a run target exceeds the maximum configured time, then + the :term:`Launch Manager` shall consider this activation as failed. .. comp_req:: Launched Process status :id: comp_req__launch_man__launcher_status_storage @@ -380,18 +369,6 @@ Conditional Launching The :term:`Launch Manager` shall provide a method for condition check for a path. -.. comp_req:: Condition check based on ENV - :id: comp_req__launch_man__env_variable_cond_check - :reqtype: Functional - :security: NO - :safety: ASIL_B - :derived_from: feat_req__lifecycle__conditional_startup[version==1] - :status: valid - :version: 1 - :satisfied_by: comp__lifecycle_launch_manager - - The :term:`Launch Manager` shall provide a method for condition check for environment variable. - .. comp_req:: Condition check based on all dependency :id: comp_req__launch_man__dependency_check :reqtype: Functional diff --git a/score/launch_manager/src/daemon/src/configuration/component_config.hpp b/score/launch_manager/src/daemon/src/configuration/component_config.hpp index ab17ef8726..1600b3ee0c 100644 --- a/score/launch_manager/src/daemon/src/configuration/component_config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/component_config.hpp @@ -77,6 +77,8 @@ struct ComponentProperties ApplicationProfile application_profile; std::vector depends_on; std::vector process_arguments; + + // req-Id: comp_req__launch_man__conf_of_comp_ready_cond ReadyCondition ready_condition; }; struct Sandbox diff --git a/score/launch_manager/src/daemon/src/configuration/config.hpp b/score/launch_manager/src/daemon/src/configuration/config.hpp index 3444b9b784..bd7790630f 100644 --- a/score/launch_manager/src/daemon/src/configuration/config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/config.hpp @@ -33,6 +33,8 @@ struct RunTargetConfig std::string name; std::string description; std::vector depends_on; + + // req-Id: comp_req__launch_man__conf_rt_active_timeout std::uint32_t transition_timeout_ms{}; SwitchRunTargetAction recovery_action; }; diff --git a/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp b/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp index 28d6e3b29b..9e6bd31055 100644 --- a/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp +++ b/score/launch_manager/src/daemon/src/process_group_manager/details/transition.hpp @@ -251,6 +251,7 @@ class Transition /// aborted transition are captured too). Then moves to the Starting Phase to bring up @p target. void setupTransition(Key target) { + // req-Id: comp_req__launch_man__dep_based_startup_order // Sets up or resets our stored info for this transition for (const auto& [key, value] : graph_) { From 1c4ce77d0e76a094b42c6558b8f52dd395715063 Mon Sep 17 00:00:00 2001 From: Maciej Kaszynski Date: Fri, 18 Sep 2026 09:25:41 +0100 Subject: [PATCH 2/2] Adding more reqs --- .../docs/requirements/requirements.rst | 32 +++++++++++++++++-- .../src/configuration/component_config.hpp | 1 + .../src/daemon/src/configuration/config.hpp | 2 +- .../crash_on_startup/crash_on_startup.py | 1 + .../process_simple_rep_failure.py | 6 ++-- .../switch_run_target/switch_run_target.py | 9 ++++-- 6 files changed, 42 insertions(+), 9 deletions(-) diff --git a/score/launch_manager/docs/requirements/requirements.rst b/score/launch_manager/docs/requirements/requirements.rst index 870fc9986e..cba18e566d 100644 --- a/score/launch_manager/docs/requirements/requirements.rst +++ b/score/launch_manager/docs/requirements/requirements.rst @@ -296,7 +296,7 @@ Conditional Launching :term:`dependencies ` have successfully reached their :term:`Ready State`. .. comp_req:: Configuration of run target activation timeout - :id: comp_req__launch_man__conf_rt_active_timeout + :id: comp_req__launch_man__conf_rt_active_tout :reqtype: Functional :security: NO :safety: ASIL_B @@ -309,7 +309,7 @@ Conditional Launching an activation of a run target can take. .. comp_req:: Run target activation timeout - :id: comp_req__launch_man__rt_activate_timeout + :id: comp_req__launch_man__rt_activate_tout :reqtype: Functional :security: NO :safety: ASIL_B @@ -321,6 +321,34 @@ Conditional Launching If the activation of a run target exceeds the maximum configured time, then the :term:`Launch Manager` shall consider this activation as failed. +.. comp_req:: Configuration of component activation timeout + :id: comp_req__launch_man__conf_comp_active_tout + :reqtype: Functional + :security: NO + :safety: ASIL_B + :derived_from: feat_req__lifecycle__conditional_startup[version==1] + :status: valid + :version: 1 + :satisfied_by: comp__lifecycle_launch_manager + + The :term:Launch Manager shall support configuring a timeout value that + defines the maximum time allowed for a component to reach its + :term:`Ready State`. + +.. comp_req:: Component activation timeout + :id: comp_req__launch_man__comp_activate_tout + :reqtype: Functional + :security: NO + :safety: ASIL_B + :derived_from: feat_req__lifecycle__conditional_startup[version==1] + :status: valid + :version: 1 + :satisfied_by: comp__lifecycle_launch_manager + + If a component does not reach its :term:`Ready State` within the configured + timeout, the :term:`Launch Manager` shall consider the component activation + attempt as failed. + .. comp_req:: Launched Process status :id: comp_req__launch_man__launcher_status_storage :reqtype: Functional diff --git a/score/launch_manager/src/daemon/src/configuration/component_config.hpp b/score/launch_manager/src/daemon/src/configuration/component_config.hpp index 1600b3ee0c..33d56ec126 100644 --- a/score/launch_manager/src/daemon/src/configuration/component_config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/component_config.hpp @@ -95,6 +95,7 @@ struct Sandbox struct DeploymentConfig { + // req-Id: comp_req__launch_man__conf_comp_active_tout uint32_t ready_timeout_ms{}; uint32_t shutdown_timeout_ms{}; Environment environmental_variables; diff --git a/score/launch_manager/src/daemon/src/configuration/config.hpp b/score/launch_manager/src/daemon/src/configuration/config.hpp index bd7790630f..1b88ace29a 100644 --- a/score/launch_manager/src/daemon/src/configuration/config.hpp +++ b/score/launch_manager/src/daemon/src/configuration/config.hpp @@ -34,7 +34,7 @@ struct RunTargetConfig std::string description; std::vector depends_on; - // req-Id: comp_req__launch_man__conf_rt_active_timeout + // req-Id: comp_req__launch_man__conf_rt_active_tout std::uint32_t transition_timeout_ms{}; SwitchRunTargetAction recovery_action; }; diff --git a/tests/integration/crash_on_startup/crash_on_startup.py b/tests/integration/crash_on_startup/crash_on_startup.py index 508b9ac041..f1d444f8c5 100644 --- a/tests/integration/crash_on_startup/crash_on_startup.py +++ b/tests/integration/crash_on_startup/crash_on_startup.py @@ -24,6 +24,7 @@ "comp_req__launch_man__failure_detect", "comp_req__launch_man__retries_configurable", "feat_req__lifecycle__recov_run_target_switch", + "feat_req__lifecycle__liveliness_detection", ], partially_verifies=["feat_req__lifecycle__recovery_action_support"], test_type="requirements-based", diff --git a/tests/integration/process_simple_rep_failure/process_simple_rep_failure.py b/tests/integration/process_simple_rep_failure/process_simple_rep_failure.py index f97185692b..89e2420dca 100644 --- a/tests/integration/process_simple_rep_failure/process_simple_rep_failure.py +++ b/tests/integration/process_simple_rep_failure/process_simple_rep_failure.py @@ -17,11 +17,11 @@ @add_test_properties( - partially_verifies=[ + partially_verifies=[], + fully_verifies=[ "feat_req__lifecycle__recov_run_target_switch", "feat_req__lifecycle__recovery_action_support", - ], - fully_verifies=[ + "feat_req__lifecycle__liveliness_detection", "comp_req__launch_man__failure_detect", ], test_type="requirements-based", diff --git a/tests/integration/switch_run_target/switch_run_target.py b/tests/integration/switch_run_target/switch_run_target.py index 0f6f77fd0e..051c3d72ea 100644 --- a/tests/integration/switch_run_target/switch_run_target.py +++ b/tests/integration/switch_run_target/switch_run_target.py @@ -18,13 +18,16 @@ @add_test_properties( fully_verifies=[ + "feat_req__lifecycle__conditional_startup", + "feat_req__lifecycle__control_commands", + "feat_req__lifecycle__process_ordering", + "feat_req__lifecycle__process_termination", "feat_req__lifecycle__request_run_target_start", + "feat_req__lifecycle__run_target_support", "feat_req__lifecycle__switch_run_targets", - "comp_req__launch_man__process_state_comm", - "feat_req__lifecycle__process_termination", "feat_req__lifecycle__terminationn_dependency", - "feat_req__lifecycle__process_ordering", "comp_req__launch_man__launch_manager_shutdown", + "comp_req__launch_man__process_state_comm", ], test_type="requirements-based", derivation_technique="requirements-analysis",