Browse Source

Commit the change for cache unittest.

zhanglikun 14 years ago
parent
commit
238f276c9b
2 changed files with 27 additions and 3 deletions
  1. 2 0
      src/lib/cache/message_entry.cc
  2. 25 3
      src/lib/cache/tests/message_cache_unittest.cc

+ 2 - 0
src/lib/cache/message_entry.cc

@@ -48,6 +48,8 @@ MessageEntry::genMessage(const time_t& time_now,
         // The message entry has expired.
         return false;
     } else {
+        // We don't need to add question section, since it has 
+        // been included in the message.
         ConstEDNSPtr edns(msg.getEDNS());
         bool dnssec_need = edns;
         uint16_t index = 0;

+ 25 - 3
src/lib/cache/tests/message_cache_unittest.cc

@@ -29,6 +29,20 @@ using namespace std;
 
 namespace {
 
+/// \brief Derived from base class to make it easy to test
+/// its internals.
+class DerivedMessageCache: public MessageCache {
+public:
+    DerivedMessageCache(boost::shared_ptr<RRsetCache> rrset_cache_,
+                        uint32_t cache_size, uint16_t message_class):
+        MessageCache(rrset_cache_, cache_size, message_class)
+    {}
+
+    uint16_t messages_count() {
+        return message_table_.tableSize();
+    }
+};
+
 class MessageCacheTest: public testing::Test {
 public:
     MessageCacheTest(): message_parse(Message::PARSE),
@@ -36,14 +50,14 @@ public:
     {
         uint16_t class_ = 1; // class IN
         rrset_cache_.reset(new RRsetCache(RRSET_CACHE_DEFAULT_SIZE, class_));
-        message_cache_.reset(new MessageCache(rrset_cache_, 
+        message_cache_.reset(new DerivedMessageCache(rrset_cache_, 
                                           MESSAGE_CACHE_DEFAULT_SIZE, class_ ));
     }
 
     void messageFromFile(Message& message, const char* datafile);
 
 protected:
-    MessageCachePtr message_cache_;
+    boost::shared_ptr<DerivedMessageCache> message_cache_;
     RRsetCachePtr rrset_cache_;
     Message message_parse;
     Message message_render;
@@ -63,8 +77,16 @@ TEST_F(MessageCacheTest, testUpdate) {
     EXPECT_TRUE(message_cache_->update(message_parse));
     Name qname("test.example.com.");
     RRType qtype(1);
-
     EXPECT_TRUE(message_cache_->lookup(qname, qtype, message_render));
+    EXPECT_EQ(message_cache_->messages_count(), 1);
+
+    messageFromFile(message_parse, "message_fromWire2");
+    EXPECT_TRUE(message_cache_->update(message_parse));
+    EXPECT_EQ(message_cache_->messages_count(), 2);
+
+    Name qname1("test.example.net.");
+    RRType qtype1(1);
+    EXPECT_TRUE(message_cache_->lookup(qname1, qtype1, message_render));
 }
 
 }   // namespace