harness: Add test for vnode_map() with too many ptes requested
authorSimon Gerber <simon.gerber@inf.ethz.ch>
Mon, 3 Oct 2016 15:25:20 +0000 (17:25 +0200)
committerSimon Gerber <simon.gerber@inf.ethz.ch>
Mon, 3 Oct 2016 15:31:01 +0000 (17:31 +0200)
Signed-off-by: Simon Gerber <simon.gerber@inf.ethz.ch>

tools/harness/tests/nkmtest.py
usr/tests/nkm/map_offset.c

index 9359201..32a4d6c 100644 (file)
@@ -1,15 +1,15 @@
 ##########################################################################
-# Copyright (c) 2009, ETH Zurich.
+# Copyright (c) 2009 - 2016, 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.
+# ETH Zurich D-INFK, Universitaetstr. 6, CH-8092 Zurich. Attn: Systems Group.
 ##########################################################################
 
 import tests
 from common import TestCommon
-from results import PassFailResult
+from results import PassFailResult, PassFailMultiResult
 
 @tests.add_test
 class NkmTest(TestCommon):
@@ -31,3 +31,24 @@ class NkmTest(TestCommon):
             lastline = line
         passed = lastline.startswith(self.get_finish_string())
         return PassFailResult(passed)
+
+@tests.add_test
+class NkmTestMapOffset(TestCommon):
+    '''test that kernel map interface does check source frame size'''
+    name = "nkmtest_map_offset"
+
+    def get_modules(self, build, machine):
+        modules = super(NkmTestMapOffset, self).get_modules(build, machine)
+        modules.add_module("nkmtest_map_offset")
+        return modules
+
+    def get_finish_string(self):
+        return "nkmtest_map_offset: "
+
+    def process_data(self, testdir, rawiter):
+        # the test passed iff the last line is the finish string
+        errors = []
+        for line in rawiter:
+            if line.startswith("nkmtest_map_offset: FAILURE"):
+                errors.append(line)
+        return PassFailMultiResult(self.name, errors)
index 9f467b8..3116157 100644 (file)
@@ -56,8 +56,8 @@ int main(int argc, char *argv[])
     // try to map 128 pages with 1page frame
     err = vnode_map(vnode, frame, 0, FLAGS, 0, 128, mapping);
     if (err_no(err) != SYS_ERR_FRAME_OFFSET_INVALID) {
-        printf("FAILURE: got %s from vnode_map(128 pages); expected SYS_ERR_FRAME_OFFSET_INVALID\n",
-                err_getcode(err));
+        printf("%s: FAILURE: got %s from vnode_map(128 pages); expected SYS_ERR_FRAME_OFFSET_INVALID\n",
+                argv[0], err_getcode(err));
         exit(1);
     }
     assert(err_no(err) == SYS_ERR_FRAME_OFFSET_INVALID);
@@ -81,7 +81,7 @@ int main(int argc, char *argv[])
     }
     assert(err_is_ok(err));
 
-    printf("SUCCESS\n");
+    printf("%s: SUCCESS\n", argv[0]);
 
     exit(0);
 }