Skip to content

Commit 50eed10

Browse files
committed
add new test for precedence in tracer_config
1 parent 3b16f48 commit 50eed10

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

test/test_tracer_config.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,3 +1463,73 @@ TRACER_CONFIG_TEST("baggage") {
14631463
false);
14641464
}
14651465
}
1466+
1467+
TRACER_CONFIG_TEST("telemetry products contain configuration precedence") {
1468+
// Verifies that finalize_config produces telemetry products with
1469+
// configurations in the correct precedence order. Each configuration source
1470+
// (DEFAULT, CODE, ENVIRONMENT_VARIABLE) is tracked separately and will
1471+
// receive sequential seq_id values (1, 2, 3, etc.) when sent to telemetry.
1472+
1473+
SECTION("all three sources: DEFAULT -> CODE -> ENVIRONMENT_VARIABLE") {
1474+
TracerConfig config;
1475+
config.service = "code-service";
1476+
EnvGuard env{"DD_SERVICE", "env-service"};
1477+
1478+
auto finalized = finalize_config(config);
1479+
REQUIRE(finalized);
1480+
1481+
const auto& configs = finalized->telemetry.products[0].configurations.at(
1482+
ConfigName::SERVICE_NAME);
1483+
1484+
// All three sources in order (will receive seq_id 1, 2, 3)
1485+
REQUIRE(configs.size() == 3);
1486+
CHECK(configs[0].origin == ConfigMetadata::Origin::DEFAULT);
1487+
CHECK(configs[1].origin == ConfigMetadata::Origin::CODE);
1488+
CHECK(configs[1].value == "code-service");
1489+
CHECK(configs[2].origin == ConfigMetadata::Origin::ENVIRONMENT_VARIABLE);
1490+
CHECK(configs[2].value == "env-service");
1491+
1492+
// Metadata contains final value (highest precedence)
1493+
CHECK(finalized->metadata.at(ConfigName::SERVICE_NAME).value ==
1494+
"env-service");
1495+
}
1496+
1497+
SECTION("two sources: CODE -> ENVIRONMENT_VARIABLE (no default)") {
1498+
TracerConfig config;
1499+
config.service = "test";
1500+
config.environment = "dev";
1501+
EnvGuard env{"DD_ENV", "prod"};
1502+
1503+
auto finalized = finalize_config(config);
1504+
REQUIRE(finalized);
1505+
1506+
const auto& configs = finalized->telemetry.products[0].configurations.at(
1507+
ConfigName::SERVICE_ENV);
1508+
1509+
// Two sources (will receive seq_id 1, 2)
1510+
REQUIRE(configs.size() == 2);
1511+
CHECK(configs[0].origin == ConfigMetadata::Origin::CODE);
1512+
CHECK(configs[0].value == "dev");
1513+
CHECK(configs[1].origin == ConfigMetadata::Origin::ENVIRONMENT_VARIABLE);
1514+
CHECK(configs[1].value == "prod");
1515+
1516+
CHECK(finalized->metadata.at(ConfigName::SERVICE_ENV).value == "prod");
1517+
}
1518+
1519+
SECTION("single source: CODE only") {
1520+
TracerConfig config;
1521+
config.service = "test";
1522+
config.version = "1.2.3";
1523+
1524+
auto finalized = finalize_config(config);
1525+
REQUIRE(finalized);
1526+
1527+
const auto& configs = finalized->telemetry.products[0].configurations.at(
1528+
ConfigName::SERVICE_VERSION);
1529+
1530+
// Single source (will receive seq_id 1)
1531+
REQUIRE(configs.size() == 1);
1532+
CHECK(configs[0].origin == ConfigMetadata::Origin::CODE);
1533+
CHECK(configs[0].value == "1.2.3");
1534+
}
1535+
}

0 commit comments

Comments
 (0)