0001
0002
0003 #include "test_progs.h"
0004 #include "testing_helpers.h"
0005
0006 static void init_test_filter_set(struct test_filter_set *set)
0007 {
0008 set->cnt = 0;
0009 set->tests = NULL;
0010 }
0011
0012 static void free_test_filter_set(struct test_filter_set *set)
0013 {
0014 int i, j;
0015
0016 for (i = 0; i < set->cnt; i++) {
0017 for (j = 0; j < set->tests[i].subtest_cnt; j++)
0018 free((void *)set->tests[i].subtests[j]);
0019 free(set->tests[i].subtests);
0020 free(set->tests[i].name);
0021 }
0022
0023 free(set->tests);
0024 init_test_filter_set(set);
0025 }
0026
0027 static void test_parse_test_list(void)
0028 {
0029 struct test_filter_set set;
0030
0031 init_test_filter_set(&set);
0032
0033 ASSERT_OK(parse_test_list("arg_parsing", &set, true), "parsing");
0034 if (!ASSERT_EQ(set.cnt, 1, "test filters count"))
0035 goto error;
0036 if (!ASSERT_OK_PTR(set.tests, "test filters initialized"))
0037 goto error;
0038 ASSERT_EQ(set.tests[0].subtest_cnt, 0, "subtest filters count");
0039 ASSERT_OK(strcmp("arg_parsing", set.tests[0].name), "subtest name");
0040 free_test_filter_set(&set);
0041
0042 ASSERT_OK(parse_test_list("arg_parsing,bpf_cookie", &set, true),
0043 "parsing");
0044 if (!ASSERT_EQ(set.cnt, 2, "count of test filters"))
0045 goto error;
0046 if (!ASSERT_OK_PTR(set.tests, "test filters initialized"))
0047 goto error;
0048 ASSERT_EQ(set.tests[0].subtest_cnt, 0, "subtest filters count");
0049 ASSERT_EQ(set.tests[1].subtest_cnt, 0, "subtest filters count");
0050 ASSERT_OK(strcmp("arg_parsing", set.tests[0].name), "test name");
0051 ASSERT_OK(strcmp("bpf_cookie", set.tests[1].name), "test name");
0052 free_test_filter_set(&set);
0053
0054 ASSERT_OK(parse_test_list("arg_parsing/arg_parsing,bpf_cookie",
0055 &set,
0056 true),
0057 "parsing");
0058 if (!ASSERT_EQ(set.cnt, 2, "count of test filters"))
0059 goto error;
0060 if (!ASSERT_OK_PTR(set.tests, "test filters initialized"))
0061 goto error;
0062 if (!ASSERT_EQ(set.tests[0].subtest_cnt, 1, "subtest filters count"))
0063 goto error;
0064 ASSERT_EQ(set.tests[1].subtest_cnt, 0, "subtest filters count");
0065 ASSERT_OK(strcmp("arg_parsing", set.tests[0].name), "test name");
0066 ASSERT_OK(strcmp("arg_parsing", set.tests[0].subtests[0]),
0067 "subtest name");
0068 ASSERT_OK(strcmp("bpf_cookie", set.tests[1].name), "test name");
0069 free_test_filter_set(&set);
0070
0071 ASSERT_OK(parse_test_list("arg_parsing/arg_parsing", &set, true),
0072 "parsing");
0073 ASSERT_OK(parse_test_list("bpf_cookie", &set, true), "parsing");
0074 ASSERT_OK(parse_test_list("send_signal", &set, true), "parsing");
0075 if (!ASSERT_EQ(set.cnt, 3, "count of test filters"))
0076 goto error;
0077 if (!ASSERT_OK_PTR(set.tests, "test filters initialized"))
0078 goto error;
0079 if (!ASSERT_EQ(set.tests[0].subtest_cnt, 1, "subtest filters count"))
0080 goto error;
0081 ASSERT_EQ(set.tests[1].subtest_cnt, 0, "subtest filters count");
0082 ASSERT_EQ(set.tests[2].subtest_cnt, 0, "subtest filters count");
0083 ASSERT_OK(strcmp("arg_parsing", set.tests[0].name), "test name");
0084 ASSERT_OK(strcmp("arg_parsing", set.tests[0].subtests[0]),
0085 "subtest name");
0086 ASSERT_OK(strcmp("bpf_cookie", set.tests[1].name), "test name");
0087 ASSERT_OK(strcmp("send_signal", set.tests[2].name), "test name");
0088 free_test_filter_set(&set);
0089
0090 ASSERT_OK(parse_test_list("bpf_cookie/trace", &set, false), "parsing");
0091 if (!ASSERT_EQ(set.cnt, 1, "count of test filters"))
0092 goto error;
0093 if (!ASSERT_OK_PTR(set.tests, "test filters initialized"))
0094 goto error;
0095 if (!ASSERT_EQ(set.tests[0].subtest_cnt, 1, "subtest filters count"))
0096 goto error;
0097 ASSERT_OK(strcmp("*bpf_cookie*", set.tests[0].name), "test name");
0098 ASSERT_OK(strcmp("*trace*", set.tests[0].subtests[0]), "subtest name");
0099 error:
0100 free_test_filter_set(&set);
0101 }
0102
0103 void test_arg_parsing(void)
0104 {
0105 if (test__start_subtest("test_parse_test_list"))
0106 test_parse_test_list();
0107 }