BIND 10 #2480: use real data sources in auth QueryTest

BIND 10 Development do-not-reply at isc.org
Fri Dec 28 14:32:10 UTC 2012


#2480: use real data sources in auth QueryTest
-------------------------------------+-------------------------------------
            Reporter:  jinmei        |                        Owner:
                Type:  defect        |  jinmei
            Priority:  medium        |                       Status:
           Component:  b10-auth      |  reviewing
            Keywords:                |                    Milestone:
           Sensitive:  0             |  Sprint-20130108
         Sub-Project:  DNS           |                   Resolution:
Estimated Difficulty:  5             |                 CVSS Scoring:
         Total Hours:  0             |              Defect Severity:  N/A
                                     |  Feature Depending on Ticket:
                                     |          Add Hours to Ticket:  0
                                     |                    Internal?:  0
-------------------------------------+-------------------------------------
Changes (by vorner):

 * owner:  vorner => jinmei


Comment:

 Hello

 It doesn't compile for me, it seems the set of warnings of clang++ and g++
 are
 different. I think most of the defined but not used ones is side-effect of
 the
 previous error (whenever there's an error in a test file, g++ spits out
 bunch
 of unrelated warnings), the real one would be the control reaches…:
 {{{
 query_unittest.cc: In function
 ‘boost::shared_ptr<isc::datasrc::ClientList>
 {anonymous}::createDataSrcClientList({anonymous}::DataSrcType,
 isc::datasrc::DataSourceClient&)’:
 query_unittest.cc:811:1: error: control reaches end of non-void function
 [-Werror=return-type]
 query_unittest.cc: At global scope:
 query_unittest.cc:946:2: error: ‘{anonymous}::gtest_QueryTest_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:985:557: error:
 ‘{anonymous}::QueryTest_noZone_Test::gtest_registering_dummy_’ defined but
 not used [-Werror=unused-variable]
 query_unittest.cc:995:585: error:
 ‘{anonymous}::QueryTest_exactMatch_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1002:691: error:
 ‘{anonymous}::QueryTest_exactMatchMultipleQueries_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1019:649: error:
 ‘{anonymous}::QueryTest_exactMatchIgnoreSIG_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1029:614: error:
 ‘{anonymous}::QueryTest_dnssecPositive_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1046:614: error:
 ‘{anonymous}::QueryTest_exactAddrMatch_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1059:593: error:
 ‘{anonymous}::QueryTest_apexNSMatch_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1070:607: error:
 ‘{anonymous}::QueryTest_exactAnyMatch_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1089:600: error:
 ‘{anonymous}::QueryTest_apexAnyMatch_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1100:586: error:
 ‘{anonymous}::QueryTest_mxANYMatch_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1108:600: error:
 ‘{anonymous}::QueryTest_glueANYMatch_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1115:593: error:
 ‘{anonymous}::QueryTest_nodomainANY_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1128:572: error:
 ‘{anonymous}::QueryTest_noApexNS_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1141:586: error:
 ‘{anonymous}::QueryTest_delegation_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1150:656: error:
 ‘{anonymous}::QueryTest_delegationWithDNSSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1161:628: error:
 ‘{anonymous}::QueryTest_secureDelegation_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1176:684: error:
 ‘{anonymous}::QueryTest_secureUnsignedDelegation_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1191:747: error:
 ‘{anonymous}::QueryTest_secureUnsignedDelegationWithNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1218:789: error:
 ‘{anonymous}::QueryTest_secureUnsignedDelegationWithNSEC3OptOut_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1244:649: error:
 ‘{anonymous}::QueryTest_badSecureDelegation_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1264:572: error:
 ‘{anonymous}::QueryTest_nxdomain_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1272:628: error:
 ‘{anonymous}::QueryTest_nxdomainWithNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1292:635: error:
 ‘{anonymous}::QueryTest_nxdomainWithNSEC2_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1318:691: error:
 ‘{anonymous}::QueryTest_nxdomainWithNSECDuplicate_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1340:628: error:
 ‘{anonymous}::QueryTest_nxdomainBadNSEC1_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1355:628: error:
 ‘{anonymous}::QueryTest_nxdomainBadNSEC2_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1370:621: error:
 ‘{anonymous}::QueryTest_nxdomainBadNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1385:628: error:
 ‘{anonymous}::QueryTest_nxdomainBadNSEC4_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1399:628: error:
 ‘{anonymous}::QueryTest_nxdomainBadNSEC5_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1425:628: error:
 ‘{anonymous}::QueryTest_nxdomainBadNSEC6_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1440:565: error:
 ‘{anonymous}::QueryTest_nxrrset_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1448:621: error:
 ‘{anonymous}::QueryTest_nxrrsetWithNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1463:635: error:
 ‘{anonymous}::QueryTest_emptyNameWithNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1484:642: error:
 ‘{anonymous}::QueryTest_nxrrsetWithoutNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1497:600: error:
 ‘{anonymous}::QueryTest_wildcardNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1517:607: error:
 ‘{anonymous}::QueryTest_CNAMEwildNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1533:607: error:
 ‘{anonymous}::QueryTest_wildcardNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1567:614: error:
 ‘{anonymous}::QueryTest_CNAMEwildNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1593:628: error:
 ‘{anonymous}::QueryTest_badWildcardNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1613:635: error:
 ‘{anonymous}::QueryTest_badWildcardProof1_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1629:635: error:
 ‘{anonymous}::QueryTest_badWildcardProof2_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1643:635: error:
 ‘{anonymous}::QueryTest_badWildcardProof3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1658:740: error:
 ‘{anonymous}::QueryTest_wildcardNxrrsetWithDuplicateNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1679:677: error:
 ‘{anonymous}::QueryTest_wildcardNxrrsetWithNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1704:684: error:
 ‘{anonymous}::QueryTest_wildcardNxrrsetWithNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1743:747: error:
 ‘{anonymous}::QueryTest_wildcardNxrrsetWithNSEC3Collision_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1762:726: error:
 ‘{anonymous}::QueryTest_wildcardNxrrsetWithNSEC3Broken_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1784:663: error:
 ‘{anonymous}::QueryTest_wildcardEmptyWithNSEC_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1807:551: error:
 ‘{anonymous}::QueryTest_noSOA_Test::gtest_registering_dummy_’ defined but
 not used [-Werror=unused-variable]
 query_unittest.cc:1826:593: error:
 ‘{anonymous}::QueryTest_noMatchZone_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1839:530: error:
 ‘{anonymous}::QueryTest_MX_Test::gtest_registering_dummy_’ defined but not
 used [-Werror=unused-variable]
 query_unittest.cc:1853:565: error:
 ‘{anonymous}::QueryTest_MXAlias_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1873:551: error:
 ‘{anonymous}::QueryTest_CNAME_Test::gtest_registering_dummy_’ defined but
 not used [-Werror=unused-variable]
 query_unittest.cc:1881:607: error:
 ‘{anonymous}::QueryTest_explicitCNAME_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1891:614: error:
 ‘{anonymous}::QueryTest_CNAME_NX_RRSET_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1903:670: error:
 ‘{anonymous}::QueryTest_explicitCNAME_NX_RRSET_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1912:621: error:
 ‘{anonymous}::QueryTest_CNAME_NX_DOMAIN_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1926:677: error:
 ‘{anonymous}::QueryTest_explicitCNAME_NX_DOMAIN_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1935:579: error:
 ‘{anonymous}::QueryTest_CNAME_OUT_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1951:635: error:
 ‘{anonymous}::QueryTest_explicitCNAME_OUT_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:1968:551: error:
 ‘{anonymous}::QueryTest_DNAME_Test::gtest_registering_dummy_’ defined but
 not used [-Werror=unused-variable]
 query_unittest.cc:1984:579: error:
 ‘{anonymous}::QueryTest_DNAME_ANY_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:1993:607: error:
 ‘{anonymous}::QueryTest_explicitDNAME_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2005:565: error:
 ‘{anonymous}::QueryTest_DNAME_A_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:2017:614: error:
 ‘{anonymous}::QueryTest_DNAME_NX_RRSET_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2030:579: error:
 ‘{anonymous}::QueryTest_LongDNAME_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:2050:593: error:
 ‘{anonymous}::QueryTest_MaxLenDNAME_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2106:579: error:
 ‘{anonymous}::QueryTest_findNSEC3_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:2250:635: error:
 ‘{anonymous}::QueryTest_dsAboveDelegation_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2277:677: error:
 ‘{anonymous}::QueryTest_dsAboveDelegationNoData_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2304:635: error:
 ‘{anonymous}::QueryTest_dsBelowDelegation_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2320:677: error:
 ‘{anonymous}::QueryTest_dsBelowDelegationWithDS_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2339:572: error:
 ‘{anonymous}::QueryTest_dsNoZone_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:2347:621: error:
 ‘{anonymous}::QueryTest_dsAtGrandParent_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2362:677: error:
 ‘{anonymous}::QueryTest_dsAtGrandParentAndChild_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2387:572: error:
 ‘{anonymous}::QueryTest_dsAtRoot_Test::gtest_registering_dummy_’ defined
 but not used [-Werror=unused-variable]
 query_unittest.cc:2410:614: error:
 ‘{anonymous}::QueryTest_dsAtRootWithDS_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2432:628: error:
 ‘{anonymous}::QueryTest_nxrrsetWithNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2452:649: error:
 ‘{anonymous}::QueryTest_nxrrsetMissingNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2470:691: error:
 ‘{anonymous}::QueryTest_nxrrsetWithNSEC3_ds_exact_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2495:712: error:
 ‘{anonymous}::QueryTest_nxrrsetWithNSEC3_ds_no_exact_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2527:670: error:
 ‘{anonymous}::QueryTest_nxdomainWithNSEC3Proof_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2569:719: error:
 ‘{anonymous}::QueryTest_nxdomainWithBadNextNSEC3Proof_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2588:747: error:
 ‘{anonymous}::QueryTest_nxdomainWithBadWildcardNSEC3Proof_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 query_unittest.cc:2615:642: error:
 ‘{anonymous}::QueryTest_emptyNameWithNSEC3_Test::gtest_registering_dummy_’
 defined but not used [-Werror=unused-variable]
 cc1plus: all warnings being treated as errors
 }}}

 Then, I think this kind of rules in Makefile are wrong:
 {{{
 testdata/example-base.zone example_base_inc.cc:
 testdata/query_testzone_data.txt
        $(PYTHON) $(srcdir)/gen-query-testdata.py \
                $(srcdir)/testdata/query_testzone_data.txt \
                testdata/example-base.zone example_base_inc.cc
 }}}

 Make doesn't really know multi-target rules. This are effectively two
 independent rules (one to create `testdata/example-base.zone`, the other
 to
 generate `example_base_inc.cc`) which have the same dependencies and the
 same
 body. But they'd be run twice, possibly at the same twice. It could lead
 to
 strange behaviour on some OSes (compilation failures or file that are
 written
 twice, interleaved). Would it be possible to have two modes for the
 gen-query-test.py, one for generating each file, and splitting the rule?

 Why is this safety-catch removed? It was supposed (I guess) to catch bad
 updates to the test data:
 {{{#!diff
 -        const string hlabel = hash_map_[name.split(i, labels - i)];
 -        if (hlabel.empty()) {
 -            isc_throw(isc::Unexpected, "findNSEC3() hash failure for " <<
 -                      name.split(i, labels - i));
 -        }
 +        const string hlabel = nsec3_hash_.calculate(name.split(i, labels
 - i));
 }}}

 If I look at the file `src/bin/auth/tests/testdata/example.zone.in`, would
 it
 be better to use the generated directly, instead of a file that contains
 only
 include of it?

 The test data contains two „var=“ (without the variable name) in a row,
 could
 the second one be omitted?

 {{{
 #var=
 example.com. 3600 IN RRSIG SOA 5 3 3600 20000101000000 20000201000000
 12345 example.com. FAKEFAKEFAKE
 example.com. 3600 IN RRSIG NS 5 3 3600 20000101000000 20000201000000 12345
 example.com. FAKEFAKEFAKE

 #var=
 noglue.example.com. 3600 IN RRSIG A 5 3 3600 20000101000000 20000201000000
 12345 example.com. FAKEFAKEFAKE
 }}}

 Thinking about it, could it be directly a master file and #var= would be
 ;var=?
 In which case, only the .cc and sqlite3 files would need to be generated.

 Also, about the way the tests are selectively disabled, I don't really
 like
 this much. This looks like the thing is tested and passes (because the
 test is
 listed in the output), but it is actually not tested. Wouldn't there be a
 way to
 run only the right tests? I could think of a way with defining separate
 lists
 of values (MOCK, MOCK+SQLITE3, everything) and having 3 different typedef
 aliases for the test class, but I don't think that is an elegant solution
 (but
 maybe still slightly better).

 {{{#!c++
 TEST_P(QueryTest, exactAnyMatch) {
     // there's a bug in the in-memory data source and this doesn't work
     if (GetParam() == INMEMORY) {
         return;
     }
 }}}

-- 
Ticket URL: <http://bind10.isc.org/ticket/2480#comment:12>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list