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