BIND 10 trac2092, updated. bb01feca34b77f95e67ceb105ea332774d513ddd [2092] Add a testcase for checking if FLAG_SUBTREE_ROOT is being set properly

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Jul 23 04:50:04 UTC 2012


The branch, trac2092 has been updated
       via  bb01feca34b77f95e67ceb105ea332774d513ddd (commit)
      from  af11f98278365797d64b4a3a607051db96c7ac51 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit bb01feca34b77f95e67ceb105ea332774d513ddd
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Jul 23 10:15:30 2012 +0530

    [2092] Add a testcase for checking if FLAG_SUBTREE_ROOT is being set properly

-----------------------------------------------------------------------

Summary of changes:
 src/lib/datasrc/tests/rbtree_unittest.cc |   31 ++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/tests/rbtree_unittest.cc b/src/lib/datasrc/tests/rbtree_unittest.cc
index 2fd696f..4abfe5e 100644
--- a/src/lib/datasrc/tests/rbtree_unittest.cc
+++ b/src/lib/datasrc/tests/rbtree_unittest.cc
@@ -147,6 +147,37 @@ TEST_F(RBTreeTest, insertNames) {
     EXPECT_EQ(RBTree<int>::SUCCESS, rbtree.insert(Name("n"), &rbtnode));
 }
 
+TEST_F(RBTreeTest, subTreeRoot) {
+    // This is a testcase for a particular issue that went unchecked in
+    // #2089's implementation, but was fixed in #2092. The issue was
+    // that when a node was fissioned, FLAG_SUBTREE_ROOT was not being
+    // copied correctly.
+
+    EXPECT_EQ(RBTree<int>::ALREADYEXISTS, rbtree_expose_empty_node.insert(Name("d.e.f"),
+                                                        &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCESS, rbtree_expose_empty_node.insert(Name("."), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCESS, rbtree_expose_empty_node.insert(Name("example.com"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::ALREADYEXISTS, rbtree_expose_empty_node.insert(Name("example.com"), &rbtnode));
+    EXPECT_EQ(RBTree<int>::SUCCESS, rbtree_expose_empty_node.insert(Name("k.e.f"), &rbtnode));
+
+    // "g.h" is not a subtree root
+    EXPECT_EQ(RBTree<int>::EXACTMATCH, rbtree_expose_empty_node.find(Name("g.h"),
+                                                                     &rbtnode));
+    EXPECT_FALSE(rbtnode->getFlag(RBNode<int>::FLAG_SUBTREE_ROOT));
+
+    // fission the node "g.h"
+    EXPECT_EQ(RBTree<int>::ALREADYEXISTS, rbtree_expose_empty_node.insert(Name("h"), &rbtnode));
+
+    // the node "h" (h.down_ -> "g") should not be a subtree root. "g"
+    // should be a subtree root.
+    EXPECT_FALSE(rbtnode->getFlag(RBNode<int>::FLAG_SUBTREE_ROOT));
+
+    // "g.h" should be a subtree root now.
+    EXPECT_EQ(RBTree<int>::EXACTMATCH, rbtree_expose_empty_node.find(Name("g.h"),
+                                                                     &rbtnode));
+    EXPECT_TRUE(rbtnode->getFlag(RBNode<int>::FLAG_SUBTREE_ROOT));
+}
+
 TEST_F(RBTreeTest, findName) {
     // find const rbtnode
     // exact match



More information about the bind10-changes mailing list