Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
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 }