summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2019-12-17 00:01:53 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2019-12-17 00:01:53 +0100
commit3dabf7b8d09c3188ea41b7e2f763397946943778 (patch)
treecbff2eaaf2be437defb87ff0fcb77427295400d5 /filter
parent3232d1718636eb7617fedc7b27378cd1d8f8691d (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.
Diffstat (limited to 'filter')
-rw-r--r--filter/filter_test.c44
-rw-r--r--filter/test.conf8
2 files changed, 21 insertions, 31 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