Browse Source

[2268] Fix disabled tests without using InMemoryClient::add()

Also remove direct tests for add() as the method has been removed now.
Mukund Sivaraman 12 years ago
parent
commit
eb84acab80
1 changed files with 121 additions and 94 deletions
  1. 121 94
      src/lib/datasrc/tests/memory/memory_client_unittest.cc

+ 121 - 94
src/lib/datasrc/tests/memory/memory_client_unittest.cc

@@ -87,8 +87,7 @@ private:
     MockIterator(const char** rrset_data_ptr, bool pass_empty_rrsig) :
         rrset_data_ptr_(rrset_data_ptr),
         pass_empty_rrsig_(pass_empty_rrsig)
-    {
-    }
+    {}
 
     const char** rrset_data_ptr_;
     // If true, emulate an unexpected bogus case where an RRSIG RRset is
@@ -124,6 +123,117 @@ public:
     }
 };
 
+class MockIteratorRRSIGMixedCovered : public ZoneIterator {
+private:
+    MockIteratorRRSIGMixedCovered(RRClass rrclass) :
+        rrclass_(rrclass),
+        counter_(0)
+    {}
+
+    RRClass rrclass_;
+    int counter_;
+
+public:
+    virtual ConstRRsetPtr getNextRRset() {
+        RRsetPtr rrset;
+
+        switch (counter_) {
+        case 0:
+            rrset.reset(new RRset(Name("example.org"),
+                                  RRClass::IN(), RRType::SOA(), RRTTL(3600)));
+            rrset->addRdata(generic::SOA(Name("ns1.example.org"),
+                                         Name("bugs.x.w.example.org"),
+                                         2010012601, 3600, 300, 3600000, 1200));
+            break;
+
+        case 1: {
+            rrset.reset(new RRset(Name("example.org"),
+                                  RRClass::IN(), RRType::A(), RRTTL(3600)));
+            rrset->addRdata(in::A("192.0.2.1"));
+            rrset->addRdata(in::A("192.0.2.2"));
+
+            RRsetPtr rrsig(new RRset(Name("example.org"), rrclass_,
+                                     RRType::RRSIG(), RRTTL(300)));
+            rrsig->addRdata(generic::RRSIG("A 5 3 "
+                                           "3600 20000101000000 20000201000000 "
+                                           "12345 example.org. FAKEFAKEFAKE"));
+            rrsig->addRdata(generic::RRSIG("NS 5 3 "
+                                           "3600 20000101000000 20000201000000 "
+                                           "54321 example.org. "
+                                           "FAKEFAKEFAKEFAKE"));
+            rrset->addRRsig(rrsig);
+            break;
+        }
+
+        default:
+            rrset.reset();
+        }
+
+        if (counter_ < 2) {
+            counter_++;
+        }
+
+        return (rrset);
+    }
+
+    virtual ConstRRsetPtr getSOA() const {
+        isc_throw(isc::NotImplemented, "Not implemented");
+    }
+
+    static ZoneIteratorPtr makeIterator(RRClass rrclass) {
+        return (ZoneIteratorPtr(new MockIteratorRRSIGMixedCovered(rrclass)));
+    }
+};
+
+class MockIteratorEmptyRRset : public ZoneIterator {
+private:
+    MockIteratorEmptyRRset(RRClass rrclass) :
+        rrclass_(rrclass),
+        counter_(0)
+    {}
+
+    RRClass rrclass_;
+    int counter_;
+
+public:
+    virtual ConstRRsetPtr getNextRRset() {
+        RRsetPtr rrset;
+
+        switch (counter_) {
+        case 0:
+            rrset.reset(new RRset(Name("example.org"),
+                                  RRClass::IN(), RRType::SOA(), RRTTL(3600)));
+            rrset->addRdata(generic::SOA(Name("ns1.example.org"),
+                                         Name("bugs.x.w.example.org"),
+                                         2010012601, 3600, 300, 3600000, 1200));
+            break;
+
+        case 1: {
+            rrset.reset(new RRset(Name("example.org"),
+                                  RRClass::IN(), RRType::A(), RRTTL(3600)));
+            break;
+        }
+
+        default:
+            rrset.reset();
+        }
+
+        if (counter_ < 2) {
+            counter_++;
+        }
+
+        return (rrset);
+    }
+
+    virtual ConstRRsetPtr getSOA() const {
+        isc_throw(isc::NotImplemented, "Not implemented");
+    }
+
+    static ZoneIteratorPtr makeIterator(RRClass rrclass) {
+        return (ZoneIteratorPtr(new MockIteratorEmptyRRset(rrclass)));
+    }
+};
+
 class MemoryClientTest : public ::testing::Test {
 protected:
     MemoryClientTest() : zclass_(RRClass::IN()),
@@ -546,33 +656,15 @@ TEST_F(MemoryClientTest, loadRRSIGs) {
     EXPECT_EQ(1, client_->getZoneCount());
 }
 
-#if 0 // FIXME
-
 TEST_F(MemoryClientTest, loadRRSIGsRdataMixedCoveredTypes) {
-    client_->load(Name("example.org"),
-                  TEST_DATA_DIR "/example.org-rrsigs.zone");
-
-    RRsetPtr rrset(new RRset(Name("example.org"),
-                             RRClass::IN(), RRType::A(), RRTTL(3600)));
-    rrset->addRdata(in::A("192.0.2.1"));
-    rrset->addRdata(in::A("192.0.2.2"));
-
-    RRsetPtr rrsig(new RRset(Name("example.org"), zclass_,
-                             RRType::RRSIG(), RRTTL(300)));
-    rrsig->addRdata(generic::RRSIG("A 5 3 3600 20000101000000 20000201000000 "
-                                   "12345 example.org. FAKEFAKEFAKE"));
-    rrsig->addRdata(generic::RRSIG("NS 5 3 3600 20000101000000 20000201000000 "
-                                   "54321 example.org. FAKEFAKEFAKEFAKE"));
-    rrset->addRRsig(rrsig);
-
-    EXPECT_THROW(client_->add(Name("example.org"), rrset),
-                 ZoneDataUpdater::AddError);
-
+    // FIXME: This should throw, but it doesn't now.
+    EXPECT_THROW(
+        client_->load(Name("example.org"),
+                      *MockIteratorRRSIGMixedCovered::makeIterator(zclass_)),
+        ZoneDataUpdater::AddError);
     // Teardown checks for memory segment leaks
 }
 
-#endif
-
 TEST_F(MemoryClientTest, getZoneCount) {
     EXPECT_EQ(0, client_->getZoneCount());
     client_->load(Name("example.org"), TEST_DATA_DIR "/example.org-empty.zone");
@@ -662,79 +754,14 @@ TEST_F(MemoryClientTest, getIteratorGetSOAThrowsNotImplemented) {
     EXPECT_THROW(iterator->getSOA(), isc::NotImplemented);
 }
 
-#if 0 // FIXME
-
-TEST_F(MemoryClientTest, addRRsetToNonExistentZoneThrows) {
-    // The zone "example.org" doesn't exist, so we can't add an RRset to
-    // it.
-    RRsetPtr rrset_a(new RRset(Name("example.org"), RRClass::IN(), RRType::A(),
-                               RRTTL(300)));
-    rrset_a->addRdata(rdata::in::A("192.0.2.1"));
-    EXPECT_THROW(client_->add(Name("example.org"), rrset_a), DataSourceError);
-}
-
-TEST_F(MemoryClientTest, addOutOfZoneThrows) {
-    // Out of zone names should throw.
-    client_->load(Name("example.org"),
-                  TEST_DATA_DIR "/example.org-empty.zone");
-
-    RRsetPtr rrset_a(new RRset(Name("a.example.com"),
-                               RRClass::IN(), RRType::A(), RRTTL(300)));
-    rrset_a->addRdata(rdata::in::A("192.0.2.1"));
-
-    EXPECT_THROW(client_->add(Name("example.org"), rrset_a),
-                 OutOfZone);
-    // Teardown checks for memory segment leaks
-}
-
-TEST_F(MemoryClientTest, addNullRRsetThrows) {
-    client_->load(Name("example.org"),
-                  TEST_DATA_DIR "/example.org-rrsigs.zone");
-
-    EXPECT_THROW(client_->add(Name("example.org"), ConstRRsetPtr()),
-                 ZoneDataUpdater::NullRRset);
-
-    // Teardown checks for memory segment leaks
-}
-
 TEST_F(MemoryClientTest, addEmptyRRsetThrows) {
-    client_->load(Name("example.org"),
-                  TEST_DATA_DIR "/example.org-rrsigs.zone");
-
-    RRsetPtr rrset_a(new RRset(Name("example.org"), RRClass::IN(), RRType::A(),
-                               RRTTL(300)));
-    EXPECT_THROW(client_->add(Name("example.org"), rrset_a),
-                 ZoneDataUpdater::AddError);
-
+    EXPECT_THROW(
+        client_->load(Name("example.org"),
+                      *MockIteratorEmptyRRset::makeIterator(zclass_)),
+        ZoneDataUpdater::AddError);
     // Teardown checks for memory segment leaks
 }
 
-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());
-}
-
-#endif
-
 TEST_F(MemoryClientTest, findZoneData) {
     client_->load(Name("example.org"),
                   TEST_DATA_DIR "/example.org-rrsigs.zone");