diff options
Diffstat (limited to 'src/test.c')
-rw-r--r-- | src/test.c | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/src/test.c b/src/test.c deleted file mode 100644 index 1998f2c..0000000 --- a/src/test.c +++ /dev/null @@ -1,198 +0,0 @@ -/* test.c - * (c) Jonas Gunz, 2020 - * License: MIT - * */ - -#include "test.h" - -#ifdef _TEST - -void run_test () -{ - log_init_stdout(_LOG_DEBUG); - //Space for temporary tests - - //tree_balanced_insert(NULL, NULL, NULL, 15 ); - // - //Normal tests - - int ret = 0; - - ret += test_tree(); - ret += test_dns_parsing(); - ret += test_dns_message_fuzz(); - ret += test_dns_qname_fuzz(); - ret += test_database(); - - exit(ret); -} - -int test_tree () -{ - unsigned int i, j; - - unsigned const int len = pow ( 'z' - 'a' + 1, 2); - unsigned int len_cnt = 0; - char* keys[len]; - char* data[len]; - - struct tree_node* root = NULL; - - printf("\n-> test_tree()\n======\n\n"); - - for ( i = 'a'; i <= 'z'; i++ ) { - for ( j = 'a'; j <= 'z'; j++ ) { - keys[len_cnt] = malloc (3); - keys[len_cnt][0] = i; - keys[len_cnt][1] = j; - keys[len_cnt][2] = 0; - - data[len_cnt] = malloc(10); - snprintf( data[len_cnt], 10, "N%i", len_cnt ); - - len_cnt ++; - } - } - - printf("len_cnt %i\n", len_cnt); - - tree_balanced_insert( &root, (void**)data, keys, len ); - - printf("After Insert\n"); - - printf("%s\n", (char*)tree_get(&root, "aa")); - - for ( i = 0; i < len; i++ ) { - if ( strcmp( tree_get(&root, keys[i]), data[i] ) ) - LOGPRINTF(_LOG_WARNING, "Data does not match for %s", keys[i]); - } - - printf("After Get\n"); - - tree_destroy (&root, _TREE_FREE_DATA | _TREE_FREE_KEY); - - printf("After destroy\n"); - - return 0; -} - -int test_dns_parsing () -{ - int i; - - printf("\n-> test_dns_parsing()\n======\n\n"); - char in[128]; - char out[128]; - - strncpy ( in, "sub.domain.example.com\0", 127); - - printf("%s\n", in); - - int written = fqdn_to_qname (in,128,out,128); - - if ( qname_check(out,128) < 0) - printf("Wrong\n"); - else - printf("qname ok\n"); - - if (written < 0) { - printf("invallid fqdn\n"); - return 1; - } - - for(i = 0; i < written; i++) - printf(" %x ", out[i]); - - written = qname_to_fqdn (out,128,in,128); - - if (written < 0) { - printf("invalid qname\n"); - return 1; - } - - printf("%s\n", in); - - printf("\n\n"); - return 0; -} - -int test_dns_qname_fuzz() -{ - printf("\n-> test_parsing_fuzz()\n======\n\n"); - FILE* urand = fopen ("/dev/urandom", "r"); - char rand[128]; - char out[129]; - out[128] = 0; - - if (!urand) - return 1; - - unsigned long int limit = 10000000; - unsigned long int valid_cnt = 0; - for (unsigned long int i = 0; i < limit; i++) { - if (fread (rand, 128, 1, urand) > 0) { - if ( qname_check(rand, 128) > 0 ) { - qname_to_fqdn ( rand, 128, out, 128); - //printf("Valid %s\n", out); - valid_cnt++; - } - } - } - - float valid_percent = (float)valid_cnt / (float)limit * 100; - printf("# of valid qnames in random data: %lu / %lu = %f%%\n", valid_cnt, limit, valid_percent); - - return 0; -} - -int test_dns_message_fuzz() -{ - printf("\n-> test_dns_message_fuzz()\n======\n\n"); - FILE* urand = fopen ("/dev/urandom", "r"); - char rand[128]; - - if (!urand) - return 1; - - unsigned long int limit = 10000000; - unsigned long int valid_cnt = 0; - struct dns_message msg; - - for (unsigned long int i = 0; i < limit; i++) { - if (fread (rand, 128, 1, urand) > 0) { - if ( ! dns_parse_packet(rand, 128, &msg) ) { - valid_cnt++; - } - } - } - - float valid_percent = (float)valid_cnt / (float)limit * 100; - printf("# of valid messages in random data: %lu / %lu = %f%%\n", valid_cnt, limit, valid_percent); - - return 0; -} - -int test_database(){ - struct database db; - struct database_rdata rdata; - - if ( database_populate( &db, "nofile" ) ) - return 1; - - printf("Populated\n"); - - char* qname = malloc(32); - int len = fqdn_to_qname( "test.example.com.", 18, qname, 32 ); - - int ret = database_query ( &rdata, &db, qname, len, 1, 1 ); - printf("Return code %i, rdlen %i\n", ret, rdata.rdlen); - - database_destroy( &db ); - - free(qname); - qname = NULL; - - return 0; -} - -#endif |