[svn] commit: r1987 - in /branches/trac192/src/lib/datasrc: TODO tests/Makefile.am tests/datasrc_unittest.cc tests/query_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Sun May 30 02:53:53 UTC 2010
Author: each
Date: Sun May 30 02:53:52 2010
New Revision: 1987
Log:
checkpoint: restore query_unittest.cc, which had been disabled
due to incompatibility with the new QueryTask constructor format
Modified:
branches/trac192/src/lib/datasrc/TODO
branches/trac192/src/lib/datasrc/tests/Makefile.am
branches/trac192/src/lib/datasrc/tests/datasrc_unittest.cc
branches/trac192/src/lib/datasrc/tests/query_unittest.cc
Modified: branches/trac192/src/lib/datasrc/TODO
==============================================================================
--- branches/trac192/src/lib/datasrc/TODO (original)
+++ branches/trac192/src/lib/datasrc/TODO Sun May 30 02:53:52 2010
@@ -1,12 +1,5 @@
- store rdata in the database as binary blobs instead of text
hot cache:
-- add a fast lookup method (using a hash table or a std::map)
- to HotCache so retrieval isn't linear.
-
- restore query_unittest.cc, which is currently disabled because of
the change in QueryTask construction.
-
-- add a test for DS queries correctly going to the parent class.
-
-- examine rdclass==ANY queries. do these make sense to support in any way?
Modified: branches/trac192/src/lib/datasrc/tests/Makefile.am
==============================================================================
--- branches/trac192/src/lib/datasrc/tests/Makefile.am (original)
+++ branches/trac192/src/lib/datasrc/tests/Makefile.am Sun May 30 02:53:52 2010
@@ -13,8 +13,7 @@
run_unittests_SOURCES += datasrc_unittest.cc
run_unittests_SOURCES += sqlite3_unittest.cc
run_unittests_SOURCES += static_unittest.cc
-# XXX temporarily disabled
-#run_unittests_SOURCES += query_unittest.cc
+run_unittests_SOURCES += query_unittest.cc
run_unittests_SOURCES += cache_unittest.cc
run_unittests_SOURCES += test_datasrc.h test_datasrc.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
Modified: branches/trac192/src/lib/datasrc/tests/datasrc_unittest.cc
==============================================================================
--- branches/trac192/src/lib/datasrc/tests/datasrc_unittest.cc (original)
+++ branches/trac192/src/lib/datasrc/tests/datasrc_unittest.cc Sun May 30 02:53:52 2010
@@ -867,6 +867,27 @@
EXPECT_EQ(0, ds.dataSrcCount());
}
+TEST_F(DataSrcTest, NameMatch) {
+ MetaDataSrc ds;
+ ConstDataSrcPtr tsp = ConstDataSrcPtr(new TestDataSrc);
+ ds.addDataSrc(tsp);
+ NameMatch zoneinfo(&ds, Name("very.very.long.example.com"), RRClass::IN());
+ EXPECT_EQ(Name("example.com"), *zoneinfo.name());
+ EXPECT_EQ(tsp.get(), zoneinfo.datasrc());
+}
+
+TEST_F(DataSrcTest, NameMatchByType) {
+ MetaDataSrc ds;
+ ConstDataSrcPtr tsp = ConstDataSrcPtr(new TestDataSrc);
+ ds.addDataSrc(tsp);
+ NameMatch zoneinfo1(&ds, Name("sql1.example.com"), RRClass::IN(),
+ RRType::NS());
+ EXPECT_EQ(Name("sql1.example.com"), *zoneinfo1.name());
+ NameMatch zoneinfo2(&ds, Name("sql1.example.com"), RRClass::IN(),
+ RRType::DS());
+ EXPECT_EQ(Name("example.com"), *zoneinfo2.name());
+}
+
#if 0 // currently fails
TEST_F(DataSrcTest, synthesizedCnameTooLong) {
// qname has the possible max length (255 octets). it matches a DNAME,
Modified: branches/trac192/src/lib/datasrc/tests/query_unittest.cc
==============================================================================
--- branches/trac192/src/lib/datasrc/tests/query_unittest.cc (original)
+++ branches/trac192/src/lib/datasrc/tests/query_unittest.cc Sun May 30 02:53:52 2010
@@ -16,44 +16,59 @@
#include <gtest/gtest.h>
+#include <dns/buffer.h>
+#include <dns/message.h>
#include <dns/name.h>
#include <dns/rrtype.h>
#include <dns/rrclass.h>
#include <datasrc/query.h>
-namespace {
+#include <dns/tests/unittest_util.h>
+using isc::UnitTestUtil;
using namespace isc::dns;
using namespace isc::datasrc;
+namespace {
class QueryTest : public ::testing::Test {
protected:
- QueryTest() :
- name(Name("www.example.com")),
- rrtype(RRType::A()),
- rrclass(RRClass::IN())
- {}
- Message m;
- const Name name;
- const RRType rrtype;
- const RRClass rrclass;
+ void readQuery(Message& m, const char* datafile);
};
+void
+QueryTest::readQuery(Message& m, const char* datafile) {
+ std::vector<unsigned char> data;
+ UnitTestUtil::readWireData(datafile, data);
+
+ InputBuffer buffer(&data[0], data.size());
+ m.fromWire(buffer);
+}
+
QueryTaskPtr
-createTask(const Name& name, const RRClass& rrclass0, const RRType& rrtype0) {
+createTask(Message& m, const Name& name, const RRType& rrtype0) {
RRType rrtype(rrtype0);
- return (QueryTaskPtr(new QueryTask(name, rrclass0, rrtype,
+ Query q(m, true);
+ return (QueryTaskPtr(new QueryTask(q, name, rrtype,
QueryTask::SIMPLE_QUERY)));
}
// Check the QueryTask created using a temporary RRType object will remain
// valid.
TEST_F(QueryTest, constructWithTemporary) {
- QueryTaskPtr task_a = createTask(name, rrclass, RRType::A());
- QueryTaskPtr task_aaaa = createTask(name, rrclass, RRType::AAAA());
- EXPECT_EQ(rrtype, task_a->qtype);
+ Message m1(Message::PARSE);
+ readQuery(m1, "q_wild_a");
+ QueryTaskPtr task_a = createTask(m1, Name("www.wild.example.com"),
+ RRType::A());
+ EXPECT_EQ(RRType::A(), task_a->qtype);
+
+ Message m2(Message::PARSE);
+ readQuery(m2, "q_wild_aaaa");
+ QueryTaskPtr task_aaaa = createTask(m2, Name("www.wild.example.com"),
+ RRType::AAAA());
+ EXPECT_EQ(RRType::AAAA(), task_aaaa->qtype);
+
}
}
More information about the bind10-changes
mailing list