Skip to content

Commit db274a3

Browse files
committed
tests: internal: routing: extend tests for routing paths
Refreshed router tests to populate the new metadata, added coverage proving distinct routing for duplicate plugin inputs without aliases, registered the test case, and kept conditional routing fixtures in sync. Signed-off-by: Eduardo Silva <eduardo@chronosphere.io>
1 parent 00baa18 commit db274a3

File tree

2 files changed

+296
-0
lines changed

2 files changed

+296
-0
lines changed

tests/internal/conditional_routing.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,8 @@ static void setup_conditional_routes(struct flb_input_routes *input_routes,
883883
cfl_list_init(&input_routes->_head);
884884
cfl_list_init(&input_routes->routes);
885885
input_routes->input_name = flb_sds_create("tail");
886+
input_routes->plugin_name = flb_sds_create("tail");
887+
input_routes->has_alias = FLB_FALSE;
886888

887889
/* Route 1: info_logs */
888890
memset(route1, 0, sizeof(struct flb_route));
@@ -971,6 +973,7 @@ static void cleanup_conditional_routing_instances(struct flb_config *config,
971973
flb_sds_destroy(output2->alias);
972974
flb_sds_destroy(output3->alias);
973975
flb_sds_destroy(input_routes->input_name);
976+
flb_sds_destroy(input_routes->plugin_name);
974977
flb_sds_destroy(route1->name);
975978
flb_sds_destroy(route2->name);
976979
flb_sds_destroy(route3->name);

tests/internal/router_config.c

Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,8 @@ void test_router_apply_config_success()
11631163
cfl_list_init(&input_routes._head);
11641164
cfl_list_init(&input_routes.routes);
11651165
input_routes.input_name = flb_sds_create("dummy");
1166+
input_routes.plugin_name = flb_sds_create("dummy");
1167+
input_routes.has_alias = FLB_FALSE;
11661168
cfl_list_add(&input_routes._head, &config.input_routes);
11671169

11681170
memset(&route, 0, sizeof(route));
@@ -1188,6 +1190,7 @@ void test_router_apply_config_success()
11881190
flb_sds_destroy(input.alias);
11891191
flb_sds_destroy(output.alias);
11901192
flb_sds_destroy(input_routes.input_name);
1193+
flb_sds_destroy(input_routes.plugin_name);
11911194
flb_sds_destroy(route.name);
11921195
flb_sds_destroy(route_output.name);
11931196
}
@@ -1210,6 +1213,8 @@ void test_router_apply_config_missing_output()
12101213
cfl_list_init(&input_routes._head);
12111214
cfl_list_init(&input_routes.routes);
12121215
input_routes.input_name = flb_sds_create("dummy");
1216+
input_routes.plugin_name = flb_sds_create("dummy");
1217+
input_routes.has_alias = FLB_FALSE;
12131218
cfl_list_add(&input_routes._head, &config.input_routes);
12141219

12151220
memset(&route, 0, sizeof(route));
@@ -1234,10 +1239,296 @@ void test_router_apply_config_missing_output()
12341239
flb_sds_destroy(input.alias);
12351240
flb_sds_destroy(output.alias);
12361241
flb_sds_destroy(input_routes.input_name);
1242+
flb_sds_destroy(input_routes.plugin_name);
12371243
flb_sds_destroy(route.name);
12381244
flb_sds_destroy(route_output.name);
12391245
}
12401246

1247+
void test_router_apply_config_uses_input_alias()
1248+
{
1249+
struct flb_config config;
1250+
struct flb_input_instance input_one;
1251+
struct flb_input_instance input_two;
1252+
struct flb_output_instance output_one;
1253+
struct flb_output_instance output_two;
1254+
struct flb_input_routes routes_one;
1255+
struct flb_input_routes routes_two;
1256+
struct flb_route route_one;
1257+
struct flb_route route_two;
1258+
struct flb_route_output route_output_one;
1259+
struct flb_route_output route_output_two;
1260+
struct flb_input_plugin input_plugin;
1261+
struct flb_output_plugin output_plugin_one;
1262+
struct flb_output_plugin output_plugin_two;
1263+
struct flb_router_path *path;
1264+
1265+
memset(&config, 0, sizeof(config));
1266+
mk_list_init(&config.inputs);
1267+
mk_list_init(&config.outputs);
1268+
cfl_list_init(&config.input_routes);
1269+
1270+
memset(&input_one, 0, sizeof(input_one));
1271+
mk_list_init(&input_one._head);
1272+
cfl_list_init(&input_one.routes_direct);
1273+
cfl_list_init(&input_one.routes);
1274+
mk_list_init(&input_one.tasks);
1275+
mk_list_init(&input_one.chunks);
1276+
mk_list_init(&input_one.collectors);
1277+
snprintf(input_one.name, sizeof(input_one.name), "dummy.0");
1278+
input_one.alias = flb_sds_create("input_one");
1279+
input_one.p = &input_plugin;
1280+
input_one.config = &config;
1281+
mk_list_add(&input_one._head, &config.inputs);
1282+
1283+
memset(&input_two, 0, sizeof(input_two));
1284+
mk_list_init(&input_two._head);
1285+
cfl_list_init(&input_two.routes_direct);
1286+
cfl_list_init(&input_two.routes);
1287+
mk_list_init(&input_two.tasks);
1288+
mk_list_init(&input_two.chunks);
1289+
mk_list_init(&input_two.collectors);
1290+
snprintf(input_two.name, sizeof(input_two.name), "dummy.1");
1291+
input_two.alias = flb_sds_create("input_two");
1292+
input_two.p = &input_plugin;
1293+
input_two.config = &config;
1294+
mk_list_add(&input_two._head, &config.inputs);
1295+
1296+
memset(&input_plugin, 0, sizeof(input_plugin));
1297+
input_plugin.name = "dummy";
1298+
1299+
memset(&output_one, 0, sizeof(output_one));
1300+
mk_list_init(&output_one._head);
1301+
mk_list_init(&output_one.properties);
1302+
mk_list_init(&output_one.net_properties);
1303+
snprintf(output_one.name, sizeof(output_one.name), "stdout.0");
1304+
output_one.alias = flb_sds_create("print_one");
1305+
output_one.event_type = FLB_OUTPUT_LOGS;
1306+
output_one.p = &output_plugin_one;
1307+
mk_list_add(&output_one._head, &config.outputs);
1308+
1309+
memset(&output_two, 0, sizeof(output_two));
1310+
mk_list_init(&output_two._head);
1311+
mk_list_init(&output_two.properties);
1312+
mk_list_init(&output_two.net_properties);
1313+
snprintf(output_two.name, sizeof(output_two.name), "stdout.1");
1314+
output_two.alias = flb_sds_create("print_two");
1315+
output_two.event_type = FLB_OUTPUT_LOGS;
1316+
output_two.p = &output_plugin_two;
1317+
mk_list_add(&output_two._head, &config.outputs);
1318+
1319+
memset(&output_plugin_one, 0, sizeof(output_plugin_one));
1320+
output_plugin_one.name = "stdout";
1321+
memset(&output_plugin_two, 0, sizeof(output_plugin_two));
1322+
output_plugin_two.name = "stdout";
1323+
1324+
memset(&routes_one, 0, sizeof(routes_one));
1325+
cfl_list_init(&routes_one._head);
1326+
cfl_list_init(&routes_one.routes);
1327+
routes_one.input_name = flb_sds_create("input_one");
1328+
routes_one.plugin_name = flb_sds_create("dummy");
1329+
routes_one.has_alias = FLB_TRUE;
1330+
cfl_list_add(&routes_one._head, &config.input_routes);
1331+
1332+
memset(&route_one, 0, sizeof(route_one));
1333+
cfl_list_init(&route_one._head);
1334+
cfl_list_init(&route_one.outputs);
1335+
route_one.name = flb_sds_create("route_one");
1336+
route_one.signals = FLB_ROUTER_SIGNAL_LOGS;
1337+
cfl_list_add(&route_one._head, &routes_one.routes);
1338+
1339+
memset(&route_output_one, 0, sizeof(route_output_one));
1340+
cfl_list_init(&route_output_one._head);
1341+
route_output_one.name = flb_sds_create("print_one");
1342+
cfl_list_add(&route_output_one._head, &route_one.outputs);
1343+
1344+
memset(&routes_two, 0, sizeof(routes_two));
1345+
cfl_list_init(&routes_two._head);
1346+
cfl_list_init(&routes_two.routes);
1347+
routes_two.input_name = flb_sds_create("input_two");
1348+
routes_two.plugin_name = flb_sds_create("dummy");
1349+
routes_two.has_alias = FLB_TRUE;
1350+
cfl_list_add(&routes_two._head, &config.input_routes);
1351+
1352+
memset(&route_two, 0, sizeof(route_two));
1353+
cfl_list_init(&route_two._head);
1354+
cfl_list_init(&route_two.outputs);
1355+
route_two.name = flb_sds_create("route_two");
1356+
route_two.signals = FLB_ROUTER_SIGNAL_LOGS;
1357+
cfl_list_add(&route_two._head, &routes_two.routes);
1358+
1359+
memset(&route_output_two, 0, sizeof(route_output_two));
1360+
cfl_list_init(&route_output_two._head);
1361+
route_output_two.name = flb_sds_create("print_two");
1362+
cfl_list_add(&route_output_two._head, &route_two.outputs);
1363+
1364+
TEST_CHECK(flb_router_apply_config(&config) == 0);
1365+
1366+
TEST_CHECK(cfl_list_size(&input_one.routes_direct) == 1);
1367+
path = cfl_list_entry(input_one.routes_direct.next, struct flb_router_path, _head);
1368+
TEST_CHECK(path->ins == &output_one);
1369+
1370+
TEST_CHECK(cfl_list_size(&input_two.routes_direct) == 1);
1371+
path = cfl_list_entry(input_two.routes_direct.next, struct flb_router_path, _head);
1372+
TEST_CHECK(path->ins == &output_two);
1373+
1374+
flb_router_exit(&config);
1375+
1376+
flb_sds_destroy(input_one.alias);
1377+
flb_sds_destroy(input_two.alias);
1378+
flb_sds_destroy(output_one.alias);
1379+
flb_sds_destroy(output_two.alias);
1380+
flb_sds_destroy(routes_one.input_name);
1381+
flb_sds_destroy(routes_one.plugin_name);
1382+
flb_sds_destroy(routes_two.input_name);
1383+
flb_sds_destroy(routes_two.plugin_name);
1384+
flb_sds_destroy(route_one.name);
1385+
flb_sds_destroy(route_two.name);
1386+
flb_sds_destroy(route_output_one.name);
1387+
flb_sds_destroy(route_output_two.name);
1388+
}
1389+
1390+
void test_router_apply_config_distinct_instances_without_alias()
1391+
{
1392+
struct flb_config config;
1393+
struct flb_input_instance input_one;
1394+
struct flb_input_instance input_two;
1395+
struct flb_output_instance output_one;
1396+
struct flb_output_instance output_two;
1397+
struct flb_input_routes routes_one;
1398+
struct flb_input_routes routes_two;
1399+
struct flb_route route_one;
1400+
struct flb_route route_two;
1401+
struct flb_route_output route_output_one;
1402+
struct flb_route_output route_output_two;
1403+
struct flb_input_plugin input_plugin;
1404+
struct flb_output_plugin output_plugin_one;
1405+
struct flb_output_plugin output_plugin_two;
1406+
struct flb_router_path *path;
1407+
1408+
memset(&config, 0, sizeof(config));
1409+
mk_list_init(&config.inputs);
1410+
mk_list_init(&config.outputs);
1411+
cfl_list_init(&config.input_routes);
1412+
1413+
memset(&input_one, 0, sizeof(input_one));
1414+
mk_list_init(&input_one._head);
1415+
cfl_list_init(&input_one.routes_direct);
1416+
cfl_list_init(&input_one.routes);
1417+
mk_list_init(&input_one.tasks);
1418+
mk_list_init(&input_one.chunks);
1419+
mk_list_init(&input_one.collectors);
1420+
snprintf(input_one.name, sizeof(input_one.name), "dummy.0");
1421+
input_one.p = &input_plugin;
1422+
input_one.config = &config;
1423+
mk_list_add(&input_one._head, &config.inputs);
1424+
1425+
memset(&input_two, 0, sizeof(input_two));
1426+
mk_list_init(&input_two._head);
1427+
cfl_list_init(&input_two.routes_direct);
1428+
cfl_list_init(&input_two.routes);
1429+
mk_list_init(&input_two.tasks);
1430+
mk_list_init(&input_two.chunks);
1431+
mk_list_init(&input_two.collectors);
1432+
snprintf(input_two.name, sizeof(input_two.name), "dummy.1");
1433+
input_two.p = &input_plugin;
1434+
input_two.config = &config;
1435+
mk_list_add(&input_two._head, &config.inputs);
1436+
1437+
memset(&input_plugin, 0, sizeof(input_plugin));
1438+
input_plugin.name = "dummy";
1439+
1440+
memset(&output_one, 0, sizeof(output_one));
1441+
mk_list_init(&output_one._head);
1442+
mk_list_init(&output_one.properties);
1443+
mk_list_init(&output_one.net_properties);
1444+
snprintf(output_one.name, sizeof(output_one.name), "stdout.0");
1445+
output_one.alias = flb_sds_create("print_one");
1446+
output_one.event_type = FLB_OUTPUT_LOGS;
1447+
output_one.p = &output_plugin_one;
1448+
mk_list_add(&output_one._head, &config.outputs);
1449+
1450+
memset(&output_two, 0, sizeof(output_two));
1451+
mk_list_init(&output_two._head);
1452+
mk_list_init(&output_two.properties);
1453+
mk_list_init(&output_two.net_properties);
1454+
snprintf(output_two.name, sizeof(output_two.name), "stdout.1");
1455+
output_two.alias = flb_sds_create("print_two");
1456+
output_two.event_type = FLB_OUTPUT_LOGS;
1457+
output_two.p = &output_plugin_two;
1458+
mk_list_add(&output_two._head, &config.outputs);
1459+
1460+
memset(&output_plugin_one, 0, sizeof(output_plugin_one));
1461+
output_plugin_one.name = "stdout";
1462+
memset(&output_plugin_two, 0, sizeof(output_plugin_two));
1463+
output_plugin_two.name = "stdout";
1464+
1465+
memset(&routes_one, 0, sizeof(routes_one));
1466+
cfl_list_init(&routes_one._head);
1467+
cfl_list_init(&routes_one.routes);
1468+
routes_one.input_name = flb_sds_create("dummy");
1469+
routes_one.plugin_name = flb_sds_create("dummy");
1470+
routes_one.has_alias = FLB_FALSE;
1471+
cfl_list_add(&routes_one._head, &config.input_routes);
1472+
1473+
memset(&route_one, 0, sizeof(route_one));
1474+
cfl_list_init(&route_one._head);
1475+
cfl_list_init(&route_one.outputs);
1476+
route_one.name = flb_sds_create("route_one");
1477+
route_one.signals = FLB_ROUTER_SIGNAL_LOGS;
1478+
cfl_list_add(&route_one._head, &routes_one.routes);
1479+
1480+
memset(&route_output_one, 0, sizeof(route_output_one));
1481+
cfl_list_init(&route_output_one._head);
1482+
route_output_one.name = flb_sds_create("print_one");
1483+
cfl_list_add(&route_output_one._head, &route_one.outputs);
1484+
1485+
memset(&routes_two, 0, sizeof(routes_two));
1486+
cfl_list_init(&routes_two._head);
1487+
cfl_list_init(&routes_two.routes);
1488+
routes_two.input_name = flb_sds_create("dummy");
1489+
routes_two.plugin_name = flb_sds_create("dummy");
1490+
routes_two.has_alias = FLB_FALSE;
1491+
cfl_list_add(&routes_two._head, &config.input_routes);
1492+
1493+
memset(&route_two, 0, sizeof(route_two));
1494+
cfl_list_init(&route_two._head);
1495+
cfl_list_init(&route_two.outputs);
1496+
route_two.name = flb_sds_create("route_two");
1497+
route_two.signals = FLB_ROUTER_SIGNAL_LOGS;
1498+
cfl_list_add(&route_two._head, &routes_two.routes);
1499+
1500+
memset(&route_output_two, 0, sizeof(route_output_two));
1501+
cfl_list_init(&route_output_two._head);
1502+
route_output_two.name = flb_sds_create("print_two");
1503+
cfl_list_add(&route_output_two._head, &route_two.outputs);
1504+
1505+
TEST_CHECK(flb_router_apply_config(&config) == 0);
1506+
1507+
TEST_CHECK(cfl_list_size(&input_one.routes_direct) == 1);
1508+
path = cfl_list_entry(input_one.routes_direct.next, struct flb_router_path, _head);
1509+
TEST_CHECK(path->ins == &output_one);
1510+
1511+
TEST_CHECK(cfl_list_size(&input_two.routes_direct) == 1);
1512+
path = cfl_list_entry(input_two.routes_direct.next, struct flb_router_path, _head);
1513+
TEST_CHECK(path->ins == &output_two);
1514+
1515+
TEST_CHECK(routes_one.instance == &input_one);
1516+
TEST_CHECK(routes_two.instance == &input_two);
1517+
1518+
flb_router_exit(&config);
1519+
1520+
flb_sds_destroy(output_one.alias);
1521+
flb_sds_destroy(output_two.alias);
1522+
flb_sds_destroy(routes_one.input_name);
1523+
flb_sds_destroy(routes_one.plugin_name);
1524+
flb_sds_destroy(routes_two.input_name);
1525+
flb_sds_destroy(routes_two.plugin_name);
1526+
flb_sds_destroy(route_one.name);
1527+
flb_sds_destroy(route_two.name);
1528+
flb_sds_destroy(route_output_one.name);
1529+
flb_sds_destroy(route_output_two.name);
1530+
}
1531+
12411532
void test_router_route_default_precedence()
12421533
{
12431534
struct cfl_list routes;
@@ -2048,6 +2339,8 @@ TEST_LIST = {
20482339
{ "parse_contexts_file", test_router_config_parse_file_contexts },
20492340
{ "apply_config_success", test_router_apply_config_success },
20502341
{ "apply_config_missing_output", test_router_apply_config_missing_output },
2342+
{ "apply_config_uses_input_alias", test_router_apply_config_uses_input_alias },
2343+
{ "apply_config_distinct_instances_without_alias", test_router_apply_config_distinct_instances_without_alias },
20512344
{ "route_default_precedence", test_router_route_default_precedence },
20522345
{ "condition_eval_logs_metadata_context", test_router_condition_eval_logs_metadata_context },
20532346
{ "condition_eval_logs_group_context", test_router_condition_eval_logs_group_context },

0 commit comments

Comments
 (0)