From 2ca67bf081315a38058c4b4344918f35a3112de0 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 9 Jun 2026 08:43:06 +0200 Subject: [PATCH 01/26] Initial report_running files --- score/launch_manager/lifecycle_client/BUILD | 33 ++++++++++++++ .../lifecycle_client/src/report_running.cpp | 23 ++++++++++ .../lifecycle_client/src/report_running.h | 43 +++++++++++++++++++ .../src/report_running_mock.cpp | 41 ++++++++++++++++++ .../src/report_running_mock.h | 35 +++++++++++++++ 5 files changed, 175 insertions(+) create mode 100644 score/launch_manager/lifecycle_client/src/report_running.cpp create mode 100644 score/launch_manager/lifecycle_client/src/report_running.h create mode 100644 score/launch_manager/lifecycle_client/src/report_running_mock.cpp create mode 100644 score/launch_manager/lifecycle_client/src/report_running_mock.h diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 9bba30c05..7add54d36 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -182,6 +182,22 @@ cc_library( ] ] + +cc_library( + name = "report_running", + srcs = ["src/report_running.cpp"], + hdrs = ["src/report_running.h"], + features = COMPILER_WARNING_FEATURES, + include_prefix = "score/mw/lifecycle/lifecycle_client", + strip_include_prefix = "/score/launch_manager/lifecycle_client/src", + visibility = ["//visibility:public"], + tags = ["FUSA"], + deps = [ + ":lifecycle_client", + "@score_baselibs//score/mw/log", + ], +) + cc_library( name = "applicationcontext_mock", testonly = True, @@ -243,6 +259,23 @@ cc_library( ], ) +cc_library( + name = "report_running_mock", + testonly = True, + srcs = ["src/report_running_mock.cpp"], + hdrs = [ + "src/report_running.h", + "src/report_running_mock.h", + ], + features = COMPILER_WARNING_FEATURES, + include_prefix = "score/mw/lifecycle/lifecycle_client", + strip_include_prefix = "/score/launch_manager/lifecycle_client/src", + visibility = ["//visibility:public"], + deps = [ + "@googletest//:gtest", + ], +) + filegroup( name = "all_sources", srcs = glob([ diff --git a/score/launch_manager/lifecycle_client/src/report_running.cpp b/score/launch_manager/lifecycle_client/src/report_running.cpp new file mode 100644 index 000000000..d87142c03 --- /dev/null +++ b/score/launch_manager/lifecycle_client/src/report_running.cpp @@ -0,0 +1,23 @@ +/******************************************************************************** + * Copyright (c) 2025 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#include "score/mw/lifecycle/lifecycle_client/report_running.h" + +#include "score/mw/log/logging.h" +#include + +void score::mw::lifecycle::report_running() noexcept { + static_cast( + score::mw::lifecycle::LifecycleClient{}.ReportExecutionState( + score::mw::lifecycle::ExecutionState::kRunning)); +} \ No newline at end of file diff --git a/score/launch_manager/lifecycle_client/src/report_running.h b/score/launch_manager/lifecycle_client/src/report_running.h new file mode 100644 index 000000000..0f033d31b --- /dev/null +++ b/score/launch_manager/lifecycle_client/src/report_running.h @@ -0,0 +1,43 @@ +/******************************************************************************** + * Copyright (c) 2025 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#ifndef SCORE_MW_LIFECYCLE_REPORT_RUNNING_H_ +#define SCORE_MW_LIFECYCLE_REPORT_RUNNING_H_ + +namespace score { +namespace mw { +namespace lifecycle { + +/// @brief Signals to the Launch Manager that this process has finished +/// initialization and is now entering its Running state. +/// +/// This function provides an alternative API to the @ref Application class, in +/// which case @ref LifecycleManager internally calls report_running() before +/// invoking the Run() method of the application. Clients may use either +/// report_running() directly or implement the @ref Application class, but not +/// both at the same time. +/// +/// @note When using report_running() directly instead of the @ref +/// LifecycleManager class, the caller is responsible for handling process +/// shutdown. The @ref LifecycleManager class automatically registers a signal +/// handler for SIGTERM, which is the signal sent by the Launch Manager to +/// request shutdown of the process. When using report_running() directly, users +/// must register their own SIGTERM signal handler and perform a graceful +/// shutdown accordingly. +void report_running() noexcept; + +} // namespace lifecycle +} // namespace mw +} // namespace score + +#endif \ No newline at end of file diff --git a/score/launch_manager/lifecycle_client/src/report_running_mock.cpp b/score/launch_manager/lifecycle_client/src/report_running_mock.cpp new file mode 100644 index 000000000..c7def58db --- /dev/null +++ b/score/launch_manager/lifecycle_client/src/report_running_mock.cpp @@ -0,0 +1,41 @@ +/******************************************************************************** + * Copyright (c) 2025 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#include "score/mw/lifecycle/lifecycle_client/report_running_mock.h" +#include "score/mw/lifecycle/lifecycle_client/report_running.h" + +#include + +namespace { + +auto &GetReportRunningCallback() noexcept { + static std::function report_running_callback = nullptr; + return report_running_callback; +} + +} // namespace + +score::mw::lifecycle::ReportRunningMock::ReportRunningMock() { + GetReportRunningCallback() = [this] { report_running(); }; +} + +score::mw::lifecycle::ReportRunningMock::~ReportRunningMock() { + GetReportRunningCallback() = nullptr; +} + +void score::mw::lifecycle::report_running() noexcept { + auto &report_running_callback = GetReportRunningCallback(); + if (report_running_callback) { + report_running_callback(); + } +} \ No newline at end of file diff --git a/score/launch_manager/lifecycle_client/src/report_running_mock.h b/score/launch_manager/lifecycle_client/src/report_running_mock.h new file mode 100644 index 000000000..2821e6647 --- /dev/null +++ b/score/launch_manager/lifecycle_client/src/report_running_mock.h @@ -0,0 +1,35 @@ +/******************************************************************************** + * Copyright (c) 2025 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#ifndef SCORE_MW_LIFECYCLE_MOCKS_REPORTRUNNINGMOCK_H_ +#define SCORE_MW_LIFECYCLE_MOCKS_REPORTRUNNINGMOCK_H_ + +#include + +namespace score { +namespace mw { +namespace lifecycle { + +class ReportRunningMock { +public: + ReportRunningMock(); + ~ReportRunningMock(); + + MOCK_METHOD(void, report_running, (), (noexcept)); +}; + +} // namespace lifecycle +} // namespace mw +} // namespace score + +#endif // SCORE_MW_LIFECYCLE_MOCKS_REPORTRUNNINGMOCK_H_ \ No newline at end of file From 9a9be836ba764ec4b5e87d688e20da98f6c21283 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 9 Jun 2026 15:51:49 +0200 Subject: [PATCH 02/26] Update LifeCycleManager to use report_running() --- score/launch_manager/lifecycle_client/BUILD | 3 +-- .../lifecycle_client/src/lifecyclemanager.cpp | 8 ++------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 7add54d36..48e3e4eb6 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -37,7 +37,6 @@ cc_library( "src/application.cpp", "src/applicationcontext.cpp", "src/lifecycleclient.cpp", - "src/lifecyclemanager.cpp", "src/runapplication.cpp", ], hdrs = [ @@ -144,7 +143,7 @@ cc_library( visibility = ["//visibility:public"], deps = [ ":application", - ":lifecycle_client", + ":report_running", "@score_baselibs//score/mw/log", "@score_baselibs//score/os:stdlib", "@score_baselibs//score/os/utils:signal", diff --git a/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp b/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp index 08c42fc52..bf6aeb426 100644 --- a/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp +++ b/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp @@ -15,7 +15,7 @@ #include "score/os/errno.h" #include -#include "score/mw/lifecycle/lifecycle_client.h" +#include "score/mw/lifecycle/lifecycle_client/report_running.h" #include "score/mw/log/logging.h" #include "score/os/stdlib_impl.h" @@ -170,9 +170,5 @@ void score::mw::lifecycle::LifeCycleManager::handle_signal() void score::mw::lifecycle::LifeCycleManager::report_running() noexcept { mw::log::LogInfo() << "Reporting kRunning to Launch Manager"; - const auto result = score::mw::lifecycle::LifecycleClient{}.ReportExecutionState(score::mw::lifecycle::ExecutionState::kRunning); - if (!result.has_value()) - { - mw::log::LogError() << "Failed to report kRunning to Launch Manager: " << result.error().Message(); - } + score::mw::lifecycle::report_running(); } From e89771f496a30f1016d4c1e95d06106134784e94 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 10 Jun 2026 10:13:32 +0200 Subject: [PATCH 03/26] Update year in copyright --- score/launch_manager/lifecycle_client/src/report_running.cpp | 2 +- score/launch_manager/lifecycle_client/src/report_running.h | 2 +- .../launch_manager/lifecycle_client/src/report_running_mock.cpp | 2 +- score/launch_manager/lifecycle_client/src/report_running_mock.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/score/launch_manager/lifecycle_client/src/report_running.cpp b/score/launch_manager/lifecycle_client/src/report_running.cpp index d87142c03..d26678668 100644 --- a/score/launch_manager/lifecycle_client/src/report_running.cpp +++ b/score/launch_manager/lifecycle_client/src/report_running.cpp @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2025 Contributors to the Eclipse Foundation + * Copyright (c) 2026 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. diff --git a/score/launch_manager/lifecycle_client/src/report_running.h b/score/launch_manager/lifecycle_client/src/report_running.h index 0f033d31b..6a37c1faf 100644 --- a/score/launch_manager/lifecycle_client/src/report_running.h +++ b/score/launch_manager/lifecycle_client/src/report_running.h @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2025 Contributors to the Eclipse Foundation + * Copyright (c) 2026 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. diff --git a/score/launch_manager/lifecycle_client/src/report_running_mock.cpp b/score/launch_manager/lifecycle_client/src/report_running_mock.cpp index c7def58db..08895e8f4 100644 --- a/score/launch_manager/lifecycle_client/src/report_running_mock.cpp +++ b/score/launch_manager/lifecycle_client/src/report_running_mock.cpp @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2025 Contributors to the Eclipse Foundation + * Copyright (c) 2026 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. diff --git a/score/launch_manager/lifecycle_client/src/report_running_mock.h b/score/launch_manager/lifecycle_client/src/report_running_mock.h index 2821e6647..037519f41 100644 --- a/score/launch_manager/lifecycle_client/src/report_running_mock.h +++ b/score/launch_manager/lifecycle_client/src/report_running_mock.h @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2025 Contributors to the Eclipse Foundation + * Copyright (c) 2026 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. From 90b403e43953f98614eafe87c7a84d4a0f310765 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 10 Jun 2026 13:53:03 +0200 Subject: [PATCH 04/26] Remove mw::log dependency, adjust include prefix & visibility --- score/launch_manager/lifecycle_client/BUILD | 5 ++--- .../launch_manager/lifecycle_client/src/lifecyclemanager.cpp | 2 +- score/launch_manager/lifecycle_client/src/report_running.cpp | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 48e3e4eb6..8f7adeb04 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -187,13 +187,12 @@ cc_library( srcs = ["src/report_running.cpp"], hdrs = ["src/report_running.h"], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], tags = ["FUSA"], deps = [ ":lifecycle_client", - "@score_baselibs//score/mw/log", ], ) diff --git a/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp b/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp index bf6aeb426..daea7564d 100644 --- a/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp +++ b/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp @@ -15,7 +15,7 @@ #include "score/os/errno.h" #include -#include "score/mw/lifecycle/lifecycle_client/report_running.h" +#include "score/mw/lifecycle/report_running.h" #include "score/mw/log/logging.h" #include "score/os/stdlib_impl.h" diff --git a/score/launch_manager/lifecycle_client/src/report_running.cpp b/score/launch_manager/lifecycle_client/src/report_running.cpp index d26678668..57066958f 100644 --- a/score/launch_manager/lifecycle_client/src/report_running.cpp +++ b/score/launch_manager/lifecycle_client/src/report_running.cpp @@ -11,10 +11,9 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/report_running.h" +#include "score/mw/lifecycle/report_running.h" -#include "score/mw/log/logging.h" -#include +#include "score/mw/lifecycle/lifecycle_client.h" void score::mw::lifecycle::report_running() noexcept { static_cast( From 11d76413d8227f6b1f7e09ee268537808db647ee Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 10 Jun 2026 15:52:17 +0200 Subject: [PATCH 05/26] Rename lifecycleclient.cpp to lifecycle_client.cpp --- .../src/{lifecycleclient.cpp => lifecycle_client.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename score/launch_manager/lifecycle_client/src/{lifecycleclient.cpp => lifecycle_client.cpp} (100%) diff --git a/score/launch_manager/lifecycle_client/src/lifecycleclient.cpp b/score/launch_manager/lifecycle_client/src/lifecycle_client.cpp similarity index 100% rename from score/launch_manager/lifecycle_client/src/lifecycleclient.cpp rename to score/launch_manager/lifecycle_client/src/lifecycle_client.cpp From 89582c038ee2639677114c3ca7b3f856a5d2b8fd Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 10 Jun 2026 15:53:03 +0200 Subject: [PATCH 06/26] Add internal bazel target for old-school LifecycleClient --- score/launch_manager/lifecycle_client/BUILD | 23 +++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 8f7adeb04..11155d3af 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -36,7 +36,7 @@ cc_library( "src/aasapplicationcontainer.cpp", "src/application.cpp", "src/applicationcontext.cpp", - "src/lifecycleclient.cpp", + "src/lifecyclemanager.cpp", "src/runapplication.cpp", ], hdrs = [ @@ -58,6 +58,7 @@ cc_library( strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score:__subpackages__"], deps = [ + ":report_running", ":lifecycle_client_interface", "//score/launch_manager/lifecycle_client/src/details:lifecycle_client_impl", "@score_baselibs//score/language/futurecpp", @@ -192,7 +193,25 @@ cc_library( visibility = ["//score:__subpackages__"], tags = ["FUSA"], deps = [ - ":lifecycle_client", + ":lifecycleclient_internal", + ], +) + +cc_library( + name = "lifecycleclient_internal", + srcs = [ + "src/lifecycle_client.cpp", + ], + hdrs = [ + "src/lifecycle_client.h", + ], + features = COMPILER_WARNING_FEATURES, + include_prefix = "score/mw/lifecycle/lifecycle_client", + strip_include_prefix = "/score/launch_manager/lifecycle_client/src", + tags = ["FUSA"], + visibility = ["//score:__subpackages__"], + deps = [ + "//score/launch_manager/lifecycle_client/src/details:lifecycle_client_impl", ], ) From 7f1c411220cf42da0d8f83580ed14767f337d11f Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 10 Jun 2026 17:58:59 +0200 Subject: [PATCH 07/26] UT for score::mw::lifecycle::Run - generated by AI --- score/launch_manager/lifecycle_client/BUILD | 10 ++ .../src/lifecyclemanagermock.cpp | 2 + .../src/runapplication_UT.cpp | 149 ++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 score/launch_manager/lifecycle_client/src/runapplication_UT.cpp diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 11155d3af..e0c373b01 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -263,6 +263,7 @@ cc_library( hdrs = [ "src/lifecyclemanager.h", "src/lifecyclemanagermock.h", + "src/runapplication.h", ], features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", @@ -300,3 +301,12 @@ filegroup( "src/*.h", ]), ) + +cc_test( + name = "runapplication_UT", + srcs = ["src/runapplication_UT.cpp"], + deps = [ + ":lifecycle_mock", + "@googletest//:gtest_main", + ], +) diff --git a/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp b/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp index fbcc1e952..aa62f8456 100644 --- a/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp +++ b/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp @@ -94,3 +94,5 @@ std::int32_t score::mw::lifecycle::LifeCycleManager::run(score::mw::lifecycle::A report_shutdown(); return result; } + +void score::mw::lifecycle::LifeCycleManager::report_running() noexcept {} diff --git a/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp new file mode 100644 index 000000000..a975fdd34 --- /dev/null +++ b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp @@ -0,0 +1,149 @@ +/******************************************************************************** + * Copyright (c) 2026 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +#include "score/mw/lifecycle/lifecycle_client/runapplication.h" +#include "score/mw/lifecycle/lifecycle_client/applicationcontextmock.h" +#include "score/mw/lifecycle/lifecycle_client/lifecyclemanagermock.h" + +#include +#include + +namespace +{ + +class StubApplication : public score::mw::lifecycle::Application +{ + public: + std::int32_t Initialize(const score::mw::lifecycle::ApplicationContext&) override { return 0; } + std::int32_t Run(const score::cpp::stop_token&) override { return 0; } +}; + +class StubApplicationWithIntArg : public score::mw::lifecycle::Application +{ + public: + explicit StubApplicationWithIntArg(int value) : value_{value} {} + std::int32_t Initialize(const score::mw::lifecycle::ApplicationContext&) override { return 0; } + std::int32_t Run(const score::cpp::stop_token&) override { return 0; } + int value_; +}; + +class RunTest : public ::testing::Test +{ + protected: + // Mocks must be alive before any Run<> object is constructed so that the + // static callbacks used by the link-time substitution pattern are registered. + score::mw::lifecycle::ApplicationContextMock context_mock_; + score::mw::lifecycle::LifeCycleManagerMock lifecycle_mock_; + + static constexpr int kArgc = 1; + const char* kArgv[1] = {"test_app"}; +}; + +} // namespace + +using ::testing::_; +using ::testing::Eq; +using ::testing::Return; + +TEST_F(RunTest, AsPosixProcessReturnsZeroExitCode) +{ + RecordProperty("Description", "AsPosixProcess() forwards the zero return value of LifeCycleManager::run()."); + + EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(0)); + + score::mw::lifecycle::Run runner(kArgc, kArgv); + EXPECT_EQ(runner.AsPosixProcess(), 0); +} + +TEST_F(RunTest, AsPosixProcessForwardsNonZeroExitCode) +{ + RecordProperty("Description", "AsPosixProcess() forwards a non-zero return value of LifeCycleManager::run()."); + + EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(42)); + + score::mw::lifecycle::Run runner(kArgc, kArgv); + EXPECT_EQ(runner.AsPosixProcess(), 42); +} + +TEST_F(RunTest, AsPosixProcessCreatesAndDestroysLifeCycleManager) +{ + RecordProperty("Description", + "AsPosixProcess() constructs exactly one LifeCycleManager and destroys it before returning."); + + EXPECT_CALL(lifecycle_mock_, ctor()).Times(1); + EXPECT_CALL(lifecycle_mock_, dtor()).Times(1); + EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(0)); + + score::mw::lifecycle::Run runner(kArgc, kArgv); + runner.AsPosixProcess(); +} + +TEST_F(RunTest, AsPosixProcessPassesCorrectApplicationTypeToRun) +{ + RecordProperty("Description", + "The Application instance passed to LifeCycleManager::run() is of the type given as " + "the Run template argument."); + + EXPECT_CALL(lifecycle_mock_, run(_, _)) + .WillOnce([](score::mw::lifecycle::Application& app, const score::mw::lifecycle::ApplicationContext&) { + EXPECT_NE(dynamic_cast(&app), nullptr); + return 0; + }); + + score::mw::lifecycle::Run runner(kArgc, kArgv); + runner.AsPosixProcess(); +} + +TEST_F(RunTest, AsPosixProcessForwardsConstructorArgsToApplication) +{ + RecordProperty("Description", + "Extra arguments passed to AsPosixProcess() are forwarded to the ApplicationType constructor."); + + EXPECT_CALL(lifecycle_mock_, run(_, _)) + .WillOnce([](score::mw::lifecycle::Application& app, const score::mw::lifecycle::ApplicationContext&) { + auto* typed_app = dynamic_cast(&app); + EXPECT_NE(typed_app, nullptr); + if (typed_app != nullptr) + { + EXPECT_EQ(typed_app->value_, 99); + } + return 0; + }); + + score::mw::lifecycle::Run runner(kArgc, kArgv); + runner.AsPosixProcess(99); +} + +TEST_F(RunTest, RunApplicationFreeFunctionDelegatesToAsPosixProcess) +{ + RecordProperty("Description", + "The run_application<>() free function delegates to Run<>::AsPosixProcess() and returns " + "the same exit code."); + + EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(7)); + + const auto result = score::mw::lifecycle::run_application(kArgc, kArgv); + EXPECT_EQ(result, 7); +} + +TEST_F(RunTest, RunConstructorPassesArgcArgvToApplicationContext) +{ + RecordProperty("Description", + "The Run constructor forwards argc and argv to the ApplicationContext constructor."); + + EXPECT_CALL(context_mock_, ctor(Eq(kArgc), Eq(static_cast(kArgv)))).Times(1); + EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(0)); + + score::mw::lifecycle::Run runner(kArgc, kArgv); + runner.AsPosixProcess(); +} From d767092194d48933e50f4b5197af9a0e39d13554 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 10 Jun 2026 18:11:48 +0200 Subject: [PATCH 08/26] Get rid of uninteresting mock calls --- .../lifecycle_client/src/runapplication_UT.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp index a975fdd34..c6eba9d1d 100644 --- a/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp +++ b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp @@ -18,6 +18,11 @@ #include #include +using ::testing::_; +using ::testing::AnyNumber; +using ::testing::Eq; +using ::testing::Return; + namespace { @@ -47,6 +52,13 @@ class RunTest : public ::testing::Test static constexpr int kArgc = 1; const char* kArgv[1] = {"test_app"}; + + void SetUp() override + { + EXPECT_CALL(context_mock_, ctor(_, _)).Times(::testing::AnyNumber()); + EXPECT_CALL(lifecycle_mock_, ctor()).Times(::testing::AnyNumber()); + EXPECT_CALL(lifecycle_mock_, dtor()).Times(::testing::AnyNumber()); + } }; } // namespace From 4da40dffdebc0e15e6e846454b076216b9b5fad8 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Thu, 11 Jun 2026 13:27:11 +0200 Subject: [PATCH 09/26] Mock targets invisible outside of package --- score/launch_manager/lifecycle_client/BUILD | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index e0c373b01..8d2e32a25 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -228,7 +228,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], deps = [ "@googletest//:gtest", "@score_baselibs//score/memory:string_literal", @@ -248,6 +248,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", + visibility = ["//score:__subpackages__"], deps = [ ":applicationcontext_mock", "@score_baselibs//score/os/utils:signal", @@ -268,7 +269,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], deps = [ ":application_mock", "@googletest//:gtest", @@ -288,7 +289,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], deps = [ "@googletest//:gtest", ], From 128e1862336e9b1a83e15ea2eba26328e48a18df Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Thu, 11 Jun 2026 15:11:23 +0200 Subject: [PATCH 10/26] Build breaks on rust_supervised_app --- score/launch_manager/lifecycle_client/BUILD | 111 +++++++++++--------- 1 file changed, 62 insertions(+), 49 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 8d2e32a25..793482782 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -32,20 +32,6 @@ cc_library( cc_library( name = "lifecycle_client", - srcs = [ - "src/aasapplicationcontainer.cpp", - "src/application.cpp", - "src/applicationcontext.cpp", - "src/lifecyclemanager.cpp", - "src/runapplication.cpp", - ], - hdrs = [ - "src/aasapplicationcontainer.h", - "src/application.h", - "src/applicationcontext.h", - "src/lifecyclemanager.h", - "src/runapplication.h", - ], copts = select({ "@platforms//os:qnx": [], "@platforms//os:linux": ["-pthread"], @@ -58,9 +44,12 @@ cc_library( strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score:__subpackages__"], deps = [ + ":aasapplicationcontainer", + ":application", + ":lifecyclemanager", + ":runapplication", ":report_running", ":lifecycle_client_interface", - "//score/launch_manager/lifecycle_client/src/details:lifecycle_client_impl", "@score_baselibs//score/language/futurecpp", "@score_baselibs//score/memory:string_literal", "@score_baselibs//score/mw/log", @@ -69,6 +58,7 @@ cc_library( ], ) +# TODO: Narrow scope of visibility to //score::launch_manager cc_library( name = "applicationcontext", srcs = [ @@ -81,7 +71,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], deps = [ "@score_baselibs//score/memory:string_literal", "@score_baselibs//score/mw/log", @@ -102,7 +92,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], deps = [ ":applicationcontext", "@score_baselibs//score/language/futurecpp", @@ -122,7 +112,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], deps = [ ":applicationcontext", ], @@ -141,7 +131,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//visibility:public"], + visibility = ["//score:__subpackages__"], deps = [ ":application", ":report_running", @@ -151,37 +141,60 @@ cc_library( ], ) -[ - cc_library( - name = name, - srcs = [ - "src/runapplication.cpp", - ], - hdrs = [ - "src/application.h", - "src/lifecyclemanager.h", - "src/runapplication.h", - ], - features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", - strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - tags = ["FUSA"], - deps = [ - ":applicationcontext", - ] + dependencies, - ) - for name, dependencies in [ - ( - "lifecycle", - [], - ), - ( - "lifecycle_non_adaptive", - [], - ), - ] -] +# [ +# cc_library( +# name = name, +# srcs = [ +# "src/runapplication.cpp", +# ], +# hdrs = [ +# "src/application.h", +# "src/lifecyclemanager.h", +# "src/runapplication.h", +# ], +# features = COMPILER_WARNING_FEATURES, +# include_prefix = "score/mw/lifecycle/lifecycle_client", +# strip_include_prefix = "/score/launch_manager/lifecycle_client/src", +# tags = ["FUSA"], +# deps = [ +# ":applicationcontext", +# ] + dependencies, +# ) +# for name, dependencies in [ +# ( +# "lifecycle", +# [], +# ), +# ( +# "lifecycle_non_adaptive", +# [], +# ), +# ] +# ] +cc_library( + name = "runapplication", + srcs = [ + "src/runapplication.cpp", + ], + hdrs = [ + "src/runapplication.h", + "src/lifecyclemanager.h", + "src/applicationcontext.h", + ], + features = COMPILER_WARNING_FEATURES, + include_prefix = "score/mw/lifecycle/lifecycle_client", + strip_include_prefix = "/score/launch_manager/lifecycle_client/src", + tags = ["FUSA"], + visibility = ["//score:__subpackages__"], + deps = [ + ":application", + ":report_running", + "@score_baselibs//score/mw/log", + "@score_baselibs//score/os:stdlib", + "@score_baselibs//score/os/utils:signal", + ], +) cc_library( name = "report_running", From 09e0be820629df23d3913b038aa0169dce5d0e24 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Thu, 11 Jun 2026 18:09:09 +0200 Subject: [PATCH 11/26] Fix rust_supervised_app --- score/launch_manager/lifecycle_client/src/rust/BUILD | 2 +- score/launch_manager/lifecycle_client/src/rust/src/lifecycle.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/score/launch_manager/lifecycle_client/src/rust/BUILD b/score/launch_manager/lifecycle_client/src/rust/BUILD index 7149b7109..333cf0285 100644 --- a/score/launch_manager/lifecycle_client/src/rust/BUILD +++ b/score/launch_manager/lifecycle_client/src/rust/BUILD @@ -20,7 +20,7 @@ rust_library( ], visibility = ["//score/launch_manager:__subpackages__"], deps = [ - "//score/launch_manager/lifecycle_client", + "//score/launch_manager/lifecycle_client:lifecycleclient_internal", "@score_crates//:libc", ], ) diff --git a/score/launch_manager/lifecycle_client/src/rust/src/lifecycle.rs b/score/launch_manager/lifecycle_client/src/rust/src/lifecycle.rs index 589c03712..3d7686d0b 100644 --- a/score/launch_manager/lifecycle_client/src/rust/src/lifecycle.rs +++ b/score/launch_manager/lifecycle_client/src/rust/src/lifecycle.rs @@ -12,7 +12,7 @@ // ******************************************************************************* use libc::c_int; -#[link(name = "lifecycle_client")] +#[link(name = "lifecycleclient_internal")] unsafe extern "C" { fn score_lcm_ReportExecutionStateRunning() -> c_int; } From 96739054404243a15ad007f786a70b3988aee71f Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Thu, 11 Jun 2026 18:15:47 +0200 Subject: [PATCH 12/26] Drop no longer needed dependency --- score/launch_manager/daemon/src/alive_monitor/rust/BUILD | 1 - .../launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs | 1 - 2 files changed, 2 deletions(-) diff --git a/score/launch_manager/daemon/src/alive_monitor/rust/BUILD b/score/launch_manager/daemon/src/alive_monitor/rust/BUILD index 7a01584ae..4a8780703 100644 --- a/score/launch_manager/daemon/src/alive_monitor/rust/BUILD +++ b/score/launch_manager/daemon/src/alive_monitor/rust/BUILD @@ -22,7 +22,6 @@ rust_library( visibility = ["//score:__subpackages__"], deps = [ "//score/launch_manager:alive_cc", - "//score/launch_manager/lifecycle_client", "@score_crates//:libc", ], ) diff --git a/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs b/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs index ea6e28998..17697d5d8 100644 --- a/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs +++ b/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs @@ -15,7 +15,6 @@ use libc::{c_char, c_uint, c_void}; use std::ffi::CString; use std::marker::PhantomData; -#[link(name = "lifecycle_client")] unsafe extern "C" { fn score_lcm_monitor_initialize(instanceSpecifier: *const c_char) -> *mut c_void; fn score_lcm_monitor_deinitialize(instance: *mut c_void); From 40c0ae29b3a4a9231a71e02c30fb8ae01589ac98 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Thu, 11 Jun 2026 18:44:47 +0200 Subject: [PATCH 13/26] Clean up in build file --- score/launch_manager/lifecycle_client/BUILD | 66 ++++----------------- 1 file changed, 13 insertions(+), 53 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 793482782..f0aa691c6 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -22,7 +22,7 @@ cc_library( ], include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ "//score/launch_manager:error", "@score_baselibs//score/language/futurecpp", @@ -42,7 +42,7 @@ cc_library( "@platforms//os:linux": ["-lpthread"], }), strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//visibility:public"], deps = [ ":aasapplicationcontainer", ":application", @@ -58,7 +58,6 @@ cc_library( ], ) -# TODO: Narrow scope of visibility to //score::launch_manager cc_library( name = "applicationcontext", srcs = [ @@ -71,7 +70,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ "@score_baselibs//score/memory:string_literal", "@score_baselibs//score/mw/log", @@ -92,7 +91,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":applicationcontext", "@score_baselibs//score/language/futurecpp", @@ -112,7 +111,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":applicationcontext", ], @@ -131,7 +130,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":application", ":report_running", @@ -141,37 +140,6 @@ cc_library( ], ) -# [ -# cc_library( -# name = name, -# srcs = [ -# "src/runapplication.cpp", -# ], -# hdrs = [ -# "src/application.h", -# "src/lifecyclemanager.h", -# "src/runapplication.h", -# ], -# features = COMPILER_WARNING_FEATURES, -# include_prefix = "score/mw/lifecycle/lifecycle_client", -# strip_include_prefix = "/score/launch_manager/lifecycle_client/src", -# tags = ["FUSA"], -# deps = [ -# ":applicationcontext", -# ] + dependencies, -# ) -# for name, dependencies in [ -# ( -# "lifecycle", -# [], -# ), -# ( -# "lifecycle_non_adaptive", -# [], -# ), -# ] -# ] - cc_library( name = "runapplication", srcs = [ @@ -186,7 +154,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":application", ":report_running", @@ -203,7 +171,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], tags = ["FUSA"], deps = [ ":lifecycleclient_internal", @@ -222,7 +190,7 @@ cc_library( include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ "//score/launch_manager/lifecycle_client/src/details:lifecycle_client_impl", ], @@ -241,7 +209,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ "@googletest//:gtest", "@score_baselibs//score/memory:string_literal", @@ -261,7 +229,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":applicationcontext_mock", "@score_baselibs//score/os/utils:signal", @@ -282,7 +250,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":application_mock", "@googletest//:gtest", @@ -302,20 +270,12 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score:__subpackages__"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ "@googletest//:gtest", ], ) -filegroup( - name = "all_sources", - srcs = glob([ - "src/*.cpp", - "src/*.h", - ]), -) - cc_test( name = "runapplication_UT", srcs = ["src/runapplication_UT.cpp"], From ede9ef45772a38621eb6cdf469a72ce0414546d2 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Fri, 12 Jun 2026 13:10:35 +0200 Subject: [PATCH 14/26] Some todos added --- score/launch_manager/BUILD | 3 +++ score/launch_manager/lifecycle_client/BUILD | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/score/launch_manager/BUILD b/score/launch_manager/BUILD index dde697b7c..22d1e7830 100644 --- a/score/launch_manager/BUILD +++ b/score/launch_manager/BUILD @@ -71,6 +71,7 @@ cc_library( cc_test( name = "exec_error_domain_UT", srcs = ["exec_error_domain_UT.cpp"], + # TODO: Visibility private visibility = ["//tests:__subpackages__"], deps = [ ":error", @@ -78,3 +79,5 @@ cc_test( "@score_baselibs//score/result", ], ) + +# TODO: Add aliases for mock and make them public \ No newline at end of file diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index f0aa691c6..5a0b854b0 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -13,6 +13,7 @@ load("@rules_cc//cc:defs.bzl", "cc_library") load("@score_baselibs//score/language/safecpp:toolchain_features.bzl", "COMPILER_WARNING_FEATURES") +#TODO: Review if we need both targets lifecycle_client_interface <--> lifecycle_client cc_library( name = "lifecycle_client_interface", hdrs = [ @@ -30,6 +31,7 @@ cc_library( ], ) +# TODO: Proposal from Nicolas, get rid of interface target and adjust include prefix to score/mw/lifecycle and adjust include path cc_library( name = "lifecycle_client", copts = select({ @@ -236,6 +238,7 @@ cc_library( ], ) +# TODO: Introduce public alias cc_library( name = "lifecycle_mock", testonly = True, @@ -243,9 +246,9 @@ cc_library( "src/lifecyclemanagermock.cpp", ], hdrs = [ - "src/lifecyclemanager.h", + # "src/lifecyclemanager.h", "src/lifecyclemanagermock.h", - "src/runapplication.h", + # "src/runapplication.h", ], features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle/lifecycle_client", @@ -259,6 +262,7 @@ cc_library( ], ) +# TODO: Introduce public alias cc_library( name = "report_running_mock", testonly = True, @@ -276,6 +280,7 @@ cc_library( ], ) +# TODO: Link against runapplication header cc_test( name = "runapplication_UT", srcs = ["src/runapplication_UT.cpp"], From 3ac0555e44d867bb1efb56f8c16f6f4e521845a1 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Mon, 15 Jun 2026 10:50:06 +0200 Subject: [PATCH 15/26] Misc changes Drop lifecycle_client in include path Adapt visibility of packages Get rid of circular dependency between lifecycle_internal and impl --- score/launch_manager/lifecycle_client/BUILD | 55 +++++++------------ .../src/aasapplicationcontainer.cpp | 4 +- .../src/aasapplicationcontainer.h | 4 +- .../lifecycle_client/src/application.cpp | 2 +- .../lifecycle_client/src/application.h | 2 +- .../src/applicationcontext.cpp | 2 +- .../src/applicationcontextmock.cpp | 4 +- .../lifecycle_client/src/details/BUILD | 2 +- .../src/details/lifecycle_client_impl.cpp | 22 +++----- .../src/details/lifecycle_client_impl.hpp | 12 ++-- .../lifecycle_client/src/lifecycle_client.cpp | 14 ++++- .../lifecycle_client/src/lifecycle_client.h | 4 +- .../lifecycle_client/src/lifecyclemanager.cpp | 2 +- .../lifecycle_client/src/lifecyclemanager.h | 4 +- .../src/lifecyclemanagermock.cpp | 4 +- .../src/lifecyclemanagermock.h | 4 +- .../src/report_running_mock.cpp | 4 +- .../lifecycle_client/src/runapplication.cpp | 2 +- .../lifecycle_client/src/runapplication.h | 4 +- .../src/runapplication_UT.cpp | 6 +- 20 files changed, 72 insertions(+), 85 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 5a0b854b0..266a886f6 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -13,45 +13,27 @@ load("@rules_cc//cc:defs.bzl", "cc_library") load("@score_baselibs//score/language/safecpp:toolchain_features.bzl", "COMPILER_WARNING_FEATURES") -#TODO: Review if we need both targets lifecycle_client_interface <--> lifecycle_client -cc_library( - name = "lifecycle_client_interface", - hdrs = [ - "src/application.h", - "src/lifecycle_client.h", - "src/runapplication.h", - ], - include_prefix = "score/mw/lifecycle", - strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], - deps = [ - "//score/launch_manager:error", - "@score_baselibs//score/language/futurecpp", - "@score_baselibs//score/result", - ], -) - -# TODO: Proposal from Nicolas, get rid of interface target and adjust include prefix to score/mw/lifecycle and adjust include path cc_library( name = "lifecycle_client", copts = select({ "@platforms//os:qnx": [], "@platforms//os:linux": ["-pthread"], }), - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", + #TODO: Review if pthread is needed here, move to applicationcontainer linkopts = select({ "@platforms//os:qnx": [], "@platforms//os:linux": ["-lpthread"], }), strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//visibility:public"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":aasapplicationcontainer", ":application", ":lifecyclemanager", + ":lifecycleclient_internal", ":runapplication", ":report_running", - ":lifecycle_client_interface", "@score_baselibs//score/language/futurecpp", "@score_baselibs//score/memory:string_literal", "@score_baselibs//score/mw/log", @@ -69,7 +51,7 @@ cc_library( "src/applicationcontext.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], @@ -90,7 +72,7 @@ cc_library( "src/application.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], @@ -111,7 +93,7 @@ cc_library( "src/lifecyclemanager.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ @@ -129,7 +111,7 @@ cc_library( "src/lifecyclemanager.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], @@ -153,7 +135,7 @@ cc_library( "src/applicationcontext.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], @@ -189,12 +171,13 @@ cc_library( "src/lifecycle_client.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ "//score/launch_manager/lifecycle_client/src/details:lifecycle_client_impl", + "//score/launch_manager:error_event", ], ) @@ -209,7 +192,7 @@ cc_library( "src/applicationcontextmock.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ @@ -229,7 +212,7 @@ cc_library( "src/application.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ @@ -246,16 +229,16 @@ cc_library( "src/lifecyclemanagermock.cpp", ], hdrs = [ - # "src/lifecyclemanager.h", "src/lifecyclemanagermock.h", - # "src/runapplication.h", + "src/lifecyclemanager.h", + "src/application.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ - ":application_mock", + ":applicationcontext_mock", "@googletest//:gtest", "@score_baselibs//score/os/utils:signal", "@score_baselibs//score/os/utils/mocklib:signal_mock", @@ -272,7 +255,7 @@ cc_library( "src/report_running_mock.h", ], features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle/lifecycle_client", + include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ @@ -280,11 +263,11 @@ cc_library( ], ) -# TODO: Link against runapplication header cc_test( name = "runapplication_UT", srcs = ["src/runapplication_UT.cpp"], deps = [ + ":runapplication", ":lifecycle_mock", "@googletest//:gtest_main", ], diff --git a/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.cpp b/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.cpp index 4e2bccd21..7e465b47b 100644 --- a/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.cpp +++ b/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.cpp @@ -11,10 +11,10 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/aasapplicationcontainer.h" +#include "score/mw/lifecycle/aasapplicationcontainer.h" #include -#include "score/mw/lifecycle/lifecycle_client/lifecyclemanager.h" +#include "score/mw/lifecycle/lifecyclemanager.h" namespace score { diff --git a/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.h b/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.h index ee5b1d606..18a70059a 100644 --- a/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.h +++ b/score/launch_manager/lifecycle_client/src/aasapplicationcontainer.h @@ -14,8 +14,8 @@ #ifndef SCORE_MW_MW_LIFECYCLE_AASAPPLICATIONCONTAINER_H #define SCORE_MW_MW_LIFECYCLE_AASAPPLICATIONCONTAINER_H -#include "score/mw/lifecycle/lifecycle_client/application.h" -#include "score/mw/lifecycle/lifecycle_client/lifecyclemanager.h" +#include "score/mw/lifecycle/application.h" +#include "score/mw/lifecycle/lifecyclemanager.h" #include #include diff --git a/score/launch_manager/lifecycle_client/src/application.cpp b/score/launch_manager/lifecycle_client/src/application.cpp index 2edbd0578..e23894bde 100644 --- a/score/launch_manager/lifecycle_client/src/application.cpp +++ b/score/launch_manager/lifecycle_client/src/application.cpp @@ -11,4 +11,4 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/application.h" +#include "score/mw/lifecycle/application.h" diff --git a/score/launch_manager/lifecycle_client/src/application.h b/score/launch_manager/lifecycle_client/src/application.h index af809c07f..b6a543986 100644 --- a/score/launch_manager/lifecycle_client/src/application.h +++ b/score/launch_manager/lifecycle_client/src/application.h @@ -14,7 +14,7 @@ #ifndef SCORE_MW_LIFECYCLE_APPLICATION_H #define SCORE_MW_LIFECYCLE_APPLICATION_H -#include "score/mw/lifecycle/lifecycle_client/applicationcontext.h" +#include "score/mw/lifecycle/applicationcontext.h" #include diff --git a/score/launch_manager/lifecycle_client/src/applicationcontext.cpp b/score/launch_manager/lifecycle_client/src/applicationcontext.cpp index f05212673..344a0ac1e 100644 --- a/score/launch_manager/lifecycle_client/src/applicationcontext.cpp +++ b/score/launch_manager/lifecycle_client/src/applicationcontext.cpp @@ -11,7 +11,7 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/applicationcontext.h" +#include "score/mw/lifecycle/applicationcontext.h" #include #include #include diff --git a/score/launch_manager/lifecycle_client/src/applicationcontextmock.cpp b/score/launch_manager/lifecycle_client/src/applicationcontextmock.cpp index f591fd9f6..193618318 100644 --- a/score/launch_manager/lifecycle_client/src/applicationcontextmock.cpp +++ b/score/launch_manager/lifecycle_client/src/applicationcontextmock.cpp @@ -11,8 +11,8 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/applicationcontextmock.h" -#include "score/mw/lifecycle/lifecycle_client/applicationcontext.h" +#include "score/mw/lifecycle/applicationcontextmock.h" +#include "score/mw/lifecycle/applicationcontext.h" #include diff --git a/score/launch_manager/lifecycle_client/src/details/BUILD b/score/launch_manager/lifecycle_client/src/details/BUILD index 6c68c82cd..70eba0aa2 100644 --- a/score/launch_manager/lifecycle_client/src/details/BUILD +++ b/score/launch_manager/lifecycle_client/src/details/BUILD @@ -23,7 +23,7 @@ cc_library( "//score/launch_manager/daemon/src/common:constants", "//score/launch_manager/daemon/src/common:log", "//score/launch_manager/daemon/src/osal:ipc_comms", - "//score/launch_manager/lifecycle_client:lifecycle_client_interface", + "//score/launch_manager:error_event", "@score_baselibs//score/result", ], ) diff --git a/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.cpp b/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.cpp index 520cde4bb..bc3e09274 100644 --- a/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.cpp +++ b/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.cpp @@ -22,31 +22,25 @@ #include "score/mw/launch_manager/common/log.hpp" #include "score/mw/launch_manager/osal/ipc_comms.hpp" #include "score/mw/launch_manager/common/constants.hpp" +#include "score/mw/lifecycle/execution_error.h" #include "score/mw/lifecycle/lifecycle_client/details/lifecycle_client_impl.hpp" using namespace score::lcm::internal::osal; namespace score::mw::lifecycle { - std::atomic_bool LifecycleClient::LifecycleClientImpl::reported{false}; + std::atomic_bool LifecycleClientImpl::reported{false}; - LifecycleClient::LifecycleClientImpl::LifecycleClientImpl() noexcept = default; + LifecycleClientImpl::LifecycleClientImpl() noexcept = default; - LifecycleClient::LifecycleClientImpl::~LifecycleClientImpl() noexcept = default; + LifecycleClientImpl::~LifecycleClientImpl() noexcept = default; - score::Result LifecycleClient::LifecycleClientImpl::ReportExecutionState(ExecutionState state) const noexcept + score::Result LifecycleClientImpl::ReportRunningState() const noexcept { - score::Result retVal{score::MakeUnexpected(ExecErrc::kCommunicationError)}; - // Check if the state is valid - if (ExecutionState::kRunning != state) - { - LM_LOG_ERROR() << "[Lifecycle Client] Invalid execution state!"; - retVal = score::Result{score::MakeUnexpected(ExecErrc::kInvalidTransition)}; - } - else if (reported) + if (reported) { - LM_LOG_INFO() << "[Lifecycle Client] Reported kRunning already!"; + LM_LOG_INFO() << "[Lifecycle Client] Reported Running state already!"; retVal = score::Result{score::MakeUnexpected(ExecErrc::kInvalidTransition)}; } else @@ -57,7 +51,7 @@ namespace score::mw::lifecycle { return retVal; } - score::Result LifecycleClient::LifecycleClientImpl::reportKRunningtoDaemon() const noexcept + score::Result LifecycleClientImpl::reportKRunningtoDaemon() const noexcept { score::Result comms_error {score::MakeUnexpected(ExecErrc::kCommunicationError)}; diff --git a/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.hpp b/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.hpp index 87597cf62..4bfa0380b 100644 --- a/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.hpp +++ b/score/launch_manager/lifecycle_client/src/details/lifecycle_client_impl.hpp @@ -17,7 +17,7 @@ #include -#include "score/mw/lifecycle/lifecycle_client.h" +#include "score/result/result.h" #include "score/mw/launch_manager/osal/ipc_comms.hpp" namespace score::mw::lifecycle { @@ -26,7 +26,7 @@ namespace score::mw::lifecycle { /// The lifecycle_client_lib strive to provide ABI compatibility as much as we can, so for this reason Pimpl pattern is deployed. /// Design of this class fulfil the needs of the pattern mentioned. /// More info can be found here: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Ri-pimpl -class LifecycleClient::LifecycleClientImpl final { +class LifecycleClientImpl final { public: /// @brief Constructor that creates LifecycleClientImpl (implementation of Lifecycle Client) LifecycleClientImpl() noexcept; @@ -37,18 +37,16 @@ class LifecycleClient::LifecycleClientImpl final { // This class is trivially copyable / movable // For this reason we are applying the rule of zero - /// @brief Implementation of a interface for a Process to report its internal state to Launch Manager. + /// @brief Implementation of a interface for a Process to report its running state to Launch Manager. /// - /// @param state Value of the Execution State /// @returns An instance of score::Result. The instance holds an ErrorCode containing either one of the specified errors or a void-value. - /// @error score::mw::lifecycle::ExecErrc::kGeneralError if some unspecified error occurred /// @error score::mw::lifecycle::ExecErrc::kCommunicationError Communication error between Application and Launch Manager, e.g. unable to report state for Non-reporting Process. /// @error score::mw::lifecycle::ExecErrc::kInvalidTransition Invalid transition request (e.g. to Running when already in Running state) - score::Result ReportExecutionState(ExecutionState state) const noexcept; + score::Result ReportRunningState() const noexcept; private: /// @brief Variable to remember if kRunning was already reported for the process using lifecycle_client_lib. - /// Please note that LifecycleClient::ReportExecutionState() method, the original method, is declared as a const method. + /// Please note that LifecycleClient::ReportRunningState() method, the original method, is declared as a const method. /// Thanks to this, user can choose to declare instance of this class as a constant variable and reporting kRunning will still work. /// However, this prevent us from implementing certain optimizations, after initial kRunning was reported. /// To mitigate this, we can store this information outside of LifecycleClientImpl class or have a mutable variable. diff --git a/score/launch_manager/lifecycle_client/src/lifecycle_client.cpp b/score/launch_manager/lifecycle_client/src/lifecycle_client.cpp index 479e9f78a..94b9fa85a 100644 --- a/score/launch_manager/lifecycle_client/src/lifecycle_client.cpp +++ b/score/launch_manager/lifecycle_client/src/lifecycle_client.cpp @@ -11,8 +11,12 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ +#include "score/mw/launch_manager/common/log.hpp" +#include "score/mw/lifecycle/execution_error.h" +#include "score/mw/lifecycle/lifecycle_client.h" #include "score/mw/lifecycle/lifecycle_client/details/lifecycle_client_impl.hpp" + namespace score::mw::lifecycle { LifecycleClient::LifecycleClient() noexcept @@ -39,10 +43,18 @@ LifecycleClient& LifecycleClient::operator=(LifecycleClient&& rval) noexcept { } score::Result LifecycleClient::ReportExecutionState(ExecutionState state) const noexcept { + + // Check if the state is valid + if (ExecutionState::kRunning != state) + { + LM_LOG_ERROR() << "[Lifecycle Client] Invalid execution state!"; + return score::Result{score::MakeUnexpected(ExecErrc::kInvalidTransition)}; + } + // Check if the lifecycle_client_impl is valid if( lifecycle_client_impl_ ) { - return lifecycle_client_impl_->ReportExecutionState( state ); + return lifecycle_client_impl_->ReportRunningState(); } else { diff --git a/score/launch_manager/lifecycle_client/src/lifecycle_client.h b/score/launch_manager/lifecycle_client/src/lifecycle_client.h index 4996d168d..ecf4c80c3 100644 --- a/score/launch_manager/lifecycle_client/src/lifecycle_client.h +++ b/score/launch_manager/lifecycle_client/src/lifecycle_client.h @@ -20,7 +20,6 @@ #include #include "score/result/result.h" -#include "score/mw/lifecycle/execution_error.h" namespace score::mw::lifecycle { @@ -30,6 +29,8 @@ enum class ExecutionState : std::uint8_t { kRunning = 0 }; +class LifecycleClientImpl; + /// @brief Class to implement operations on Lifecycle Client class LifecycleClient final { public: @@ -71,7 +72,6 @@ class LifecycleClient final { private: /// @brief Pointer to implementation (Pimpl), we use this pattern to provide ABI compatibility. - class LifecycleClientImpl; std::unique_ptr lifecycle_client_impl_; }; diff --git a/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp b/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp index daea7564d..67ec52585 100644 --- a/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp +++ b/score/launch_manager/lifecycle_client/src/lifecyclemanager.cpp @@ -11,7 +11,7 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/lifecyclemanager.h" +#include "score/mw/lifecycle/lifecyclemanager.h" #include "score/os/errno.h" #include diff --git a/score/launch_manager/lifecycle_client/src/lifecyclemanager.h b/score/launch_manager/lifecycle_client/src/lifecyclemanager.h index fc4af2812..cd7a5780d 100644 --- a/score/launch_manager/lifecycle_client/src/lifecyclemanager.h +++ b/score/launch_manager/lifecycle_client/src/lifecyclemanager.h @@ -14,8 +14,8 @@ #ifndef SCORE_MW_LIFECYCLE_LIFECYCLEMANAGER_H_ #define SCORE_MW_LIFECYCLE_LIFECYCLEMANAGER_H_ -#include "score/mw/lifecycle/lifecycle_client/application.h" -#include "score/mw/lifecycle/lifecycle_client/applicationcontext.h" +#include "score/mw/lifecycle/application.h" +#include "score/mw/lifecycle/applicationcontext.h" #include "score/os/utils/signal_impl.h" diff --git a/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp b/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp index aa62f8456..d6ec1f172 100644 --- a/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp +++ b/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.cpp @@ -11,8 +11,8 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/lifecyclemanagermock.h" -#include "score/mw/lifecycle/lifecycle_client/lifecyclemanager.h" +#include "score/mw/lifecycle/lifecyclemanagermock.h" +#include "score/mw/lifecycle/lifecyclemanager.h" #include diff --git a/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.h b/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.h index b16452bd2..4b0649e51 100644 --- a/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.h +++ b/score/launch_manager/lifecycle_client/src/lifecyclemanagermock.h @@ -16,8 +16,8 @@ #include "score/os/utils/mocklib/signalmock.h" #include "score/os/utils/signal.h" -#include "score/mw/lifecycle/lifecycle_client/application.h" -#include "score/mw/lifecycle/lifecycle_client/applicationcontextmock.h" +#include "score/mw/lifecycle/application.h" +#include "score/mw/lifecycle/applicationcontextmock.h" #include diff --git a/score/launch_manager/lifecycle_client/src/report_running_mock.cpp b/score/launch_manager/lifecycle_client/src/report_running_mock.cpp index 08895e8f4..57e522921 100644 --- a/score/launch_manager/lifecycle_client/src/report_running_mock.cpp +++ b/score/launch_manager/lifecycle_client/src/report_running_mock.cpp @@ -11,8 +11,8 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/report_running_mock.h" -#include "score/mw/lifecycle/lifecycle_client/report_running.h" +#include "score/mw/lifecycle/report_running_mock.h" +#include "score/mw/lifecycle/report_running.h" #include diff --git a/score/launch_manager/lifecycle_client/src/runapplication.cpp b/score/launch_manager/lifecycle_client/src/runapplication.cpp index fc64df809..3fec8b564 100644 --- a/score/launch_manager/lifecycle_client/src/runapplication.cpp +++ b/score/launch_manager/lifecycle_client/src/runapplication.cpp @@ -11,4 +11,4 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/runapplication.h" +#include "score/mw/lifecycle/runapplication.h" diff --git a/score/launch_manager/lifecycle_client/src/runapplication.h b/score/launch_manager/lifecycle_client/src/runapplication.h index d315224ec..4c60fb4e3 100644 --- a/score/launch_manager/lifecycle_client/src/runapplication.h +++ b/score/launch_manager/lifecycle_client/src/runapplication.h @@ -14,8 +14,8 @@ #ifndef SCORE_MW_LIFECYCLE_RUNAPPLICATION_H #define SCORE_MW_LIFECYCLE_RUNAPPLICATION_H -#include "score/mw/lifecycle/lifecycle_client/lifecyclemanager.h" -#include "score/mw/lifecycle/lifecycle_client/applicationcontext.h" +#include "score/mw/lifecycle/lifecyclemanager.h" +#include "score/mw/lifecycle/applicationcontext.h" #include diff --git a/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp index c6eba9d1d..432fd824d 100644 --- a/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp +++ b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp @@ -11,9 +11,9 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -#include "score/mw/lifecycle/lifecycle_client/runapplication.h" -#include "score/mw/lifecycle/lifecycle_client/applicationcontextmock.h" -#include "score/mw/lifecycle/lifecycle_client/lifecyclemanagermock.h" +#include "score/mw/lifecycle/runapplication.h" +#include "score/mw/lifecycle/applicationcontextmock.h" +#include "score/mw/lifecycle/lifecyclemanagermock.h" #include #include From a42a65d75472f85b32aba2754cb472e674a23ddc Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Mon, 15 Jun 2026 11:25:39 +0200 Subject: [PATCH 16/26] Add public aliases for mock, move pthread dependency --- score/launch_manager/BUILD | 25 ++++++++++++++++++--- score/launch_manager/lifecycle_client/BUILD | 19 +++++++--------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/score/launch_manager/BUILD b/score/launch_manager/BUILD index 22d1e7830..affad988b 100644 --- a/score/launch_manager/BUILD +++ b/score/launch_manager/BUILD @@ -47,6 +47,7 @@ alias( cc_library( name = "error", hdrs = ["execution_error.h"], + visibility = ["//score/launch_manager:__subpackages__"], include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager", deps = [ @@ -60,6 +61,7 @@ cc_library( "execution_error.h", "execution_error_event.h", ], + visibility = ["//score/launch_manager:__subpackages__"], include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager", deps = [ @@ -71,8 +73,7 @@ cc_library( cc_test( name = "exec_error_domain_UT", srcs = ["exec_error_domain_UT.cpp"], - # TODO: Visibility private - visibility = ["//tests:__subpackages__"], + visibility = ["//visibility:private"], deps = [ ":error", "@googletest//:gtest_main", @@ -80,4 +81,22 @@ cc_test( ], ) -# TODO: Add aliases for mock and make them public \ No newline at end of file +alias( + name = "applicationcontext_mock_cc", + actual = "//score/launch_manager/lifecycle_client:applicationcontext_mock", +) + +alias( + name = "application_mock_cc", + actual = "//score/launch_manager/lifecycle_client:application_mock", +) + +alias( + name = "lifecycle_mock_cc", + actual = "//score/launch_manager/lifecycle_client:lifecycle_mock", +) + +alias( + name = "report_running_mock_cc", + actual = "//score/launch_manager/lifecycle_client:report_running_mock", +) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 266a886f6..5678f0721 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -20,11 +20,6 @@ cc_library( "@platforms//os:linux": ["-pthread"], }), include_prefix = "score/mw/lifecycle", - #TODO: Review if pthread is needed here, move to applicationcontainer - linkopts = select({ - "@platforms//os:qnx": [], - "@platforms//os:linux": ["-lpthread"], - }), strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager:__subpackages__"], deps = [ @@ -94,6 +89,10 @@ cc_library( ], features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", + linkopts = select({ + "@platforms//os:qnx": [], + "@platforms//os:linux": ["-lpthread"], + }), strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ @@ -194,7 +193,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ "@googletest//:gtest", "@score_baselibs//score/memory:string_literal", @@ -214,14 +213,13 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":applicationcontext_mock", "@score_baselibs//score/os/utils:signal", ], ) -# TODO: Introduce public alias cc_library( name = "lifecycle_mock", testonly = True, @@ -236,7 +234,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":applicationcontext_mock", "@googletest//:gtest", @@ -245,7 +243,6 @@ cc_library( ], ) -# TODO: Introduce public alias cc_library( name = "report_running_mock", testonly = True, @@ -257,7 +254,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ "@googletest//:gtest", ], From 819f3d0e43398383c0042a419e24fa62222b8728 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Mon, 15 Jun 2026 17:17:21 +0200 Subject: [PATCH 17/26] Fix UT --- score/launch_manager/lifecycle_client/BUILD | 2 +- .../src/runapplication_UT.cpp | 24 +++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 5678f0721..dd648a429 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -132,6 +132,7 @@ cc_library( "src/runapplication.h", "src/lifecyclemanager.h", "src/applicationcontext.h", + "src/application.h", ], features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", @@ -139,7 +140,6 @@ cc_library( tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ - ":application", ":report_running", "@score_baselibs//score/mw/log", "@score_baselibs//score/os:stdlib", diff --git a/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp index 432fd824d..1749c3a74 100644 --- a/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp +++ b/score/launch_manager/lifecycle_client/src/runapplication_UT.cpp @@ -26,17 +26,17 @@ using ::testing::Return; namespace { -class StubApplication : public score::mw::lifecycle::Application +class DummyApplication : public score::mw::lifecycle::Application { public: std::int32_t Initialize(const score::mw::lifecycle::ApplicationContext&) override { return 0; } std::int32_t Run(const score::cpp::stop_token&) override { return 0; } }; -class StubApplicationWithIntArg : public score::mw::lifecycle::Application +class DummyApplicationWithIntArg : public score::mw::lifecycle::Application { public: - explicit StubApplicationWithIntArg(int value) : value_{value} {} + explicit DummyApplicationWithIntArg(int value) : value_{value} {} std::int32_t Initialize(const score::mw::lifecycle::ApplicationContext&) override { return 0; } std::int32_t Run(const score::cpp::stop_token&) override { return 0; } int value_; @@ -73,7 +73,7 @@ TEST_F(RunTest, AsPosixProcessReturnsZeroExitCode) EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(0)); - score::mw::lifecycle::Run runner(kArgc, kArgv); + score::mw::lifecycle::Run runner(kArgc, kArgv); EXPECT_EQ(runner.AsPosixProcess(), 0); } @@ -83,7 +83,7 @@ TEST_F(RunTest, AsPosixProcessForwardsNonZeroExitCode) EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(42)); - score::mw::lifecycle::Run runner(kArgc, kArgv); + score::mw::lifecycle::Run runner(kArgc, kArgv); EXPECT_EQ(runner.AsPosixProcess(), 42); } @@ -96,7 +96,7 @@ TEST_F(RunTest, AsPosixProcessCreatesAndDestroysLifeCycleManager) EXPECT_CALL(lifecycle_mock_, dtor()).Times(1); EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(0)); - score::mw::lifecycle::Run runner(kArgc, kArgv); + score::mw::lifecycle::Run runner(kArgc, kArgv); runner.AsPosixProcess(); } @@ -108,11 +108,11 @@ TEST_F(RunTest, AsPosixProcessPassesCorrectApplicationTypeToRun) EXPECT_CALL(lifecycle_mock_, run(_, _)) .WillOnce([](score::mw::lifecycle::Application& app, const score::mw::lifecycle::ApplicationContext&) { - EXPECT_NE(dynamic_cast(&app), nullptr); + EXPECT_NE(dynamic_cast(&app), nullptr); return 0; }); - score::mw::lifecycle::Run runner(kArgc, kArgv); + score::mw::lifecycle::Run runner(kArgc, kArgv); runner.AsPosixProcess(); } @@ -123,7 +123,7 @@ TEST_F(RunTest, AsPosixProcessForwardsConstructorArgsToApplication) EXPECT_CALL(lifecycle_mock_, run(_, _)) .WillOnce([](score::mw::lifecycle::Application& app, const score::mw::lifecycle::ApplicationContext&) { - auto* typed_app = dynamic_cast(&app); + auto* typed_app = dynamic_cast(&app); EXPECT_NE(typed_app, nullptr); if (typed_app != nullptr) { @@ -132,7 +132,7 @@ TEST_F(RunTest, AsPosixProcessForwardsConstructorArgsToApplication) return 0; }); - score::mw::lifecycle::Run runner(kArgc, kArgv); + score::mw::lifecycle::Run runner(kArgc, kArgv); runner.AsPosixProcess(99); } @@ -144,7 +144,7 @@ TEST_F(RunTest, RunApplicationFreeFunctionDelegatesToAsPosixProcess) EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(7)); - const auto result = score::mw::lifecycle::run_application(kArgc, kArgv); + const auto result = score::mw::lifecycle::run_application(kArgc, kArgv); EXPECT_EQ(result, 7); } @@ -156,6 +156,6 @@ TEST_F(RunTest, RunConstructorPassesArgcArgvToApplicationContext) EXPECT_CALL(context_mock_, ctor(Eq(kArgc), Eq(static_cast(kArgv)))).Times(1); EXPECT_CALL(lifecycle_mock_, run(_, _)).WillOnce(Return(0)); - score::mw::lifecycle::Run runner(kArgc, kArgv); + score::mw::lifecycle::Run runner(kArgc, kArgv); runner.AsPosixProcess(); } From 9ddd21f20cd189fbe011a6d35c45e0142fca0e37 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 16 Jun 2026 08:11:01 +0200 Subject: [PATCH 18/26] Move dependencies --- score/launch_manager/lifecycle_client/BUILD | 42 +++++---------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index dd648a429..8c7f668cf 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -15,10 +15,6 @@ load("@score_baselibs//score/language/safecpp:toolchain_features.bzl", "COMPILER cc_library( name = "lifecycle_client", - copts = select({ - "@platforms//os:qnx": [], - "@platforms//os:linux": ["-pthread"], - }), include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager:__subpackages__"], @@ -29,11 +25,6 @@ cc_library( ":lifecycleclient_internal", ":runapplication", ":report_running", - "@score_baselibs//score/language/futurecpp", - "@score_baselibs//score/memory:string_literal", - "@score_baselibs//score/mw/log", - "@score_baselibs//score/os:stdlib", - "@score_baselibs//score/os/utils:signal", ], ) @@ -73,7 +64,6 @@ cc_library( visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":applicationcontext", - "@score_baselibs//score/language/futurecpp", ], ) @@ -89,14 +79,11 @@ cc_library( ], features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", - linkopts = select({ - "@platforms//os:qnx": [], - "@platforms//os:linux": ["-lpthread"], - }), strip_include_prefix = "/score/launch_manager/lifecycle_client/src", visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":applicationcontext", + "@score_baselibs//score/language/futurecpp", ], ) @@ -109,8 +96,16 @@ cc_library( "src/application.h", "src/lifecyclemanager.h", ], + copts = select({ + "@platforms//os:qnx": [], + "@platforms//os:linux": ["-pthread"], + }), features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", + linkopts = select({ + "@platforms//os:qnx": [], + "@platforms//os:linux": ["-lpthread"], + }), strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], @@ -201,25 +196,6 @@ cc_library( ], ) -cc_library( - name = "application_mock", - testonly = True, - srcs = [ - "src/application.cpp", - ], - hdrs = [ - "src/application.h", - ], - features = COMPILER_WARNING_FEATURES, - include_prefix = "score/mw/lifecycle", - strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager:__subpackages__"], - deps = [ - ":applicationcontext_mock", - "@score_baselibs//score/os/utils:signal", - ], -) - cc_library( name = "lifecycle_mock", testonly = True, From d0d2e9d43207876a26494a98a646c5f4f196a24d Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 16 Jun 2026 08:11:56 +0200 Subject: [PATCH 19/26] Remove application mock --- score/launch_manager/BUILD | 5 ----- 1 file changed, 5 deletions(-) diff --git a/score/launch_manager/BUILD b/score/launch_manager/BUILD index affad988b..ee5c6e558 100644 --- a/score/launch_manager/BUILD +++ b/score/launch_manager/BUILD @@ -86,11 +86,6 @@ alias( actual = "//score/launch_manager/lifecycle_client:applicationcontext_mock", ) -alias( - name = "application_mock_cc", - actual = "//score/launch_manager/lifecycle_client:application_mock", -) - alias( name = "lifecycle_mock_cc", actual = "//score/launch_manager/lifecycle_client:lifecycle_mock", From f8e54ec9ebd85aed8322fd73d4d8864c519e634f Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 16 Jun 2026 08:28:20 +0200 Subject: [PATCH 20/26] Align to internal branch --- .../launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs | 1 + score/launch_manager/lifecycle_client/BUILD | 1 + 2 files changed, 2 insertions(+) diff --git a/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs b/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs index 17697d5d8..030b94032 100644 --- a/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs +++ b/score/launch_manager/daemon/src/alive_monitor/rust/src/monitor.rs @@ -15,6 +15,7 @@ use libc::{c_char, c_uint, c_void}; use std::ffi::CString; use std::marker::PhantomData; +#[link(name = "am-lib")] unsafe extern "C" { fn score_lcm_monitor_initialize(instanceSpecifier: *const c_char) -> *mut c_void; fn score_lcm_monitor_deinitialize(instance: *mut c_void); diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 8c7f668cf..4b7521fb7 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -112,6 +112,7 @@ cc_library( deps = [ ":application", ":report_running", + "@score_baselibs//score/language/futurecpp", "@score_baselibs//score/mw/log", "@score_baselibs//score/os:stdlib", "@score_baselibs//score/os/utils:signal", From 8ba0395be44de04742beca5d6970a4f7028f7223 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 16 Jun 2026 08:55:21 +0200 Subject: [PATCH 21/26] Adjust visibility, get rid of unused aliases --- score/launch_manager/daemon/BUILD | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/score/launch_manager/daemon/BUILD b/score/launch_manager/daemon/BUILD index e7dd68935..c91020a10 100644 --- a/score/launch_manager/daemon/BUILD +++ b/score/launch_manager/daemon/BUILD @@ -12,18 +12,6 @@ # ******************************************************************************* load("@rules_cc//cc:defs.bzl", "cc_binary") -alias( - name = "error", - actual = "//score/launch_manager:error", - visibility = ["//visibility:public"], -) - -alias( - name = "error_event", - actual = "//score/launch_manager:error_event", - visibility = ["//visibility:public"], -) - cc_binary( name = "launch_manager", srcs = ["src/main.cpp"], @@ -31,7 +19,7 @@ cc_binary( "@platforms//os:qnx": ["-lsecpol"], "@platforms//os:linux": ["-lpthread"], }), - visibility = ["//visibility:public"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ "//score/launch_manager/daemon/src/alive_monitor", "//score/launch_manager/daemon/src/common:log", From 3be0092c0cde36e05ccc623116be2e4546adb75a Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 16 Jun 2026 08:56:47 +0200 Subject: [PATCH 22/26] Fix bazel formatting --- score/launch_manager/BUILD | 4 ++-- score/launch_manager/lifecycle_client/BUILD | 20 +++++++++---------- .../lifecycle_client/src/details/BUILD | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/score/launch_manager/BUILD b/score/launch_manager/BUILD index ee5c6e558..a36191049 100644 --- a/score/launch_manager/BUILD +++ b/score/launch_manager/BUILD @@ -47,9 +47,9 @@ alias( cc_library( name = "error", hdrs = ["execution_error.h"], - visibility = ["//score/launch_manager:__subpackages__"], include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager", + visibility = ["//score/launch_manager:__subpackages__"], deps = [ "@score_baselibs//score/result", ], @@ -61,9 +61,9 @@ cc_library( "execution_error.h", "execution_error_event.h", ], - visibility = ["//score/launch_manager:__subpackages__"], include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager", + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":error", "//score/launch_manager/daemon/src/common:identifier_hash", diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 4b7521fb7..12b1fe831 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -21,10 +21,10 @@ cc_library( deps = [ ":aasapplicationcontainer", ":application", - ":lifecyclemanager", ":lifecycleclient_internal", - ":runapplication", + ":lifecyclemanager", ":report_running", + ":runapplication", ], ) @@ -125,10 +125,10 @@ cc_library( "src/runapplication.cpp", ], hdrs = [ - "src/runapplication.h", - "src/lifecyclemanager.h", - "src/applicationcontext.h", "src/application.h", + "src/applicationcontext.h", + "src/lifecyclemanager.h", + "src/runapplication.h", ], features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", @@ -150,8 +150,8 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], tags = ["FUSA"], + visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ ":lifecycleclient_internal", ], @@ -171,8 +171,8 @@ cc_library( tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], deps = [ - "//score/launch_manager/lifecycle_client/src/details:lifecycle_client_impl", "//score/launch_manager:error_event", + "//score/launch_manager/lifecycle_client/src/details:lifecycle_client_impl", ], ) @@ -204,9 +204,9 @@ cc_library( "src/lifecyclemanagermock.cpp", ], hdrs = [ - "src/lifecyclemanagermock.h", - "src/lifecyclemanager.h", "src/application.h", + "src/lifecyclemanager.h", + "src/lifecyclemanagermock.h", ], features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", @@ -241,8 +241,8 @@ cc_test( name = "runapplication_UT", srcs = ["src/runapplication_UT.cpp"], deps = [ - ":runapplication", ":lifecycle_mock", + ":runapplication", "@googletest//:gtest_main", ], ) diff --git a/score/launch_manager/lifecycle_client/src/details/BUILD b/score/launch_manager/lifecycle_client/src/details/BUILD index 70eba0aa2..4cf280792 100644 --- a/score/launch_manager/lifecycle_client/src/details/BUILD +++ b/score/launch_manager/lifecycle_client/src/details/BUILD @@ -20,10 +20,10 @@ cc_library( strip_include_prefix = "/score/launch_manager/lifecycle_client/src/details", visibility = ["//score/launch_manager/lifecycle_client:__pkg__"], deps = [ + "//score/launch_manager:error_event", "//score/launch_manager/daemon/src/common:constants", "//score/launch_manager/daemon/src/common:log", "//score/launch_manager/daemon/src/osal:ipc_comms", - "//score/launch_manager:error_event", "@score_baselibs//score/result", ], ) From 690ecae752474936a9a09ad24c68f5d751ba55b0 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Tue, 16 Jun 2026 09:15:54 +0200 Subject: [PATCH 23/26] Remove pthreads --- score/launch_manager/lifecycle_client/BUILD | 8 -------- 1 file changed, 8 deletions(-) diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 12b1fe831..a1cde4a27 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -96,16 +96,8 @@ cc_library( "src/application.h", "src/lifecyclemanager.h", ], - copts = select({ - "@platforms//os:qnx": [], - "@platforms//os:linux": ["-pthread"], - }), features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", - linkopts = select({ - "@platforms//os:qnx": [], - "@platforms//os:linux": ["-lpthread"], - }), strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], From b29e374516e2cdb7dba259d07e29d4d5cb20987f Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 17 Jun 2026 14:08:19 +0200 Subject: [PATCH 24/26] Minimal changes to make tests in config_management happy --- score/launch_manager/BUILD | 10 ++++++++++ score/launch_manager/lifecycle_client/BUILD | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/score/launch_manager/BUILD b/score/launch_manager/BUILD index a36191049..ab3ce9d76 100644 --- a/score/launch_manager/BUILD +++ b/score/launch_manager/BUILD @@ -95,3 +95,13 @@ alias( name = "report_running_mock_cc", actual = "//score/launch_manager/lifecycle_client:report_running_mock", ) + +alias( + name = "application_cc", + actual = "//score/launch_manager/lifecycle_client:application", +) + +alias( + name = "applicationcontext_cc", + actual = "//score/launch_manager/lifecycle_client:applicationcontext", +) \ No newline at end of file diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index a1cde4a27..07bca058d 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -40,7 +40,7 @@ cc_library( include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ "@score_baselibs//score/memory:string_literal", "@score_baselibs//score/mw/log", @@ -61,7 +61,7 @@ cc_library( include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":applicationcontext", ], From dddfcd2d8a877398e873f73facde690bed932016 Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 17 Jun 2026 14:31:29 +0200 Subject: [PATCH 25/26] Make applicationcontainer_cc public --- score/launch_manager/BUILD | 5 +++++ score/launch_manager/lifecycle_client/BUILD | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/score/launch_manager/BUILD b/score/launch_manager/BUILD index ab3ce9d76..72f5cfdd4 100644 --- a/score/launch_manager/BUILD +++ b/score/launch_manager/BUILD @@ -104,4 +104,9 @@ alias( alias( name = "applicationcontext_cc", actual = "//score/launch_manager/lifecycle_client:applicationcontext", +) + +alias( + name = "applicationcontainer_cc", + actual = "//score/launch_manager/lifecycle_client:applicationcontainer", ) \ No newline at end of file diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 07bca058d..8346e71d5 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -80,7 +80,7 @@ cc_library( features = COMPILER_WARNING_FEATURES, include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":applicationcontext", "@score_baselibs//score/language/futurecpp", From 64fe5369bae0f5c49168da1f369e65e362c27b3d Mon Sep 17 00:00:00 2001 From: Timo Steuerwald Date: Wed, 17 Jun 2026 16:33:04 +0200 Subject: [PATCH 26/26] Make everything public for now to maintain full backward compatibility --- score/launch_manager/BUILD | 23 ++++++++++++++++++--- score/launch_manager/lifecycle_client/BUILD | 6 +++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/score/launch_manager/BUILD b/score/launch_manager/BUILD index 72f5cfdd4..44da3fc34 100644 --- a/score/launch_manager/BUILD +++ b/score/launch_manager/BUILD @@ -96,6 +96,12 @@ alias( actual = "//score/launch_manager/lifecycle_client:report_running_mock", ) +# BEGIN: Fine granular targets only needed for testing purposes +alias( + name = "aasapplicationcontainer_cc", + actual = "//score/launch_manager/lifecycle_client:aasapplicationcontainer", +) + alias( name = "application_cc", actual = "//score/launch_manager/lifecycle_client:application", @@ -107,6 +113,17 @@ alias( ) alias( - name = "applicationcontainer_cc", - actual = "//score/launch_manager/lifecycle_client:applicationcontainer", -) \ No newline at end of file + name = "lifecyclemanager_cc", + actual = "//score/launch_manager/lifecycle_client:lifecyclemanager", +) + +alias( + name = "report_running_cc", + actual = "//score/launch_manager/lifecycle_client:report_running", +) + +alias( + name = "runapplication_cc", + actual = "//score/launch_manager/lifecycle_client:runapplication", +) +# END: Fine granular targets only needed for testing purposes diff --git a/score/launch_manager/lifecycle_client/BUILD b/score/launch_manager/lifecycle_client/BUILD index 8346e71d5..8598e7955 100644 --- a/score/launch_manager/lifecycle_client/BUILD +++ b/score/launch_manager/lifecycle_client/BUILD @@ -100,7 +100,7 @@ cc_library( include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":application", ":report_running", @@ -126,7 +126,7 @@ cc_library( include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":report_running", "@score_baselibs//score/mw/log", @@ -143,7 +143,7 @@ cc_library( include_prefix = "score/mw/lifecycle", strip_include_prefix = "/score/launch_manager/lifecycle_client/src", tags = ["FUSA"], - visibility = ["//score/launch_manager/lifecycle_client:__subpackages__"], + visibility = ["//score/launch_manager:__subpackages__"], deps = [ ":lifecycleclient_internal", ],