X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Tools%2FNetTest_Runner%2Fmain.c;h=5c175d71e8d60f633478c560fc7168b5c96c71e3;hb=3186a83d890b05be6a140999bab38c604ffcd66f;hp=83ab6530a9d1918f6e46ff086e5b633368a3d35f;hpb=50a98c40481c6d1df267f4631228e9a4d107fe74;p=tpg%2Facess2.git diff --git a/Tools/NetTest_Runner/main.c b/Tools/NetTest_Runner/main.c index 83ab6530..5c175d71 100644 --- a/Tools/NetTest_Runner/main.c +++ b/Tools/NetTest_Runner/main.c @@ -23,42 +23,54 @@ int main(int argc, char *argv[]) return 1; typedef bool t_test(void); - t_test *tests[] = { - Test_ARP_Basic, - Test_TCP_Basic, - NULL + struct { + t_test *fcn; + const char *name; + } tests[] = { + #define _(fcn) {fcn, #fcn} + _(Test_ARP_Basic), + _(Test_TCP_Basic), + //_(Test_TCP_WindowSizes), + _(Test_TCP_Reset), + {NULL,NULL} }; + // Truncate the two output files // TODO: Move to stack.c - FILE *fp; - fp = fopen("stdout.txt", "w"); fclose(fp); - fp = fopen("stderr.txt", "w"); fclose(fp); + fclose( fopen("stdout.txt", "w") ); + fclose( fopen("stderr.txt", "w") ); + + Net_Open(0, "/tmp/acess2net"); - for(int i = 0; tests[i]; i ++ ) + int n_pass = 0; + int n_fail = 0; + for(int i = 0; tests[i].fcn; i ++ ) { - Net_Open(0, "/tmp/acess2net"); - Stack_AddDevice("/tmp/acess2net", (char[]){TEST_MAC}); Stack_AddInterface("eth0", 4, (const char[]){TEST_IP}, 24); Stack_AddRoute(4, "\0\0\0\0", 0, (const char[]){HOST_IP}); - if( Stack_Start("cmdline") ) + if( Stack_Start(tests[i].name, "cmdline") ) goto teardown; if( Net_Receive(0, 1, &argc, 1000) == 0 ) goto teardown; - if( tests[i]() ) - printf("%s: PASS\n", gsTestName); + bool result = tests[i].fcn(); + + printf("%s: %s\n", gsTestName, (result ? "PASS" : "FAIL")); + if(result) + n_pass ++; else - printf("%s: FAIL\n", gsTestName); + n_fail ++; teardown: Stack_Kill(); - Net_Close(0); - unlink("/tmp/acess2net"); } + Net_Close(0); + unlink("/tmp/acess2net"); + printf("--- All tests done %i pass, %i fail\n", n_pass, n_fail); - return 0; + return n_fail; } void PrintUsage(const char *ProgName) @@ -119,3 +131,43 @@ void test_assertion_fail(const char *filename, int line, const char *fmt, ...) fprintf(stderr, "\n"); } +void test_trace(const char *msg, ...) +{ + printf("TRACE: [%s] ", gsTestName); + va_list args; + va_start(args, msg); + vfprintf(stdout, msg, args); + va_end(args); + printf("\n"); +} +void test_trace_hexdump(const char *hdr, const void *data, size_t len) +{ + printf("TRACE: [%s] %s - %zi bytes\n", gsTestName, hdr, len); + const uint8_t *data8 = data; + while( len > 16 ) + { + printf("TRACE: %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x\n", + data8[0], data8[1], data8[ 2], data8[ 3], data8[ 4], data8[ 5], data8[ 6], data8[ 7], + data8[8], data8[9], data8[10], data8[11], data8[12], data8[13], data8[14], data8[15] + ); + len -= 16; + data8 += 16; + } + printf("TRACE: "); + while( len > 8 ) + { + printf("%02x %02x %02x %02x %02x %02x %02x %02x ", + data8[0], data8[1], data8[ 2], data8[ 3], data8[ 4], data8[ 5], data8[ 6], data8[ 7] + ); + len -= 8; + data8 += 8; + } + while(len > 0) + { + printf("%02x ", data8[0]); + len --; + data8 ++; + } + printf("\n"); +} +