[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