- testbound selftest also works in non-debug mode.

git-svn-id: file:///svn/unbound/trunk@3490 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2015-09-22 09:52:17 +00:00
parent f2426b7796
commit 66b21d16be
3 changed files with 43 additions and 34 deletions

View file

@ -5,6 +5,7 @@
- Fix #702: New IPs for for h.root-servers.net. - Fix #702: New IPs for for h.root-servers.net.
- Remove confusion comment from canonical_compare() function. - Remove confusion comment from canonical_compare() function.
- Fix #705: ub_ctx_set_fwd() return value mishandled on windows. - Fix #705: ub_ctx_set_fwd() return value mishandled on windows.
- testbound selftest also works in non-debug mode.
31 August 2015: Wouter 31 August 2015: Wouter
- changed windows setup compression to be more transparent. - changed windows setup compression to be more transparent.

View file

@ -909,118 +909,127 @@ macro_assign(rbtree_t* store, char* name, char* value)
return x->value != NULL; return x->value != NULL;
} }
/* testbound assert function for selftest. counts the number of tests */
#define tb_assert(x) \
do { if(!(x)) fatal_exit("%s:%d: %s: assertion %s failed", \
__FILE__, __LINE__, __func__, #x); \
num_asserts++; \
} while(0);
void testbound_selftest(void) void testbound_selftest(void)
{ {
/* test the macro store */ /* test the macro store */
rbtree_t* store = macro_store_create(); rbtree_t* store = macro_store_create();
char* v; char* v;
int r; int r;
log_assert(store); int num_asserts = 0;
tb_assert(store);
v = macro_lookup(store, "bla"); v = macro_lookup(store, "bla");
log_assert(strcmp(v, "") == 0); tb_assert(strcmp(v, "") == 0);
free(v); free(v);
v = macro_lookup(store, "vlerk"); v = macro_lookup(store, "vlerk");
log_assert(strcmp(v, "") == 0); tb_assert(strcmp(v, "") == 0);
free(v); free(v);
r = macro_assign(store, "bla", "waarde1"); r = macro_assign(store, "bla", "waarde1");
log_assert(r); tb_assert(r);
v = macro_lookup(store, "vlerk"); v = macro_lookup(store, "vlerk");
log_assert(strcmp(v, "") == 0); tb_assert(strcmp(v, "") == 0);
free(v); free(v);
v = macro_lookup(store, "bla"); v = macro_lookup(store, "bla");
log_assert(strcmp(v, "waarde1") == 0); tb_assert(strcmp(v, "waarde1") == 0);
free(v); free(v);
r = macro_assign(store, "vlerk", "kanteel"); r = macro_assign(store, "vlerk", "kanteel");
log_assert(r); tb_assert(r);
v = macro_lookup(store, "bla"); v = macro_lookup(store, "bla");
log_assert(strcmp(v, "waarde1") == 0); tb_assert(strcmp(v, "waarde1") == 0);
free(v); free(v);
v = macro_lookup(store, "vlerk"); v = macro_lookup(store, "vlerk");
log_assert(strcmp(v, "kanteel") == 0); tb_assert(strcmp(v, "kanteel") == 0);
free(v); free(v);
r = macro_assign(store, "bla", "ww"); r = macro_assign(store, "bla", "ww");
log_assert(r); tb_assert(r);
v = macro_lookup(store, "bla"); v = macro_lookup(store, "bla");
log_assert(strcmp(v, "ww") == 0); tb_assert(strcmp(v, "ww") == 0);
free(v); free(v);
log_assert( macro_length("}") == 1); tb_assert( macro_length("}") == 1);
log_assert( macro_length("blabla}") == 7); tb_assert( macro_length("blabla}") == 7);
log_assert( macro_length("bla${zoink}bla}") == 7+8); tb_assert( macro_length("bla${zoink}bla}") == 7+8);
log_assert( macro_length("bla${zoink}${bla}bla}") == 7+8+6); tb_assert( macro_length("bla${zoink}${bla}bla}") == 7+8+6);
v = macro_process(store, NULL, ""); v = macro_process(store, NULL, "");
log_assert( v && strcmp(v, "") == 0); tb_assert( v && strcmp(v, "") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${}"); v = macro_process(store, NULL, "${}");
log_assert( v && strcmp(v, "") == 0); tb_assert( v && strcmp(v, "") == 0);
free(v); free(v);
v = macro_process(store, NULL, "blabla ${} dinges"); v = macro_process(store, NULL, "blabla ${} dinges");
log_assert( v && strcmp(v, "blabla dinges") == 0); tb_assert( v && strcmp(v, "blabla dinges") == 0);
free(v); free(v);
v = macro_process(store, NULL, "1${$bla}2${$bla}3"); v = macro_process(store, NULL, "1${$bla}2${$bla}3");
log_assert( v && strcmp(v, "1ww2ww3") == 0); tb_assert( v && strcmp(v, "1ww2ww3") == 0);
free(v); free(v);
v = macro_process(store, NULL, "it is ${ctime 123456}"); v = macro_process(store, NULL, "it is ${ctime 123456}");
log_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0);
free(v); free(v);
r = macro_assign(store, "t1", "123456"); r = macro_assign(store, "t1", "123456");
log_assert(r); tb_assert(r);
v = macro_process(store, NULL, "it is ${ctime ${$t1}}"); v = macro_process(store, NULL, "it is ${ctime ${$t1}}");
log_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0);
free(v); free(v);
v = macro_process(store, NULL, "it is ${ctime $t1}"); v = macro_process(store, NULL, "it is ${ctime $t1}");
log_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0); tb_assert( v && strcmp(v, "it is Fri Jan 2 10:17:36 1970") == 0);
free(v); free(v);
r = macro_assign(store, "x", "1"); r = macro_assign(store, "x", "1");
log_assert(r); tb_assert(r);
r = macro_assign(store, "y", "2"); r = macro_assign(store, "y", "2");
log_assert(r); tb_assert(r);
v = macro_process(store, NULL, "${$x + $x}"); v = macro_process(store, NULL, "${$x + $x}");
log_assert( v && strcmp(v, "2") == 0); tb_assert( v && strcmp(v, "2") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${$x - $x}"); v = macro_process(store, NULL, "${$x - $x}");
log_assert( v && strcmp(v, "0") == 0); tb_assert( v && strcmp(v, "0") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${$y * $y}"); v = macro_process(store, NULL, "${$y * $y}");
log_assert( v && strcmp(v, "4") == 0); tb_assert( v && strcmp(v, "4") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${32 / $y + $x + $y}"); v = macro_process(store, NULL, "${32 / $y + $x + $y}");
log_assert( v && strcmp(v, "19") == 0); tb_assert( v && strcmp(v, "19") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${32 / ${$y+$y} + ${${100*3}/3}}"); v = macro_process(store, NULL, "${32 / ${$y+$y} + ${${100*3}/3}}");
log_assert( v && strcmp(v, "108") == 0); tb_assert( v && strcmp(v, "108") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${1 2 33 2 1}"); v = macro_process(store, NULL, "${1 2 33 2 1}");
log_assert( v && strcmp(v, "1 2 33 2 1") == 0); tb_assert( v && strcmp(v, "1 2 33 2 1") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${123 3 + 5}"); v = macro_process(store, NULL, "${123 3 + 5}");
log_assert( v && strcmp(v, "123 8") == 0); tb_assert( v && strcmp(v, "123 8") == 0);
free(v); free(v);
v = macro_process(store, NULL, "${123 glug 3 + 5}"); v = macro_process(store, NULL, "${123 glug 3 + 5}");
log_assert( v && strcmp(v, "123 glug 8") == 0); tb_assert( v && strcmp(v, "123 glug 8") == 0);
free(v); free(v);
macro_store_delete(store); macro_store_delete(store);
printf("selftest successful (%d checks).\n", num_asserts);
} }

View file

@ -284,7 +284,6 @@ main(int argc, char* argv[])
case 's': case 's':
free(pass_argv[1]); free(pass_argv[1]);
testbound_selftest(); testbound_selftest();
printf("selftest successful\n");
exit(0); exit(0);
case '2': case '2':
#if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS)) && defined(USE_SHA2) #if (defined(HAVE_EVP_SHA256) || defined(HAVE_NSS)) && defined(USE_SHA2)