BIND 10 trac2108_3, updated. 92850a8f2cbcd9dd08882fc92c3db5fe11f8a32f [2108] Add another InMemoryClient::add() test

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Sep 5 14:13:15 UTC 2012


The branch, trac2108_3 has been updated
       via  92850a8f2cbcd9dd08882fc92c3db5fe11f8a32f (commit)
       via  d06f56460ccb91743e5e09a22b5051e6c2c7de8c (commit)
      from  f8b817744f6207f0aa8d997c7faf35b520383adc (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 92850a8f2cbcd9dd08882fc92c3db5fe11f8a32f
Author: Mukund Sivaraman <muks at isc.org>
Date:   Wed Sep 5 19:43:03 2012 +0530

    [2108] Add another InMemoryClient::add() test

commit d06f56460ccb91743e5e09a22b5051e6c2c7de8c
Author: Mukund Sivaraman <muks at isc.org>
Date:   Wed Sep 5 19:42:42 2012 +0530

    [2108] When adding RRsets, ensure that any last rrset was flushed

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

Summary of changes:
 src/lib/datasrc/memory/memory_client.cc            |   12 +++++++++-
 .../datasrc/memory/tests/memory_client_unittest.cc |   24 ++++++++++++++++++++
 2 files changed, 35 insertions(+), 1 deletion(-)

-----------------------------------------------------------------------
diff --git a/src/lib/datasrc/memory/memory_client.cc b/src/lib/datasrc/memory/memory_client.cc
index ef59f7f..1a04036 100644
--- a/src/lib/datasrc/memory/memory_client.cc
+++ b/src/lib/datasrc/memory/memory_client.cc
@@ -719,12 +719,22 @@ InMemoryClient::getFileName(const isc::dns::Name& zone_name) const {
 result::Result
 InMemoryClient::add(const isc::dns::Name& zone_name,
                     const ConstRRsetPtr& rrset) {
+    assert(!impl_->last_rrset_);
+
     ZoneTable::FindResult result(impl_->zone_table_->findZone(zone_name));
     if (result.code != result::SUCCESS) {
         isc_throw(DataSourceError, "No such zone: " + zone_name.toText());
     }
 
-    return (impl_->add(rrset, zone_name, *result.zone_data));
+    result::Result ret(impl_->add(rrset, zone_name, *result.zone_data));
+
+    // Add any last RRset that was left
+    impl_->addRdataSet(zone_name, *result.zone_data,
+                       ConstRRsetPtr(), ConstRRsetPtr());
+
+    assert(!impl_->last_rrset_);
+
+    return (ret);
 }
 
 namespace {
diff --git a/src/lib/datasrc/memory/tests/memory_client_unittest.cc b/src/lib/datasrc/memory/tests/memory_client_unittest.cc
index bf445a5..aa51a4a 100644
--- a/src/lib/datasrc/memory/tests/memory_client_unittest.cc
+++ b/src/lib/datasrc/memory/tests/memory_client_unittest.cc
@@ -118,6 +118,30 @@ TEST_F(MemoryClientTest, addRRsetToNonExistentZoneThrows) {
     EXPECT_THROW(client_->add(Name("example.org"), rrset_a), DataSourceError);
 }
 
+TEST_F(MemoryClientTest, add) {
+    client_->load(Name("example.org"), TEST_DATA_DIR "/example.org-empty.zone");
+
+    // Add another RRset
+    RRsetPtr rrset_a(new RRset(Name("example.org"), RRClass::IN(), RRType::A(),
+                               RRTTL(300)));
+    rrset_a->addRdata(rdata::in::A("192.0.2.1"));
+    client_->add(Name("example.org"), rrset_a);
+
+    ZoneIteratorPtr iterator(client_->getIterator(Name("example.org")));
+
+    // First we have the SOA
+    ConstRRsetPtr rrset(iterator->getNextRRset());
+    EXPECT_TRUE(rrset);
+    EXPECT_EQ(RRType::A(), rrset->getType());
+
+    rrset = iterator->getNextRRset();
+    EXPECT_TRUE(rrset);
+    EXPECT_EQ(RRType::SOA(), rrset->getType());
+
+    // There's nothing else in this zone
+    EXPECT_EQ(ConstRRsetPtr(), iterator->getNextRRset());
+}
+
 TEST_F(MemoryClientTest, getUpdaterThrowsNotImplemented) {
     // This method is not implemented.
     EXPECT_THROW(client_->getUpdater(Name("."), false, false),



More information about the bind10-changes mailing list