Usermode - More hackery to get glib compiling
[tpg/acess2.git] / Tools / NetTest_Runner / main.c
index 83ab653..5c175d7 100644 (file)
@@ -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");
+}
+

UCC git Repository :: git.ucc.asn.au