BIND 10 trac497, updated. 4d29fda48f7304d2c5bfbc246326850ca5970b0f [trac497] added some more tests

BIND 10 source code commits bind10-changes at lists.isc.org
Mon Feb 7 15:55:00 UTC 2011


The branch, trac497 has been updated
       via  4d29fda48f7304d2c5bfbc246326850ca5970b0f (commit)
      from  1ed67ffd6fc90c04a79056766b2658c01d30c548 (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 4d29fda48f7304d2c5bfbc246326850ca5970b0f
Author: Jelte Jansen <jelte at isc.org>
Date:   Mon Feb 7 16:54:47 2011 +0100

    [trac497] added some more tests

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

Summary of changes:
 src/lib/resolve/tests/resolve_unittest.cc |  190 +++++++++++++++++++----------
 1 files changed, 125 insertions(+), 65 deletions(-)

-----------------------------------------------------------------------
diff --git a/src/lib/resolve/tests/resolve_unittest.cc b/src/lib/resolve/tests/resolve_unittest.cc
index fddfa70..37753d2 100644
--- a/src/lib/resolve/tests/resolve_unittest.cc
+++ b/src/lib/resolve/tests/resolve_unittest.cc
@@ -30,83 +30,143 @@ namespace {
 class ResolveHelperFunctionsTest : public ::testing::Test {
 public:
     ResolveHelperFunctionsTest() :
-        message_(new Message(Message::RENDER)),
+        message_a_(new Message(Message::RENDER)),
+        message_b_(new Message(Message::RENDER)),
         question_(new Question(Name("www.example.com"), RRClass::IN(), RRType::A()))
     {
-        message_->setOpcode(Opcode::QUERY());
-        message_->setRcode(Rcode::NOERROR());
-        message_->addQuestion(question_);
+        createMessageA();
+        createMessageB();
     };
 
-    MessagePtr message_;
-    QuestionPtr question_;
+    void createMessageA() {
+        message_a_->setOpcode(Opcode::QUERY());
+        message_a_->setRcode(Rcode::NOERROR());
+        message_a_->addQuestion(question_);
+    }
+
+    void createMessageB() {
+        message_b_->setOpcode(Opcode::QUERY());
+        message_b_->setRcode(Rcode::NOERROR());
+        message_b_->addQuestion(question_);
+
+        // We could reuse the same rrset in the different sections,
+        // but to be sure, we create separate ones
+        RRsetPtr answer_rrset(new RRset(Name("www.example.com"),
+                                        RRClass::IN(), RRType::TXT(),
+                                        RRTTL(3600)));
+        answer_rrset->addRdata(rdata::createRdata(RRType::TXT(),
+                                                  RRClass::IN(),
+                                                  "Answer"));
+        message_b_->addRRset(Message::SECTION_ANSWER, answer_rrset);
     
+        RRsetPtr auth_rrset(new RRset(Name("www.example.com"),
+                                        RRClass::IN(), RRType::TXT(),
+                                        RRTTL(3600)));
+        auth_rrset->addRdata(rdata::createRdata(RRType::TXT(),
+                                                  RRClass::IN(),
+                                                  "Authority"));
+        auth_rrset->addRdata(rdata::createRdata(RRType::TXT(),
+                                                  RRClass::IN(),
+                                                  "Rdata"));
+        message_b_->addRRset(Message::SECTION_AUTHORITY, auth_rrset);
+    
+        RRsetPtr add_rrset(new RRset(Name("www.example.com"),
+                                     RRClass::IN(), RRType::TXT(),
+                                     RRTTL(3600)));
+        add_rrset->addRdata(rdata::createRdata(RRType::TXT(),
+                                               RRClass::IN(),
+                                               "Additional"));
+        add_rrset->addRdata(rdata::createRdata(RRType::TXT(),
+                                               RRClass::IN(),
+                                               "Rdata"));
+        add_rrset->addRdata(rdata::createRdata(RRType::TXT(),
+                                               RRClass::IN(),
+                                               "fields."));
+        message_b_->addRRset(Message::SECTION_ADDITIONAL, add_rrset);
+    };
+
+    MessagePtr message_a_;
+    MessagePtr message_b_;
+    QuestionPtr question_;
 };
 
 TEST_F(ResolveHelperFunctionsTest, makeErrorMessageEmptyMessage) {
-    ASSERT_EQ(Rcode::NOERROR(), message_->getRcode());
-    ASSERT_EQ(1, message_->getRRCount(Message::SECTION_QUESTION));
-    ASSERT_EQ(0, message_->getRRCount(Message::SECTION_ANSWER));
-    ASSERT_EQ(0, message_->getRRCount(Message::SECTION_AUTHORITY));
-    ASSERT_EQ(0, message_->getRRCount(Message::SECTION_ADDITIONAL));
-
-    isc::resolve::makeErrorMessage(message_, Rcode::SERVFAIL());
-    EXPECT_EQ(Rcode::SERVFAIL(), message_->getRcode());
-    EXPECT_EQ(1, message_->getRRCount(Message::SECTION_QUESTION));
-    EXPECT_EQ(0, message_->getRRCount(Message::SECTION_ANSWER));
-    EXPECT_EQ(0, message_->getRRCount(Message::SECTION_AUTHORITY));
-    EXPECT_EQ(0, message_->getRRCount(Message::SECTION_ADDITIONAL));
+    ASSERT_EQ(Rcode::NOERROR(), message_a_->getRcode());
+    ASSERT_EQ(1, message_a_->getRRCount(Message::SECTION_QUESTION));
+    ASSERT_EQ(0, message_a_->getRRCount(Message::SECTION_ANSWER));
+    ASSERT_EQ(0, message_a_->getRRCount(Message::SECTION_AUTHORITY));
+    ASSERT_EQ(0, message_a_->getRRCount(Message::SECTION_ADDITIONAL));
+
+    isc::resolve::makeErrorMessage(message_a_, Rcode::SERVFAIL());
+    EXPECT_EQ(Rcode::SERVFAIL(), message_a_->getRcode());
+    EXPECT_EQ(1, message_a_->getRRCount(Message::SECTION_QUESTION));
+    EXPECT_EQ(0, message_a_->getRRCount(Message::SECTION_ANSWER));
+    EXPECT_EQ(0, message_a_->getRRCount(Message::SECTION_AUTHORITY));
+    EXPECT_EQ(0, message_a_->getRRCount(Message::SECTION_ADDITIONAL));
 }
 
 TEST_F(ResolveHelperFunctionsTest, makeErrorMessageNonEmptyMessage) {
-    // We could reuse the same rrset in the different sections,
-    // but to be sure, we create separate ones
-    RRsetPtr answer_rrset(new RRset(Name("www.example.com"),
-                                    RRClass::IN(), RRType::TXT(),
-                                    RRTTL(3600)));
-    answer_rrset->addRdata(rdata::createRdata(RRType::TXT(),
-                                              RRClass::IN(),
-                                              "Answer"));
-    message_->addRRset(Message::SECTION_ANSWER, answer_rrset);
-
-    RRsetPtr auth_rrset(new RRset(Name("www.example.com"),
-                                    RRClass::IN(), RRType::TXT(),
-                                    RRTTL(3600)));
-    auth_rrset->addRdata(rdata::createRdata(RRType::TXT(),
-                                              RRClass::IN(),
-                                              "Authority"));
-    auth_rrset->addRdata(rdata::createRdata(RRType::TXT(),
-                                              RRClass::IN(),
-                                              "Rdata"));
-    message_->addRRset(Message::SECTION_AUTHORITY, auth_rrset);
-
-    RRsetPtr add_rrset(new RRset(Name("www.example.com"),
-                                 RRClass::IN(), RRType::TXT(),
-                                 RRTTL(3600)));
-    add_rrset->addRdata(rdata::createRdata(RRType::TXT(),
-                                           RRClass::IN(),
-                                           "Additional"));
-    add_rrset->addRdata(rdata::createRdata(RRType::TXT(),
-                                           RRClass::IN(),
-                                           "Rdata"));
-    add_rrset->addRdata(rdata::createRdata(RRType::TXT(),
-                                           RRClass::IN(),
-                                           "fields."));
-    message_->addRRset(Message::SECTION_ADDITIONAL, add_rrset);
-
-    ASSERT_EQ(Rcode::NOERROR(), message_->getRcode());
-    ASSERT_EQ(1, message_->getRRCount(Message::SECTION_QUESTION));
-    ASSERT_EQ(1, message_->getRRCount(Message::SECTION_ANSWER));
-    ASSERT_EQ(2, message_->getRRCount(Message::SECTION_AUTHORITY));
-    ASSERT_EQ(3, message_->getRRCount(Message::SECTION_ADDITIONAL));
-
-    isc::resolve::makeErrorMessage(message_, Rcode::FORMERR());
-    EXPECT_EQ(Rcode::FORMERR(), message_->getRcode());
-    EXPECT_EQ(1, message_->getRRCount(Message::SECTION_QUESTION));
-    EXPECT_EQ(0, message_->getRRCount(Message::SECTION_ANSWER));
-    EXPECT_EQ(0, message_->getRRCount(Message::SECTION_AUTHORITY));
-    EXPECT_EQ(0, message_->getRRCount(Message::SECTION_ADDITIONAL));
+
+    ASSERT_EQ(Rcode::NOERROR(), message_b_->getRcode());
+    ASSERT_EQ(1, message_b_->getRRCount(Message::SECTION_QUESTION));
+    ASSERT_EQ(1, message_b_->getRRCount(Message::SECTION_ANSWER));
+    ASSERT_EQ(2, message_b_->getRRCount(Message::SECTION_AUTHORITY));
+    ASSERT_EQ(3, message_b_->getRRCount(Message::SECTION_ADDITIONAL));
+
+    isc::resolve::makeErrorMessage(message_b_, Rcode::FORMERR());
+    EXPECT_EQ(Rcode::FORMERR(), message_b_->getRcode());
+    EXPECT_EQ(1, message_b_->getRRCount(Message::SECTION_QUESTION));
+    EXPECT_EQ(0, message_b_->getRRCount(Message::SECTION_ANSWER));
+    EXPECT_EQ(0, message_b_->getRRCount(Message::SECTION_AUTHORITY));
+    EXPECT_EQ(0, message_b_->getRRCount(Message::SECTION_ADDITIONAL));
+}
+
+void
+compareSections(const MessagePtr message_a, const MessagePtr message_b,
+                Message::Section section)
+{
+    RRsetIterator rrs_a = message_a->beginSection(section);
+    RRsetIterator rrs_b = message_b->beginSection(section);
+    while (rrs_a != message_a->endSection(section) &&
+           rrs_b != message_b->endSection(section)
+          ) {
+        EXPECT_EQ(*rrs_a, *rrs_b);
+        ++rrs_a;
+        ++rrs_b;
+    }
+    // can't use EXPECT_EQ here, no eqHelper for endsection comparison
+    EXPECT_TRUE(rrs_a == message_a->endSection(section));
+    EXPECT_TRUE(rrs_b == message_b->endSection(section));
 }
 
+TEST_F(ResolveHelperFunctionsTest, copyAnswerMessage) {
+    message_b_->setRcode(Rcode::NXDOMAIN());
+    
+    ASSERT_NE(message_b_->getRcode(), message_a_->getRcode());
+    ASSERT_NE(message_b_->getRRCount(Message::SECTION_ANSWER),
+              message_a_->getRRCount(Message::SECTION_ANSWER));
+    ASSERT_NE(message_b_->getRRCount(Message::SECTION_AUTHORITY),
+              message_a_->getRRCount(Message::SECTION_AUTHORITY));
+    ASSERT_NE(message_b_->getRRCount(Message::SECTION_ADDITIONAL),
+              message_a_->getRRCount(Message::SECTION_ADDITIONAL));
+    ASSERT_EQ(0, message_a_->getRRCount(Message::SECTION_ANSWER));
+    ASSERT_EQ(0, message_a_->getRRCount(Message::SECTION_AUTHORITY));
+    ASSERT_EQ(0, message_a_->getRRCount(Message::SECTION_ADDITIONAL));
+
+    isc::resolve::copyAnswerMessage(*message_b_, message_a_);
+
+    EXPECT_EQ(message_b_->getRcode(), message_a_->getRcode());
+    ASSERT_EQ(message_b_->getRRCount(Message::SECTION_ANSWER),
+              message_a_->getRRCount(Message::SECTION_ANSWER));
+    ASSERT_EQ(message_b_->getRRCount(Message::SECTION_AUTHORITY),
+              message_a_->getRRCount(Message::SECTION_AUTHORITY));
+    ASSERT_EQ(message_b_->getRRCount(Message::SECTION_ADDITIONAL),
+              message_a_->getRRCount(Message::SECTION_ADDITIONAL));
+
+    
+    compareSections(message_a_, message_b_, Message::SECTION_ANSWER);
+    compareSections(message_a_, message_b_, Message::SECTION_AUTHORITY);
+    compareSections(message_a_, message_b_, Message::SECTION_ADDITIONAL);
+}
 
 } // Anonymous namespace




More information about the bind10-changes mailing list