]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
test_maple_tree: Fix comments & add more tests.
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Fri, 1 Feb 2019 19:22:25 +0000 (14:22 -0500)
committerLiam R. Howlett <Liam.Howlett@Oracle.com>
Tue, 5 Jan 2021 17:28:04 +0000 (12:28 -0500)
Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
lib/test_maple_tree.c

index 8ee3c56e3513debed74ae58324368aaf625ba1b8..418556a3976a3f10ccca35866db18d2cbdce4c84 100644 (file)
@@ -59,11 +59,23 @@ static int mtree_test_erase(struct maple_tree *mt, unsigned long index)
 }
 
 
+static noinline void check_load(struct maple_tree *mt, unsigned long index,
+                               void *ptr)
+{
+       void *ret = mtree_test_load(mt, index);
+
+       MT_BUG_ON(mt, ret != ptr);
+}
+
 static noinline void check_insert_range(struct maple_tree *mt,
                unsigned long start, unsigned long end, void *ptr)
 {
        int ret = -EINVAL;
+       unsigned long i;
        ret = mtree_test_insert_range(mt, start, end, ptr);
+       for (i = start; i >= end; i++) {
+               check_load(mt, i, ptr);
+       }
        MT_BUG_ON(mt, ret != 0);
 }
 
@@ -90,14 +102,6 @@ static noinline void check_dup_insert(struct maple_tree *mt,
 }
 
 
-static noinline void check_load(struct maple_tree *mt, unsigned long index,
-                               void *ptr)
-{
-       void *ret = mtree_test_load(mt, index);
-
-       MT_BUG_ON(mt, ret != ptr);
-}
-
 static noinline
 void check_index_load(struct maple_tree *mt, unsigned long index)
 {
@@ -189,7 +193,8 @@ static noinline void check_new_node(struct maple_tree *mt)
        mtree_unlock(mt);
        mtree_destroy(mt);
 }
-static noinline void check_seq(struct maple_tree *mt, unsigned long max)
+static noinline void check_seq(struct maple_tree *mt, unsigned long max,
+               bool verbose)
 {
        unsigned long i, j;
 
@@ -202,7 +207,8 @@ static noinline void check_seq(struct maple_tree *mt, unsigned long max)
                }
                check_load(mt, i + 1, NULL);
        }
-       //mt_dump(mt);
+       if (verbose)
+               mt_dump(mt);
        mtree_destroy(mt);
 }
 
@@ -269,22 +275,17 @@ static int maple_tree_seed(void)
        pr_info("\nTEST STARTING\n\n");
 
        mtree_init(&tree);
-       check_seq(&tree, 1000);
-       check_new_node(&tree);
-       check_lower_bound_split(&tree);
-       check_upper_bound_split(&tree);
-       check_mid_split(&tree);
 
-       check_load(&tree, set[0], NULL);       // See if 15 -> NULL
+       check_load(&tree, set[0], NULL);       // See if 5015 -> NULL
 
        check_insert(&tree, set[9], &tree);     // Insert 0
        check_load(&tree, set[9], &tree);       // See if 0 -> &tree
-       check_load(&tree, set[0], NULL);       // See if 15 -> NULL
+       check_load(&tree, set[0], NULL);       // See if 5015 -> NULL
 
-       check_insert(&tree, set[10], ptr);      // Insert 3
+       check_insert(&tree, set[10], ptr);      // Insert 5003
        check_load(&tree, set[9], &tree);       // See if 0 -> &tree
-       check_load(&tree, set[11], NULL);       // See if 2 -> NULL
-       check_load(&tree, set[10], ptr);       // See if 3 -> ptr
+       check_load(&tree, set[11], NULL);       // See if 5002 -> NULL
+       check_load(&tree, set[10], ptr);       // See if 5003 -> ptr
 
        /* Clear out the tree */
        mtree_destroy(&tree);
@@ -292,25 +293,25 @@ static int maple_tree_seed(void)
 
        /* Try to insert, insert a dup, and load back what was inserted. */
        mtree_init(&tree);
-       check_insert(&tree, set[0], &tree);     // Insert 15
-       check_dup_insert(&tree, set[0], &tree); // Insert 15 again
-       check_load(&tree, set[0], &tree);       // See if 15 -> &tree
+       check_insert(&tree, set[0], &tree);     // Insert 5015
+       check_dup_insert(&tree, set[0], &tree); // Insert 5015 again
+       check_load(&tree, set[0], &tree);       // See if 5015 -> &tree
 
        /* Second set of tests try to load a value that doesn't exist, inserts
         * a second value, then loads the value again
         */
-       check_load(&tree, set[1], NULL);        // See if 14 -> NULL
-       check_insert(&tree, set[1], ptr);       // insert 14 -> ptr
-       check_load(&tree, set[1], ptr);         // See if 14 -> ptr
-       check_load(&tree, set[0], &tree);       // See if 15 -> &tree
+       check_load(&tree, set[1], NULL);        // See if 5014 -> NULL
+       check_insert(&tree, set[1], ptr);       // insert 5014 -> ptr
+       check_load(&tree, set[1], ptr);         // See if 5014 -> ptr
+       check_load(&tree, set[0], &tree);       // See if 5015 -> &tree
        /* Tree currently contains:
         * p[0]: 14 -> (nil) p[1]: 15 -> ptr p[2]: 16 -> &tree p[3]: 0 -> (nil)
         */
        check_insert(&tree, set[6], ptr);       // insert 1002 -> ptr
        check_insert(&tree, set[7], &tree);       // insert 1003 -> &tree
 
-       check_load(&tree, set[0], &tree);       // See if 15 -> &tree
-       check_load(&tree, set[1], ptr);         // See if 14 -> ptr
+       check_load(&tree, set[0], &tree);       // See if 5015 -> &tree
+       check_load(&tree, set[1], ptr);         // See if 5014 -> ptr
        check_load(&tree, set[6], ptr);         // See if 1002 -> ptr
        check_load(&tree, set[7], &tree);       // 1003 = &tree ?
 
@@ -378,8 +379,10 @@ static int maple_tree_seed(void)
        check_load(&tree, set[5], &tree);
        check_load(&tree, set[6], ptr);
        check_insert(&tree, set[7], &tree);
+       check_load(&tree, set[0], ptr);
        check_insert(&tree, set[8], ptr);
        check_insert(&tree, set[9], &tree);
+
        check_load(&tree, set[0], ptr);
        check_load(&tree, set[1], &tree);
        check_load(&tree, set[2], ptr);
@@ -391,7 +394,13 @@ static int maple_tree_seed(void)
        mtree_destroy(&tree);
 
        check_nomem(&tree);
-       check_seq(&tree, 16);
+       check_seq(&tree, 16, false);
+       check_seq(&tree, 1000, true);
+
+       check_new_node(&tree);
+       check_lower_bound_split(&tree);
+       check_upper_bound_split(&tree);
+       check_mid_split(&tree);
 
        printk("maple_tree: %u of %u tests passed\n", tests_passed, tests_run);
        return (tests_run == tests_passed) ? 0 : -EINVAL;