Commit 3dabf7b8 authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

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.
parent 3232d171
Loading
Loading
Loading
Loading
+16 −28
Original line number Diff line number Diff line
@@ -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);
  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);

  *(arg->cp) = bt_config_file_parse(filename);
  return !!*(arg->cp);
  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 };
  /* Initial test.conf parsing, must be done here */
  if (!bt_config_file_parse(BT_CONFIG_FILE))
    abort();

  bt_test_suite_base(parse_config_file, "conf", (const void *) &pcfa, 0, 0, "parse config file");
  bt_assert(c);

  bt_test_suite_base(parse_config_file, "reconf", (const void *) &pcfa, 0, 0, "reconfigure with the same file");
  bt_assert(c);

  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();
+5 −3
Original line number Diff line number Diff line
@@ -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
+5 −4
Original line number Diff line number Diff line
@@ -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)
  {
+1 −1
Original line number Diff line number Diff line
@@ -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;
  }
+4 −4

File changed.

Contains only whitespace changes.