From bebca014a38ed966358f9e6b99d49b30cabccab5 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Fri, 1 Feb 2019 14:22:25 -0500 Subject: [PATCH] test_maple_tree: Fix comments & add more tests. Signed-off-by: Liam R. Howlett --- lib/test_maple_tree.c | 69 ++++++++++++++++++++++++------------------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/lib/test_maple_tree.c b/lib/test_maple_tree.c index 8ee3c56e3513..418556a3976a 100644 --- a/lib/test_maple_tree.c +++ b/lib/test_maple_tree.c @@ -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; -- 2.50.1