BIND 10 trac2836, updated. 807f3b5cd6b5f7daed92413e9ab771ec500b6536 [2836] Less hacky way to access the zone data in tests

BIND 10 source code commits bind10-changes at lists.isc.org
Mon May 13 12:43:33 UTC 2013


The branch, trac2836 has been updated
       via  807f3b5cd6b5f7daed92413e9ab771ec500b6536 (commit)
       via  772de981b14ae73731b54e6dcc5b84935584f1ce (commit)
      from  bd04d06c2d51af45ed818e90ef500936dafca1c4 (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 807f3b5cd6b5f7daed92413e9ab771ec500b6536
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date:   Mon May 13 14:42:03 2013 +0200

    [2836] Less hacky way to access the zone data in tests
    
    Store it separately as named address and access it every time, instead
    of sneaking into the updater internal.

commit 772de981b14ae73731b54e6dcc5b84935584f1ce
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date:   Mon May 13 14:14:20 2013 +0200

    [2836] Provide virtual destructor
    
    Just to be sure

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

Summary of changes:
 src/lib/datasrc/memory/zone_data_updater.h         |    5 --
 .../tests/memory/zone_data_updater_unittest.cc     |   74 +++++++++-----------
 2 files changed, 33 insertions(+), 46 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/zone_data_updater.h b/src/lib/datasrc/memory/zone_data_updater.h
index 4f8351e..c13b8d3 100644
--- a/src/lib/datasrc/memory/zone_data_updater.h
+++ b/src/lib/datasrc/memory/zone_data_updater.h
@@ -200,11 +200,6 @@ private:
     const isc::dns::Name& zone_name_;
     RdataEncoder encoder_;
     const isc::dns::NSEC3Hash* hash_;
-protected:
-    /// \brief The zone data
-    ///
-    /// Protected, so the tests can get in. But it should not be accessed
-    /// in general code.
     ZoneData* zone_data_;
 };
 
diff --git a/src/lib/datasrc/tests/memory/zone_data_updater_unittest.cc b/src/lib/datasrc/tests/memory/zone_data_updater_unittest.cc
index ed677d2..7bb856b 100644
--- a/src/lib/datasrc/tests/memory/zone_data_updater_unittest.cc
+++ b/src/lib/datasrc/tests/memory/zone_data_updater_unittest.cc
@@ -49,6 +49,7 @@ const char* const mapped_file = TEST_DATA_BUILDDIR "/test.mapped";
 // test, so we have different factories for them.
 class SegmentCreator {
 public:
+    virtual ~SegmentCreator() {}
     typedef boost::shared_ptr<isc::util::MemorySegment> SegmentPtr;
     // Create the segment.
     virtual SegmentPtr create() const = 0;
@@ -67,33 +68,24 @@ getNode(isc::util::MemorySegment& mem_sgmt, const Name& name,
     return (node);
 }
 
-// Just the same as ZoneDataUpdater, but it lets get in to some guts.
-class TestZoneDataUpdater : public ZoneDataUpdater {
-public:
-    TestZoneDataUpdater(isc::util::MemorySegment& mem_sgmt,
-                        isc::dns::RRClass rrclass,
-                        const isc::dns::Name& zone_name,
-                        ZoneData& zone_data):
-        ZoneDataUpdater(mem_sgmt, rrclass, zone_name, zone_data)
-    {}
-    ZoneData* getZoneData() const { return (zone_data_); }
-};
-
 class ZoneDataUpdaterTest : public ::testing::TestWithParam<SegmentCreator*> {
 protected:
     ZoneDataUpdaterTest() :
         zname_("example.org"), zclass_(RRClass::IN()),
-        mem_sgmt_(GetParam()->create()),
-        updater_(new
-                 TestZoneDataUpdater(*mem_sgmt_, zclass_, zname_,
-                                     *ZoneData::create(*mem_sgmt_, zname_)))
-    {}
+        mem_sgmt_(GetParam()->create())
+    {
+        ZoneData *data = ZoneData::create(*mem_sgmt_, zname_);
+        mem_sgmt_->setNamedAddress("Test zone data", data);
+        updater_.reset(new ZoneDataUpdater(*mem_sgmt_, zclass_, zname_,
+                                           *data));
+    }
 
     ~ZoneDataUpdaterTest() {
         if (updater_) {
-            ZoneData::destroy(*mem_sgmt_, updater_->getZoneData(), zclass_);
+            ZoneData::destroy(*mem_sgmt_, getZoneData(), zclass_);
             // Release the updater, so it frees all memory inside the segment too
             updater_.reset();
+            mem_sgmt_->clearNamedAddress("Test zone data");
         }
         if (!mem_sgmt_->allMemoryDeallocated()) {
             ADD_FAILURE() << "Memory leak detected";
@@ -103,17 +95,24 @@ protected:
 
     void clearZoneData() {
         assert(updater_);
-        ZoneData::destroy(*mem_sgmt_, updater_->getZoneData(), zclass_);
+        ZoneData::destroy(*mem_sgmt_, getZoneData(), zclass_);
+        mem_sgmt_->clearNamedAddress("Test zone data");
         updater_.reset();
-        updater_.reset(new TestZoneDataUpdater(*mem_sgmt_, zclass_, zname_,
-                                               *ZoneData::create(*mem_sgmt_,
-                                                                 zname_)));
+        ZoneData *data = ZoneData::create(*mem_sgmt_, zname_);
+        mem_sgmt_->setNamedAddress("Test zone data", data);
+        updater_.reset(new ZoneDataUpdater(*mem_sgmt_, zclass_, zname_,
+                                           *data));
+    }
+
+    ZoneData* getZoneData() {
+        return (static_cast<ZoneData*>(
+            mem_sgmt_->getNamedAddress("Test zone data")));
     }
 
     const Name zname_;
     const RRClass zclass_;
     boost::shared_ptr<isc::util::MemorySegment> mem_sgmt_;
-    boost::scoped_ptr<TestZoneDataUpdater> updater_;
+    boost::scoped_ptr<ZoneDataUpdater> updater_;
 };
 
 class TestSegmentCreator : public SegmentCreator {
@@ -185,8 +184,7 @@ TEST_P(ZoneDataUpdaterTest, zoneMinTTL) {
                       "example.org. 3600 IN SOA . . 0 0 0 0 1200",
                       zclass_, zname_),
                   ConstRRsetPtr());
-    isc::util::InputBuffer b(updater_->getZoneData()->getMinTTLData(),
-                             sizeof(uint32_t));
+    isc::util::InputBuffer b(getZoneData()->getMinTTLData(), sizeof(uint32_t));
     EXPECT_EQ(RRTTL(1200), RRTTL(b));
 }
 
@@ -197,7 +195,7 @@ TEST_P(ZoneDataUpdaterTest, rrsigOnly) {
                       "www.example.org. 3600 IN RRSIG A 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
     ZoneNode* node = getNode(*mem_sgmt_, Name("www.example.org"),
-                             updater_->getZoneData());
+                             getZoneData());
     const RdataSet* rdset = node->getData();
     ASSERT_NE(static_cast<RdataSet*>(NULL), rdset);
     rdset = RdataSet::find(rdset, RRType::A(), true);
@@ -215,8 +213,7 @@ TEST_P(ZoneDataUpdaterTest, rrsigOnly) {
     updater_->add(ConstRRsetPtr(), textToRRset(
                       "*.wild.example.org. 3600 IN RRSIG A 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    node = getNode(*mem_sgmt_, Name("wild.example.org"),
-                   updater_->getZoneData());
+    node = getNode(*mem_sgmt_, Name("wild.example.org"), getZoneData());
     EXPECT_TRUE(node->getFlag(ZoneData::WILDCARD_NODE));
 
     // Simply adding RRSIG covering (delegating NS) shouldn't enable callback
@@ -224,16 +221,14 @@ TEST_P(ZoneDataUpdaterTest, rrsigOnly) {
     updater_->add(ConstRRsetPtr(), textToRRset(
                       "child.example.org. 3600 IN RRSIG NS 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    node = getNode(*mem_sgmt_, Name("child.example.org"),
-                   updater_->getZoneData());
+    node = getNode(*mem_sgmt_, Name("child.example.org"), getZoneData());
     EXPECT_FALSE(node->getFlag(ZoneNode::FLAG_CALLBACK));
 
     // Same for DNAME
     updater_->add(ConstRRsetPtr(), textToRRset(
                       "dname.example.org. 3600 IN RRSIG DNAME 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    node = getNode(*mem_sgmt_, Name("dname.example.org"),
-                   updater_->getZoneData());
+    node = getNode(*mem_sgmt_, Name("dname.example.org"), getZoneData());
     EXPECT_FALSE(node->getFlag(ZoneNode::FLAG_CALLBACK));
 
     // Likewise, RRSIG for NSEC3PARAM alone shouldn't make the zone
@@ -241,13 +236,13 @@ TEST_P(ZoneDataUpdaterTest, rrsigOnly) {
     updater_->add(ConstRRsetPtr(), textToRRset(
                       "example.org. 3600 IN RRSIG NSEC3PARAM 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    EXPECT_FALSE(updater_->getZoneData()->isNSEC3Signed());
+    EXPECT_FALSE(getZoneData()->isNSEC3Signed());
 
     // And same for (RRSIG for) NSEC and "is signed".
     updater_->add(ConstRRsetPtr(), textToRRset(
                       "example.org. 3600 IN RRSIG NSEC 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    EXPECT_FALSE(updater_->getZoneData()->isSigned());
+    EXPECT_FALSE(getZoneData()->isSigned());
 }
 
 // Commonly used checks for rrsigForNSEC3Only
@@ -280,13 +275,12 @@ TEST_P(ZoneDataUpdaterTest, rrsigForNSEC3Only) {
                   textToRRset(
                       "example.org. 3600 IN RRSIG NSEC3PARAM 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    EXPECT_TRUE(updater_->getZoneData()->isNSEC3Signed());
+    EXPECT_TRUE(getZoneData()->isNSEC3Signed());
     updater_->add(ConstRRsetPtr(),
                   textToRRset(
                       "09GM.example.org. 3600 IN RRSIG NSEC3 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    checkNSEC3Rdata(*mem_sgmt_, Name("09GM.example.org"),
-                    updater_->getZoneData());
+    checkNSEC3Rdata(*mem_sgmt_, Name("09GM.example.org"), getZoneData());
 
     // Clear the current content of zone, then add NSEC3
     clearZoneData();
@@ -299,8 +293,7 @@ TEST_P(ZoneDataUpdaterTest, rrsigForNSEC3Only) {
                   textToRRset(
                       "09GM.example.org. 3600 IN RRSIG NSEC3 5 3 3600 "
                       "20150420235959 20051021000000 1 example.org. FAKE"));
-    checkNSEC3Rdata(*mem_sgmt_, Name("09GM.example.org"),
-                    updater_->getZoneData());
+    checkNSEC3Rdata(*mem_sgmt_, Name("09GM.example.org"), getZoneData());
 
     // If we add only RRSIG without any NSEC3 related data beforehand,
     // it will be rejected; it's a limitation of the current implementation.
@@ -328,8 +321,7 @@ TEST_P(ZoneDataUpdaterTest, manySmallRRsets) {
                                   "example.org. FAKE"));
         ZoneNode* node = getNode(*mem_sgmt_,
                                  Name(boost::lexical_cast<std::string>(i) +
-                                      ".example.org"),
-                                 updater_->getZoneData());
+                                      ".example.org"), getZoneData());
         const RdataSet* rdset = node->getData();
         ASSERT_NE(static_cast<RdataSet*>(NULL), rdset);
         rdset = RdataSet::find(rdset, RRType::TXT(), true);



More information about the bind10-changes mailing list