BIND 10 trac2750, updated. 4d5859d8e390631a868339c2d435916e75112674 [2750] Add node fusion tests
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Aug 30 01:26:41 UTC 2013
The branch, trac2750 has been updated
via 4d5859d8e390631a868339c2d435916e75112674 (commit)
from 99b2d6f764a574071486cadf72e4eee3d3054ced (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 4d5859d8e390631a868339c2d435916e75112674
Author: Mukund Sivaraman <muks at isc.org>
Date: Fri Aug 30 06:56:28 2013 +0530
[2750] Add node fusion tests
-----------------------------------------------------------------------
Summary of changes:
.../datasrc/tests/memory/domaintree_unittest.cc | 93 ++++++++++++++++++++
1 file changed, 93 insertions(+)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/tests/memory/domaintree_unittest.cc b/src/lib/datasrc/tests/memory/domaintree_unittest.cc
index 3e160e5..732efca 100644
--- a/src/lib/datasrc/tests/memory/domaintree_unittest.cc
+++ b/src/lib/datasrc/tests/memory/domaintree_unittest.cc
@@ -451,6 +451,99 @@ TEST_F(DomainTreeTest, remove) {
}
}
+TEST_F(DomainTreeTest, nodeFusion) {
+ // Test that node fusion occurs when conditions permit.
+
+ /* Original tree:
+ * .
+ * |
+ * b
+ * / \
+ * a d.e.f
+ * / | \
+ * c | g.h
+ * | |
+ * w.y i
+ * / | \ \
+ * x | z k
+ * | |
+ * p j
+ * / \
+ * o q
+ *
+ */
+
+ // First, check that "d.e.f" and "w.y" exist independently.
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("d.e.f"), &cdtnode));
+ EXPECT_EQ(Name("d.e.f"), cdtnode->getName());
+
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("w.y.d.e.f"), &cdtnode));
+ EXPECT_EQ(Name("w.y"), cdtnode->getName());
+
+ // Now, delete "x" and "z" nodes.
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("x.d.e.f"), &dtnode));
+ dtree_expose_empty_node.remove(mem_sgmt_, dtnode, deleteData);
+
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("z.d.e.f"), &dtnode));
+ dtree_expose_empty_node.remove(mem_sgmt_, dtnode, deleteData);
+
+ /* Deleting 'x' and 'z' should cause "w.y" to be fused with "d.e.f":
+ * .
+ * |
+ * b
+ * / \
+ * a w.y.d.e.f
+ * / | \
+ * c | g.h
+ * | |
+ * p i
+ * / \ \
+ * o q k
+ */
+
+ // Check that "w.y" got fused with "d.e.f"
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("w.y.d.e.f"), &cdtnode));
+ EXPECT_EQ(Name("w.y.d.e.f"), cdtnode->getName());
+
+ // Check that "p" exists independently.
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("p.w.y.d.e.f"), &cdtnode));
+ EXPECT_EQ(Name("p"), cdtnode->getName());
+
+ // Now, delete "o" and "q" nodes.
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("o.w.y.d.e.f"), &dtnode));
+ dtree_expose_empty_node.remove(mem_sgmt_, dtnode, deleteData);
+
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("q.w.y.d.e.f"), &dtnode));
+ dtree_expose_empty_node.remove(mem_sgmt_, dtnode, deleteData);
+
+ /* Deleting 'o' and 'q' should cause "p" to be fused with "w.y.d.e.f":
+ * .
+ * |
+ * b
+ * / \
+ * a p.w.y.d.e.f
+ * / \
+ * c g.h
+ * |
+ * i
+ * \
+ * k
+ */
+
+ // Check that "p" got fused with "w.y.d.e.f"
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("p.w.y.d.e.f"), &cdtnode));
+ EXPECT_EQ(Name("p.w.y.d.e.f"), cdtnode->getName());
+}
+
TEST_F(DomainTreeTest, DISABLED_remove1) {
ofstream o1("d1.dot");
dtree_expose_empty_node.dumpDot(o1);
More information about the bind10-changes
mailing list