BIND 10 trac2750, updated. 82fded3b3266bfe0c30dc89572b716898b5aaf8e [2750] Add node fusion test where there is data in the parent node
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Aug 30 01:32:45 UTC 2013
The branch, trac2750 has been updated
via 82fded3b3266bfe0c30dc89572b716898b5aaf8e (commit)
from 4d5859d8e390631a868339c2d435916e75112674 (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 82fded3b3266bfe0c30dc89572b716898b5aaf8e
Author: Mukund Sivaraman <muks at isc.org>
Date: Fri Aug 30 07:02:36 2013 +0530
[2750] Add node fusion test where there is data in the parent node
-----------------------------------------------------------------------
Summary of changes:
.../datasrc/tests/memory/domaintree_unittest.cc | 77 ++++++++++++++++++++
1 file changed, 77 insertions(+)
-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/tests/memory/domaintree_unittest.cc b/src/lib/datasrc/tests/memory/domaintree_unittest.cc
index 732efca..6178068 100644
--- a/src/lib/datasrc/tests/memory/domaintree_unittest.cc
+++ b/src/lib/datasrc/tests/memory/domaintree_unittest.cc
@@ -544,6 +544,83 @@ TEST_F(DomainTreeTest, nodeFusion) {
EXPECT_EQ(Name("p.w.y.d.e.f"), cdtnode->getName());
}
+TEST_F(DomainTreeTest, nodeFusionWithData) {
+ // Test that node fusion does not occur when there is data in the
+ // parent node.
+
+ /* 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());
+
+ // Set data (some value 42) in the "d.e.f" node
+ EXPECT_EQ(TestDomainTree::EXACTMATCH,
+ dtree_expose_empty_node.find(Name("d.e.f"), &dtnode));
+ EXPECT_EQ(static_cast<int*>(NULL),
+ dtnode->setData(new int(42)));
+
+ // 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 not cause "w.y" to be fused with
+ * "d.e.f" because "d.e.f" is not empty (has data) in this case.
+ * .
+ * |
+ * b
+ * / \
+ * a d.e.f
+ * / | \
+ * c | g.h
+ * | |
+ * w.y i
+ * | \
+ * | k
+ * |
+ * p
+ * / \
+ * o q
+ *
+ */
+
+ // Check that "w.y" did not get fused with "d.e.f"
+ 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());
+}
+
TEST_F(DomainTreeTest, DISABLED_remove1) {
ofstream o1("d1.dot");
dtree_expose_empty_node.dumpDot(o1);
More information about the bind10-changes
mailing list