[svn-commits] rmudgett: branch rmudgett/ao2_red_black r371660 - /team/rmudgett/ao2_red_blac...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Aug 24 23:55:17 CDT 2012


Author: rmudgett
Date: Fri Aug 24 23:55:13 2012
New Revision: 371660

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=371660
Log:
Initial rbtree unit tests.  Currently segfaults.

Modified:
    team/rmudgett/ao2_red_black/tests/test_astobj2.c

Modified: team/rmudgett/ao2_red_black/tests/test_astobj2.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/ao2_red_black/tests/test_astobj2.c?view=diff&rev=371660&r1=371659&r2=371660
==============================================================================
--- team/rmudgett/ao2_red_black/tests/test_astobj2.c (original)
+++ team/rmudgett/ao2_red_black/tests/test_astobj2.c Fri Aug 24 23:55:13 2012
@@ -37,10 +37,11 @@
 #include "asterisk/test.h"
 #include "asterisk/astobj2.h"
 
-/*! \todo BUGBUG rbtree tests not written */
+/*! \todo BUGBUG Specific rbtree tests not written */
 enum test_container_type {
 	TEST_CONTAINER_LIST,
 	TEST_CONTAINER_HASH,
+	TEST_CONTAINER_RBTREE,
 };
 
 /*!
@@ -63,6 +64,9 @@
 		break;
 	case TEST_CONTAINER_HASH:
 		c_type = "Hash";
+		break;
+	case TEST_CONTAINER_RBTREE:
+		c_type = "RBTree";
 		break;
 	}
 	return c_type;
@@ -457,6 +461,12 @@
 		}
 		c1 = ao2_t_container_alloc_hash(AO2_ALLOC_OPT_LOCK_MUTEX, 0, n_buckets,
 			test_hash_cb, use_sort ? test_sort_cb : NULL, test_cmp_cb, "test");
+		break;
+	case TEST_CONTAINER_RBTREE:
+		/* RBTrees just have one bucket. */
+		n_buckets = 1;
+		c1 = ao2_t_container_alloc_rbtree(AO2_ALLOC_OPT_LOCK_MUTEX, 0,
+			test_sort_cb, test_cmp_cb, "test");
 		break;
 	}
 	c2 = ao2_t_container_alloc(1, NULL, NULL, "test");
@@ -778,6 +788,10 @@
 		return res;
 	}
 
+	if ((res = astobj2_test_1_helper(4, TEST_CONTAINER_RBTREE, 1, 1000, test)) == AST_TEST_FAIL) {
+		return res;
+	}
+
 	return res;
 }
 
@@ -1072,6 +1086,9 @@
 		container = ao2_container_alloc_hash(AO2_ALLOC_OPT_LOCK_MUTEX, options, 5,
 			test_hash_cb, NULL, test_cmp_cb);
 		break;
+	case TEST_CONTAINER_RBTREE:
+		/* Container type must be sorted. */
+		break;
 	}
 
 	return container;
@@ -1101,6 +1118,10 @@
 	case TEST_CONTAINER_HASH:
 		container = ao2_t_container_alloc_hash(AO2_ALLOC_OPT_LOCK_MUTEX, options, 5,
 			test_hash_cb, test_sort_cb, test_cmp_cb, "test");
+		break;
+	case TEST_CONTAINER_RBTREE:
+		container = ao2_t_container_alloc_rbtree(AO2_ALLOC_OPT_LOCK_MUTEX, options,
+			test_sort_cb, test_cmp_cb, "test");
 		break;
 	}
 
@@ -1521,6 +1542,8 @@
 			test_hash_begin_backward, ARRAY_LEN(test_hash_begin_backward),
 			"Iteration (descending, insert begin)", test);
 		break;
+	case TEST_CONTAINER_RBTREE:
+		break;
 	}
 
 	/* Check container traversal directions */
@@ -1554,6 +1577,8 @@
 		res = test_ao2_callback_traversal(res, c2, OBJ_ORDER_DESCENDING, NULL, NULL,
 			test_hash_begin_backward, ARRAY_LEN(test_hash_begin_backward),
 			"Traversal (descending, insert begin)", test);
+		break;
+	case TEST_CONTAINER_RBTREE:
 		break;
 	}
 
@@ -1581,6 +1606,8 @@
 			test_hash_partial_backward, ARRAY_LEN(test_hash_partial_backward),
 			"Traversal OBJ_PARTIAL_KEY (descending)", test);
 		break;
+	case TEST_CONTAINER_RBTREE:
+		break;
 	}
 
 test_cleanup:
@@ -1709,6 +1736,7 @@
 
 	/* Check container iteration directions */
 	switch (type) {
+	case TEST_CONTAINER_RBTREE:
 	case TEST_CONTAINER_LIST:
 		res = test_ao2_iteration(res, c1, 0,
 			test_forward, ARRAY_LEN(test_forward),
@@ -1729,6 +1757,7 @@
 
 	/* Check container traversal directions */
 	switch (type) {
+	case TEST_CONTAINER_RBTREE:
 	case TEST_CONTAINER_LIST:
 		res = test_ao2_callback_traversal(res, c1, OBJ_ORDER_ASCENDING, NULL, NULL,
 			test_forward, ARRAY_LEN(test_forward),
@@ -1751,6 +1780,7 @@
 	partial = 6;
 	partial_key_match_range = 1;
 	switch (type) {
+	case TEST_CONTAINER_RBTREE:
 	case TEST_CONTAINER_LIST:
 		res = test_ao2_callback_traversal(res, c1, OBJ_PARTIAL_KEY | OBJ_ORDER_ASCENDING,
 			test_cmp_cb, &partial,
@@ -1960,6 +1990,7 @@
 
 	res = test_traversal_sorted(res, 3, TEST_CONTAINER_LIST, test);
 	res = test_traversal_sorted(res, 4, TEST_CONTAINER_HASH, test);
+	res = test_traversal_sorted(res, 5, TEST_CONTAINER_RBTREE, test);
 
 	return res;
 }




More information about the svn-commits mailing list