Added test for queue interface
authorRoni Häcki <roni.haecki@inf.ethz.ch>
Fri, 13 Jan 2017 16:14:54 +0000 (17:14 +0100)
committerRoni Häcki <roni.haecki@inf.ethz.ch>
Fri, 13 Jan 2017 16:14:54 +0000 (17:14 +0100)
Signed-off-by: Roni Häcki <roni.haecki@inf.ethz.ch>

tools/harness/tests/devif_test.py [new file with mode: 0644]
usr/tests/devif/queue_interface.c

diff --git a/tools/harness/tests/devif_test.py b/tools/harness/tests/devif_test.py
new file mode 100644 (file)
index 0000000..9f430f7
--- /dev/null
@@ -0,0 +1,59 @@
+##########################################################################
+# Copyright (c) 2017, ETH Zurich.
+# All rights reserved.
+#
+# This file is distributed under the terms in the attached LICENSE file.
+# If you do not find this file, copies can be found by writing to:
+# ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
+##########################################################################
+
+import re, datetime
+import debug, tests
+from common import TestCommon, TimeoutError
+from results import RowResults, PassFailResult
+
+TEST_TIMEOUT = datetime.timedelta(minutes=8)
+
+
+class DevifTests(TestCommon):
+
+    def __init__(self, options):
+        super(DevifTests, self).__init__(options)
+
+    def get_module_name(self):
+        return "devif_test"
+
+    def boot(self, *args):
+        super(DevifTests, self).boot(*args)
+        self.set_timeout(TEST_TIMEOUT)
+
+    def get_modules(self, build, machine):
+        self.machine = machine.name
+        modules = super(DevifTests, self).get_modules(build, machine)
+        modules.add_module("sfn5122f", ["auto", "function=0"])
+        modules.add_module("devif_idc", ["core=1"])
+        modules.add_module(self.get_module_name(), ["core=0", self.OP])
+
+        return modules
+
+    def is_finished(self, line):
+        return line.startswith("SUCCESS")
+
+    def process_data(self, testdir, rawiter):
+        passed = False
+        for line in rawiter:
+            if "SUCCESS" in line:
+                passed = True
+        return PassFailResult(passed)
+
+@tests.add_test
+class DevifNetTest(DevifTests):
+    ''' Devif Net Test'''
+    name = "devif_net_test"
+    OP = "net"
+
+@tests.add_test
+class DevifIdcTest(DevifTests):
+    ''' Devif IDC Test'''
+    name = "devif_idc_test"
+    OP = "idc"
index 5759f8d..21cba64 100644 (file)
@@ -18,8 +18,6 @@
 #include <devif/backends/descq.h>
 
 
-#define IDC_TEST
-#define SFN_TEST
 #define NUM_ENQ 2
 #define NUM_RX_BUF 1024
 #define NUM_ROUNDS 32
@@ -54,7 +52,6 @@ struct list_ele{
     struct list_ele* next;
 };
 
-#ifdef SFN_TEST
 static uint8_t udp_header[8] = {
     0x07, 0xD0, 0x07, 0xD0,
     0x00, 0x80, 0x00, 0x00,
@@ -226,11 +223,10 @@ static void test_sfn5122f_device_direct(void)
 
     err = sfn5122f_queue_destroy((struct sfn5122f_queue*) q);
 
-    printf("SFN5122F direct device test ended\n");
+    printf("SUCCESS: SFN5122F direct device test ended\n");
 }
-#endif
 
-#ifdef IDC_TEST
+
 static errval_t descq_notify(struct descq* q) 
 {   
     errval_t err = SYS_ERR_OK;
@@ -327,13 +323,11 @@ static void test_idc_queue(void)
         USER_PANIC("Devq deregister tx failed \n");
     }
 
-    printf("Descriptor queue test end \n");
+    printf("SUCCESS: IDC queue\n");
 }
 
-#endif
 int main(int argc, char *argv[])
 {
-    //barrelfish_usleep(1000*1000*5);
     errval_t err;
     // Allocate memory
     err = frame_alloc(&memory_rx, MEMORY_SIZE, NULL);
@@ -373,13 +367,15 @@ int main(int argc, char *argv[])
     }
 
     phys_tx = id.base;
-#ifdef SFN_TEST
-    test_sfn5122f_device_direct();
-    barrelfish_usleep(1000*1000*5);
-#endif
-#ifdef IDC_TEST
-    test_idc_queue();
+
+    if (strcmp(argv[1], "net") == 0) {
+        test_sfn5122f_device_direct();
+    }
+
+    if (strcmp(argv[1], "idc") == 0) {
+        test_idc_queue();
+    }
+
     barrelfish_usleep(1000*1000*5);
-#endif
 }