diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-12-17 00:01:53 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2019-12-17 00:01:53 +0100 |
commit | 3dabf7b8d09c3188ea41b7e2f763397946943778 (patch) | |
tree | cbff2eaaf2be437defb87ff0fcb77427295400d5 | |
parent | 3232d1718636eb7617fedc7b27378cd1d8f8691d (diff) |
Test: Improve filter_test
Initial parsing of test.conf must be done directly in filter_test main,
while reconfiguration is handled as a regular test. Also fix several
minor issues in test code.
-rw-r--r-- | filter/filter_test.c | 44 | ||||
-rw-r--r-- | filter/test.conf | 8 | ||||
-rw-r--r-- | test/birdtest.c | 9 | ||||
-rw-r--r-- | test/birdtest.h | 8 | ||||
-rw-r--r-- | test/bt-utils.c | 2 |
5 files changed, 31 insertions, 40 deletions
diff --git a/filter/filter_test.c b/filter/filter_test.c index 7adc480f..7e4af092 100644 --- a/filter/filter_test.c +++ b/filter/filter_test.c @@ -24,21 +24,18 @@ #define BT_CONFIG_FILE "filter/test.conf" -struct parse_config_file_arg { - struct config **cp; - const char *filename; -}; - static int -parse_config_file(const void *argv) +t_reconfig(void) { - const struct parse_config_file_arg *arg = argv; - size_t fn_size = strlen(arg->filename) + 1; - char *filename = alloca(fn_size); - memcpy(filename, arg->filename, fn_size); - - *(arg->cp) = bt_config_file_parse(filename); - return !!*(arg->cp); + if (!bt_config_file_parse(BT_CONFIG_FILE)) + return 0; + + struct symbol *s; + WALK_LIST(s, config->symbols) + if ((s->class == SYM_FUNCTION) || (s->class == SYM_FILTER)) + bt_assert_msg((s->flags & SYM_FLAG_SAME), "Symbol %s same check", s->name); + + return 1; } static int @@ -75,27 +72,18 @@ int main(int argc, char *argv[]) { bt_init(argc, argv); - bt_bird_init(); - - bt_assert_hook = bt_assert_filter; - - struct config *c = NULL; - struct parse_config_file_arg pcfa = { .cp = &c, .filename = BT_CONFIG_FILE }; - bt_test_suite_base(parse_config_file, "conf", (const void *) &pcfa, 0, 0, "parse config file"); - bt_assert(c); + bt_assert_hook = bt_assert_filter; - bt_test_suite_base(parse_config_file, "reconf", (const void *) &pcfa, 0, 0, "reconfigure with the same file"); - bt_assert(c); + /* Initial test.conf parsing, must be done here */ + if (!bt_config_file_parse(BT_CONFIG_FILE)) + abort(); - struct symbol *s; - WALK_LIST(s, c->symbols) - if ((s->class == SYM_FUNCTION) || (s->class == SYM_FILTER)) - bt_assert_msg((s->flags & SYM_FLAG_SAME), "Symbol %s same check", s->name); + bt_test_suite(t_reconfig, "Testing reconfiguration"); struct f_bt_test_suite *t; - WALK_LIST(t, c->tests) + WALK_LIST(t, config->tests) bt_test_suite_base(run_function, t->fn_name, t, BT_FORKING, BT_TIMEOUT, "%s", t->dsc); bt_bird_cleanup(); diff --git a/filter/test.conf b/filter/test.conf index 7152ee72..d0941e11 100644 --- a/filter/test.conf +++ b/filter/test.conf @@ -1271,10 +1271,9 @@ protocol static route 2001:0db8:85a3:8a2e::/64 max 96 as 1000; } -function test_roa_check() +function t_roa_check() prefix pfx; { - # cannot be tested in __startup(), sorry bt_assert(roa_check(r4, 10.10.0.0/16, 1000) = ROA_UNKNOWN); bt_assert(roa_check(r4, 10.0.0.0/8, 1000) = ROA_UNKNOWN); bt_assert(roa_check(r4, 10.110.0.0/16, 1000) = ROA_VALID); @@ -1329,7 +1328,10 @@ prefix pfx; bt_assert(pfx.asn = 1234); } -bt_test_suite(test_roa_check, "Testing ROA"); +bt_test_suite(t_roa_check, "Testing ROA"); + + + /* * Testing Mixed Net Types diff --git a/test/birdtest.c b/test/birdtest.c index 9e258c80..a092446a 100644 --- a/test/birdtest.c +++ b/test/birdtest.c @@ -117,6 +117,7 @@ bt_init(int argc, char *argv[]) } clock_gettime(CLOCK_MONOTONIC, &bt_begin); + bt_suite_case_begin = bt_suite_begin = bt_begin; return; @@ -198,14 +199,13 @@ bt_log_result(int result, u64 time, const char *fmt, va_list argptr) static char msg_buf[BT_BUFFER_SIZE]; char *pos; - snprintf(msg_buf, sizeof(msg_buf), "%s%s%s%s %" PRIu64 ".%09" PRIu64 "s", + snprintf(msg_buf, sizeof(msg_buf), "%s%s%s %" PRIu64 ".%09" PRIu64 "s%s", bt_filename, bt_test_id ? ": " : "", bt_test_id ? bt_test_id : "", - (fmt && strlen(fmt) > 0) ? ": " : "", time / 1000000000, - time % 1000000000 - ); + time % 1000000000, + (fmt && strlen(fmt) > 0) ? ": " : ""); pos = msg_buf + strlen(msg_buf); if (fmt) @@ -339,6 +339,7 @@ bt_test_suite_base(int (*fn)(const void *), const char *id, const void *fn_arg, bt_log("Starting"); clock_gettime(CLOCK_MONOTONIC, &bt_suite_begin); + bt_suite_case_begin = bt_suite_begin; if (!forked) { diff --git a/test/birdtest.h b/test/birdtest.h index dacfb095..caec529b 100644 --- a/test/birdtest.h +++ b/test/birdtest.h @@ -101,12 +101,12 @@ static inline int bt_test_fn_noarg(const void *cp) { return ((int (*)(void)) cp) #define bt_assert_msg(test, format, ...) \ do \ { \ - int bt_suit_case_result = 1; \ + int bt_suit_case_result = 1; \ if ((test) == 0) \ { \ - bt_result = 0; \ - bt_suite_result = 0; \ - bt_suit_case_result = 0; \ + bt_result = 0; \ + bt_suite_result = 0; \ + bt_suit_case_result = 0; \ } \ bt_log_suite_case_result(bt_suit_case_result, format, ##__VA_ARGS__); \ } while (0) diff --git a/test/bt-utils.c b/test/bt-utils.c index 7653abf6..cbca3a6b 100644 --- a/test/bt-utils.c +++ b/test/bt-utils.c @@ -154,7 +154,7 @@ bt_config_parse__(struct config *cfg) if (cfg->err_msg) { - bt_debug("Parse error %s, line %d: %s\n", cfg->err_file_name, cfg->err_lino, cfg->err_msg); + bt_log("Parse error %s, line %d: %s", cfg->err_file_name, cfg->err_lino, cfg->err_msg); bt_show_cfg_error(cfg); return NULL; } |