@@ -191,11 +191,16 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry lifecycle") {
191191 product.name = Product::Name::tracing;
192192 product.enabled = true ;
193193 product.version = tracer_version;
194- product.configurations = std::unordered_map<ConfigName, ConfigMetadata>{
195- {ConfigName::SERVICE_NAME,
196- ConfigMetadata (ConfigName::SERVICE_NAME, " foo" ,
197- ConfigMetadata::Origin::CODE)},
198- };
194+ product.configurations =
195+ std::unordered_map<ConfigName, std::vector<ConfigMetadata>>{
196+ {ConfigName::SERVICE_NAME,
197+ {ConfigMetadata (ConfigName::SERVICE_NAME, " default-service" ,
198+ ConfigMetadata::Origin::DEFAULT),
199+ ConfigMetadata (ConfigName::SERVICE_NAME, " code-service" ,
200+ ConfigMetadata::Origin::CODE),
201+ ConfigMetadata (ConfigName::SERVICE_NAME, " env-service" ,
202+ ConfigMetadata::Origin::ENVIRONMENT_VARIABLE)}},
203+ };
199204
200205 Configuration cfg;
201206 cfg.products .emplace_back (std::move (product));
@@ -218,18 +223,38 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry lifecycle") {
218223
219224 auto cfg_payload = app_started_payload[" payload" ][" configuration" ];
220225 REQUIRE (cfg_payload.is_array ());
221- REQUIRE (cfg_payload.size () == 1 );
226+ REQUIRE (cfg_payload.size () == 3 );
222227
228+ // Each configuration source is sent with an incrementing seq_id
223229 // clang-format off
224- const auto expected_conf = nlohmann::json ({
225- {" name" , " service" },
226- {" value" , " foo" },
227- {" seq_id" , 1 },
228- {" origin" , " code" },
229- });
230+ const std::unordered_map<std::string, nlohmann::json> expected_configs{
231+ {" default-service" , nlohmann::json ({
232+ {" name" , " service" },
233+ {" value" , " default-service" },
234+ {" seq_id" , 1 },
235+ {" origin" , " default" },
236+ })},
237+ {" code-service" , nlohmann::json ({
238+ {" name" , " service" },
239+ {" value" , " code-service" },
240+ {" seq_id" , 2 },
241+ {" origin" , " code" },
242+ })},
243+ {" env-service" , nlohmann::json ({
244+ {" name" , " service" },
245+ {" value" , " env-service" },
246+ {" seq_id" , 3 },
247+ {" origin" , " env_var" },
248+ })},
249+ };
230250 // clang-format on
231251
232- CHECK (cfg_payload[0 ] == expected_conf);
252+ // Verify all three configuration sources are present
253+ for (const auto & conf : cfg_payload) {
254+ auto value = conf[" value" ].get <std::string>();
255+ REQUIRE (expected_configs.count (value) == 1 );
256+ CHECK (conf == expected_configs.at (value));
257+ }
233258
234259 SECTION (" generates a configuration change event" ) {
235260 SECTION (" empty configuration do not generate a valid payload" ) {
@@ -268,7 +293,8 @@ TELEMETRY_IMPLEMENTATION_TEST("Tracer telemetry lifecycle") {
268293 nlohmann::json{
269294 {" name" , " service" },
270295 {" value" , " increase seq_id" },
271- {" seq_id" , 2 },
296+ {" seq_id" ,
297+ 4 }, // seq_id 4 (after DEFAULT=1, CODE=2, ENV=3)
272298 {" origin" , " env_var" },
273299 },
274300 },
0 commit comments