From dc4ec5d7a4d5e85f24b9ce9c0c416e7545b44277 Mon Sep 17 00:00:00 2001 From: qxz6ezp Date: Tue, 4 Aug 2026 21:20:44 +0530 Subject: [PATCH] feat(deps): add score_config_management to reference integration Pin score_config_management to 49f26b74 and add a patch (sourced from config_management PR#37) fixing the ProxyFuture API migration and removing SOCAL/component_tests targets not present in the OSS build. --- MODULE.bazel.lock | 2 + .../score_modules_target_sw.MODULE.bazel | 11 ++ known_good.json | 20 ++ ...communication-api-and-remove-targets.patch | 186 ++++++++++++++++++ patches/config_management/BUILD | 0 5 files changed, 219 insertions(+) create mode 100644 patches/config_management/001-fix-communication-api-and-remove-targets.patch create mode 100644 patches/config_management/BUILD diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index c9eb12e0be6..6bebc35cfd4 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -274,6 +274,7 @@ "https://bcr.bazel.build/modules/grpc-java/1.62.2/MODULE.bazel": "99b8771e8c7cacb130170fed2a10c9e8fed26334a93e73b42d2953250885a158", "https://bcr.bazel.build/modules/grpc-java/1.66.0/MODULE.bazel": "86ff26209fac846adb89db11f3714b3dc0090fb2fb81575673cc74880cda4e7e", "https://bcr.bazel.build/modules/grpc-java/1.69.0/MODULE.bazel": "53887af6a00b3b406d70175d3d07e84ea9362016ff55ea90b9185f0227bfaf98", + "https://bcr.bazel.build/modules/grpc-java/1.70.0/MODULE.bazel": "cae8776b751f03c7984f651b00f604c297d7e759f1ce97da8fbf2fc7ce6cd226", "https://bcr.bazel.build/modules/grpc-java/1.75.0.bcr.1/MODULE.bazel": "ba818f142b40cc7fb82fbdc8a9f7475b6783cd7849f9a71da814bacaf0acfd74", "https://bcr.bazel.build/modules/grpc-java/1.78.0/MODULE.bazel": "48f790fbb95625245295df1283e0dba344a4e30b4a9a9cefbabfa92bd84f3691", "https://bcr.bazel.build/modules/grpc-java/1.78.0/source.json": "36c3a83c5ddeb864d7a4b97801456c464077f80a8216354ac1a71f7ce8699771", @@ -782,6 +783,7 @@ "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.62.2/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.66.0/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.69.0/MODULE.bazel": "not found", + "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.70.0/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.75.0.bcr.1/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-java/1.78.0/MODULE.bazel": "not found", "https://raw.githubusercontent.com/eclipse-score/bazel_registry/main/modules/grpc-proto/0.0.0-20240627-ec30f58/MODULE.bazel": "not found", diff --git a/bazel_common/score_modules_target_sw.MODULE.bazel b/bazel_common/score_modules_target_sw.MODULE.bazel index 96ecbab5e35..72faa264d9c 100644 --- a/bazel_common/score_modules_target_sw.MODULE.bazel +++ b/bazel_common/score_modules_target_sw.MODULE.bazel @@ -94,3 +94,14 @@ git_override( ], remote = "https://github.com/eclipse-score/time.git", ) + +bazel_dep(name = "score_config_management") +git_override( + module_name = "score_config_management", + commit = "49f26b741defe9a7416a75fa8840098f4d28b02e", + patch_strip = 1, + patches = [ + "patches/config_management/001-fix-communication-api-and-remove-targets.patch", + ], + remote = "https://github.com/eclipse-score/config_management.git", +) diff --git a/known_good.json b/known_good.json index 8e671f5c393..037a6d2436a 100644 --- a/known_good.json +++ b/known_good.json @@ -135,6 +135,26 @@ "cpp" ] } + }, + "score_config_management": { + "repo": "https://github.com/eclipse-score/config_management.git", + "hash": "49f26b741defe9a7416a75fa8840098f4d28b02e", + "bazel_patches": [ + "patches/config_management/001-fix-communication-api-and-remove-targets.patch" + ], + "metadata": { + "code_root_path": "//score/config_management/...", + "exclude_test_targets": [ + "//score/config_management/config_daemon/code/factory/details:unit_test_mw_com", + "//score/config_management/config_provider/code/config_provider/factory:unit_tests_mw_com", + "//score/config_management/dependability:config_daemon_component", + "//score/config_management/dependability:config_management", + "//score/config_management/dependability:config_provider_component" + ], + "langs": [ + "cpp" + ] + } } }, "tooling": { diff --git a/patches/config_management/001-fix-communication-api-and-remove-targets.patch b/patches/config_management/001-fix-communication-api-and-remove-targets.patch new file mode 100644 index 00000000000..6c0cf44e049 --- /dev/null +++ b/patches/config_management/001-fix-communication-api-and-remove-targets.patch @@ -0,0 +1,186 @@ +diff --git a/score/config_management/config_daemon/code/services/details/mw_com/internal_config_provider_service_impl.cpp b/score/config_management/config_daemon/code/services/details/mw_com/internal_config_provider_service_impl.cpp +index 484ae0e..a442b8f 100644 +--- a/score/config_management/config_daemon/code/services/details/mw_com/internal_config_provider_service_impl.cpp ++++ b/score/config_management/config_daemon/code/services/details/mw_com/internal_config_provider_service_impl.cpp +@@ -110,28 +110,26 @@ void InternalConfigProviderService::StartService() + { + mw::log::LogDebug() << "InternalConfigProviderService::" << __func__; + auto handler = +- [this](mw_com_icp_types::ParameterSetName parameter_set_name) -> mw_com_icp_types::ParameterSetContent { ++ [this](mw_com_icp_types::ParameterSetContent& result, ++ const mw_com_icp_types::ParameterSetName& parameter_set_name) { + // Truncate at first null terminator to avoid trailing nulls + auto* null_terminator = std::find(parameter_set_name.begin(), parameter_set_name.end(), '\0'); + std::string param_name{parameter_set_name.begin(), null_terminator}; + auto param_set_result = internal_config_provider_service_reactor_->GetParameterSet(param_name); +- mw_com_icp_types::ParameterSetContent ret_val{}; + + if (param_set_result.has_value() == true) + { + const auto& value = param_set_result.value(); +- // Only copy actual content, limiting to ret_val size +- const std::size_t copy_size = std::min(value.size(), ret_val.size()); +- std::copy_n(value.begin(), copy_size, ret_val.begin()); ++ // Only copy actual content, limiting to result size ++ const std::size_t copy_size = std::min(value.size(), result.size()); ++ std::copy_n(value.begin(), copy_size, result.begin()); + } + else + { + logger_.LogError() << "InternalConfigProviderService::" << __func__ << "Key not found"; + constexpr std::string_view kErrorMsg = "Key not found"; +- std::copy(kErrorMsg.begin(), kErrorMsg.end(), ret_val.begin()); ++ std::copy(kErrorMsg.begin(), kErrorMsg.end(), result.begin()); + } +- +- return ret_val; + }; + std::ignore = icp_skeleton_.get_parameterset.RegisterHandler(std::move(handler)); + const auto offer_service_result = icp_skeleton_.OfferService(); +diff --git a/score/config_management/config_provider/BUILD b/score/config_management/config_provider/BUILD +index e0d763b..0dd66b9 100644 +--- a/score/config_management/config_provider/BUILD ++++ b/score/config_management/config_provider/BUILD +@@ -14,13 +14,6 @@ alias( + visibility = ["//visibility:public"], + ) + +-cc_library( +- name = "config_provider_factory_impl", +- tags = ["FUSA"], +- visibility = ["//visibility:public"], +- deps = ["//score/config_management/config_provider/code/config_provider/factory:factory_socal_r20_11"], +-) +- + cc_library( + name = "config_provider_mw_com", + tags = ["FUSA"], +@@ -28,12 +21,6 @@ cc_library( + deps = ["//score/config_management/config_provider/code/config_provider/factory:factory_mw_com"], + ) + +-alias( +- name = "config_provider_factory_for_unit_test", +- actual = "//score/config_management/config_provider/code/config_provider/factory:factory_socal_r20_11_for_unit_tests", +- visibility = ["//visibility:public"], +-) +- + cc_unit_test_suites_for_host_and_qnx( + name = "unit_tests", + test_suites_from_sub_packages = [ +@@ -45,14 +32,6 @@ cc_unit_test_suites_for_host_and_qnx( + visibility = ["//score/config_management:__pkg__"], + ) + +-test_suite( +- name = "component_tests", +- tests = [ +- "//score/config_management/config_provider/test/sct:component_tests", +- ], +- visibility = ["//score/config_management:__pkg__"], +-) +- + clang_tidy_extra_checks( + name = "clang_tidy_extra_checks", + extra_features = [ +diff --git a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp +index 6784355..c6f05ea 100644 +--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp ++++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.cpp +@@ -46,7 +46,7 @@ std::string GetParameterSetValue(mw::log::Logger& logger, const ParameterSet& pa + } // namespace + + ConfigProviderImpl::ConfigProviderImpl( +- mw::service::OptionalProxyData proxy_data, ++ mw::service::ProxyFuture> proxy_future, + score::cpp::stop_token user_stop_token, + score::cpp::pmr::memory_resource* const memory_resource, + score::cpp::optional max_samples_limit, +@@ -78,22 +78,23 @@ ConfigProviderImpl::ConfigProviderImpl( + score::cpp::ignore = proxy_available_thread_.emplace( + [this](const score::cpp::stop_token jthread_stop_token, + decltype(callback) notification_callback, +- decltype(proxy_data) pd) mutable { +- auto proxy_holder = pd.GetProxyFuture().Get(jthread_stop_token); +- pd.StopServiceDiscovery(); +- if (proxy_holder.has_value()) ++ decltype(proxy_future) pf) mutable { ++ auto proxy_holder = pf.Get(jthread_stop_token); ++ if (proxy_holder.has_value() && (proxy_holder.value() != nullptr)) + { + logger_.LogInfo() << "ProxyAvailableThread: InternalConfigProvider proxy is connected"; + SetupInternalConfigProvider( +- std::move(proxy_holder).value(), std::move(notification_callback), jthread_stop_token); ++ std::shared_ptr(std::move(proxy_holder).value()), ++ std::move(notification_callback), ++ jthread_stop_token); + } + else + { +- logger_.LogInfo() << "ProxyAvailableThread: No proxy found: " << proxy_holder.error().Message(); ++ logger_.LogInfo() << "ProxyAvailableThread: No proxy found"; + } + }, + std::move(callback), +- std::move(proxy_data)); ++ std::move(proxy_future)); + + score::cpp::ignore = stop_callback_.emplace(user_stop_token, [this]() { + score::cpp::ignore = proxy_available_thread_->request_stop(); +diff --git a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h +index 508555c..7630e60 100644 +--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h ++++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl.h +@@ -24,6 +24,7 @@ + + #include "score/concurrency/condition_variable.h" + #include "score/mw/service/proxy_data.h" ++#include "score/mw/service/proxy_future.h" + + #include + #include +@@ -87,7 +88,7 @@ class ConfigProviderImpl final : public ConfigProvider + bool IsAwaitingProxyConnection() const noexcept; + + ConfigProviderImpl( +- mw::service::OptionalProxyData proxy_data, ++ mw::service::ProxyFuture> proxy_future, + score::cpp::stop_token user_stop_token, + score::cpp::pmr::memory_resource* const memory_resource, + score::cpp::optional max_samples_limit, +diff --git a/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp b/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp +index 8bd5f2f..ed559ea 100644 +--- a/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp ++++ b/score/config_management/config_provider/code/config_provider/details/config_provider_impl_test.cpp +@@ -182,7 +182,7 @@ class ConfigProviderTest : public ::testing::Test + auto CreateConfigProviderWithAvailableCallback(IsAvailableNotificationCallback callback) + { + return std::make_unique( +- mw::service::OptionalProxyData{promise_.GetInterruptibleFuture().value()}, ++ promise_.GetInterruptibleFuture().value(), + stop_source_.get_token(), + score::cpp::pmr::get_default_resource(), + score::cpp::nullopt, // default max_samples_limit +@@ -196,7 +196,7 @@ class ConfigProviderTest : public ::testing::Test + IsAvailableNotificationCallback callback) + { + return std::make_unique( +- mw::service::OptionalProxyData{promise_.GetInterruptibleFuture().value()}, ++ promise_.GetInterruptibleFuture().value(), + stop_source_.get_token(), + score::cpp::pmr::get_default_resource(), + score::cpp::nullopt, +diff --git a/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h b/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h +index 5aeca26..123868b 100644 +--- a/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h ++++ b/score/config_management/config_provider/code/config_provider/factory/factory_mw_com.h +@@ -182,7 +182,8 @@ class ConfigProviderFactory final + logger_.LogDebug() << "ConfigProviderFactory:: Create ConfigProviderImpl"; + auto config_provider = score::cpp::pmr::make_unique( + memory_resource, +- proxy_container.template Extract>(), ++ static_cast>>( ++ proxy_container.template Extract>()), + token, + memory_resource, + max_samples_limit, diff --git a/patches/config_management/BUILD b/patches/config_management/BUILD new file mode 100644 index 00000000000..e69de29bb2d