Browse Source

[2480] reorganized test data; define the source in a zone file format.

this will simplify the generation process and Makefile syntax.
JINMEI Tatuya 12 years ago
parent
commit
5379cabb61

+ 5 - 8
src/bin/auth/tests/Makefile.am

@@ -83,8 +83,7 @@ run_unittests_LDADD += $(SQLITE_LIBS)
 
 # The following are definitions for auto-generating test data for query
 # tests.
-BUILT_SOURCES = testdata/example-base.zone example_base_inc.cc
-BUILT_SOURCES += testdata/example-nsec3-inc.zone example_nsec3_inc.cc
+BUILT_SOURCES = example_base_inc.cc example_nsec3_inc.cc
 BUILT_SOURCES += testdata/example-base.sqlite3
 BUILT_SOURCES += testdata/example-nsec3.sqlite3
 
@@ -92,15 +91,13 @@ EXTRA_DIST = gen-query-testdata.py
 
 CLEANFILES += example_base_inc.cc example_nsec3_inc.cc
 
-testdata/example-base.zone example_base_inc.cc: testdata/query_testzone_data.txt
+example_base_inc.cc: $(srcdir)/testdata/example-base.zone
 	$(PYTHON) $(srcdir)/gen-query-testdata.py \
-		$(srcdir)/testdata/query_testzone_data.txt \
-		testdata/example-base.zone example_base_inc.cc
+		$(srcdir)/testdata/example-base.zone example_base_inc.cc
 
-testdata/example-nsec3-inc.zone example_nsec3_inc.cc: testdata/query_testzone_data_nsec3.txt
+example_nsec3_inc.cc: $(srcdir)/testdata/example-nsec3-inc.zone
 	$(PYTHON) $(srcdir)/gen-query-testdata.py \
-		$(srcdir)/testdata/query_testzone_data_nsec3.txt \
-		testdata/example-nsec3-inc.zone example_nsec3_inc.cc
+		$(srcdir)/testdata/example-nsec3-inc.zone example_nsec3_inc.cc
 
 testdata/example-base.sqlite3: testdata/example-base.zone
 	$(SHELL) $(top_builddir)/src/bin/loadzone/run_loadzone.sh \

+ 11 - 17
src/bin/auth/tests/gen-query-testdata.py

@@ -18,7 +18,7 @@
 This is a supplemental script to generate various forms of test data
 from a unified source file.
 
-Usage: python gen-query-testdata.py source_file output-zonefile output--cc-file
+Usage: python gen-query-testdata.py source_file output-cc-file
 
 The usage doesn't matter much, though, because it's expected to be invoked
 from Makefile, and that would be only use case of this script.
@@ -27,11 +27,12 @@ from Makefile, and that would be only use case of this script.
 import sys
 import re
 
-# Skip lines starting with '##' (comments) or empty lines
-re_skip = re.compile('(^##)|(^\s*$)')
-
 # Markup for variable definition
-re_start_rr = re.compile('^#var=(.*)')
+re_start_rr = re.compile('^;var=(.*)')
+
+# Skip lines starting with ';' (comments) or empty lines.  re_start_rr
+# will also match this expression, so it should be checked first.
+re_skip = re.compile('(^;)|(^\s*$)')
 
 def parse_input(input_file):
     '''Build an internal list of RR data from the input source file.
@@ -48,14 +49,14 @@ def parse_input(input_file):
     rrs = None
     with open(input_file) as f:
         for line in f:
-            if re_skip.match(line):
-                continue
             m = re_start_rr.match(line)
             if m:
                 if rrs is not None:
                     result.append((rr_varname, rrs))
                 rrs = []
                 rr_varname = m.group(1)
+            elif re_skip.match(line):
+                continue
             else:
                 rrs.append(line.rstrip('\n'))
 
@@ -88,17 +89,10 @@ def generate_variables(out_file, rrsets_data):
                                      for rr in rrs]))
                 out.write(';\n')
 
-def generate_zonefile(out_file, rrsets_data):
-    '''Generate a DNS zone file for the given set of RRs.'''
-    with open(out_file, 'w') as out:
-        for (_, rrs) in rrsets_data:
-            out.write('\n'.join(rrs) + '\n')
-
 if __name__ == "__main__":
-    if len(sys.argv) < 4:
-        sys.stderr.write('gen-query-testdata.py require 3 args\n')
+    if len(sys.argv) < 3:
+        sys.stderr.write('gen-query-testdata.py require 2 args\n')
         sys.exit(1)
     rrsets_data = parse_input(sys.argv[1])
-    generate_zonefile(sys.argv[2], rrsets_data)
-    generate_variables(sys.argv[3], rrsets_data)
+    generate_variables(sys.argv[2], rrsets_data)
 

+ 1 - 2
src/bin/auth/tests/testdata/Makefile.am

@@ -1,5 +1,4 @@
 CLEANFILES = *.wire *.copied
-CLEANFILES += example-base.zone example-nsec3-inc.zone
 CLEANFILES += example-base.sqlite3 example-nsec3.sqlite3
 
 BUILT_SOURCES = badExampleQuery_fromWire.wire examplequery_fromWire.wire
@@ -26,7 +25,7 @@ EXTRA_DIST += example.com
 EXTRA_DIST += example.zone
 EXTRA_DIST += example.sqlite3
 
-EXTRA_DIST += query_testzone_data.txt query_testzone_data_nsec3.txt
+EXTRA_DIST += example-base.zone example-nsec3-inc.zone
 
 .spec.wire:
 	$(PYTHON) $(top_builddir)/src/lib/util/python/gen_wiredata.py -o $@ $<

+ 124 - 120
src/bin/auth/tests/testdata/query_testzone_data.txt

@@ -1,226 +1,230 @@
-## This file defines a set of RRs commonly used in query tests.
-## It's a sequence of the following pattern:
-## #var=<var_name>
-## RR_1
-## RR_2
-## ..
-## RR_n
-##
-## where var_name is a string that can be used as a variable name in a
-## C/C++ source file or an empty string.  RR_x is a single-line
-## textual representation of an arbitrary DNS RR.
-##
-## If var_name is non empty, the generator script will define a C
-## variable of C-string type for that set of RRs so that it can be referred
-## to in the test source file.
-##
-## These RRs will be loaded into in-memory data source in that order.
-## Note that it may impose stricter restriction on the order of RRs.
-## In general, each RRset of the same name and type and its RRSIG (if
-## any) is expected to be grouped.
-##
-## Lines beginning with '##' or empty lines will be ignored by the
-## generator script.
-
-#var=soa_txt
-example.com. 3600 IN SOA . . 0 0 0 0 0
-#var=zone_ns_txt
+;; This file defines a set of RRs commonly used in query tests in the
+;; form of standard master zone file.
+;;
+;; It's a sequence of the following pattern:
+;; ;var=<var_name>
+;; RR_1
+;; RR_2
+;; ..
+;; RR_n
+;;
+;; where var_name is a string that can be used as a variable name in a
+;; C/C++ source file or an empty string.  RR_x is a single-line
+;; textual representation of an arbitrary DNS RR.
+;;
+;; If var_name is non empty, the generator script will define a C
+;; variable of C-string type for that set of RRs so that it can be referred
+;; to in the test source file.
+;;
+;; Note that lines beginning ';var=' is no different from other
+;; comment lines as a zone file.  It has special meaning only for the
+;; generator script.  Obviously, real comment lines cannot begin with
+;; ';var=' (which should be less likely to happen in practice though).
+;;
+;; These RRs will be loaded into in-memory data source in that order.
+;; Note that it may impose stricter restriction on the order of RRs.
+;; In general, each RRset of the same name and type and its RRSIG (if
+;; any) is expected to be grouped.
+
+;var=soa_txt
+example.com. 3600 IN SOA . . 1 0 0 0 0
+;var=zone_ns_txt
 example.com. 3600 IN NS glue.delegation.example.com.
 example.com. 3600 IN NS noglue.example.com.
 example.com. 3600 IN NS example.net.
 
-#var=
+;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=
+;var=
 noglue.example.com. 3600 IN RRSIG A 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-#var=ns_addrs_txt
+;var=ns_addrs_txt
 noglue.example.com. 3600 IN A 192.0.2.53
 glue.delegation.example.com. 3600 IN A 192.0.2.153
 glue.delegation.example.com. 3600 IN AAAA 2001:db8::53
 
-#var=
+;var=
 glue.delegation.example.com. 3600 IN RRSIG A 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 glue.delegation.example.com. 3600 IN RRSIG AAAA 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-#var=delegation_txt
+;var=delegation_txt
 delegation.example.com. 3600 IN NS glue.delegation.example.com.
 delegation.example.com. 3600 IN NS noglue.example.com.
 delegation.example.com. 3600 IN NS cname.example.com.
 delegation.example.com. 3600 IN NS example.org.
 
-#var=
+;var=
 delegation.example.com. 3600 IN RRSIG DS 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## Borrowed from the RFC4035
-#var=delegation_ds_txt
+;; Borrowed from the RFC4035
+;var=delegation_ds_txt
 delegation.example.com. 3600 IN DS 57855 5 1 B6DCD485719ADCA18E5F3D48A2331627FDD3 636B
-#var=mx_txt
+;var=mx_txt
 mx.example.com. 3600 IN MX 10 www.example.com.
 mx.example.com. 3600 IN MX 20 mailer.example.org.
 mx.example.com. 3600 IN MX 30 mx.delegation.example.com.
-#var=www_a_txt
+;var=www_a_txt
 www.example.com. 3600 IN A 192.0.2.80
 
-#var=
+;var=
 www.example.com. 3600 IN RRSIG A 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-#var=cname_txt
+;var=cname_txt
 cname.example.com. 3600 IN CNAME www.example.com.
-#var=cname_nxdom_txt
+;var=cname_nxdom_txt
 cnamenxdom.example.com. 3600 IN CNAME nxdomain.example.com.
-## CNAME Leading out of zone
-#var=cname_out_txt
+;; CNAME Leading out of zone
+;var=cname_out_txt
 cnameout.example.com. 3600 IN CNAME www.example.org.
-## The DNAME to do tests against
-#var=dname_txt
+;; The DNAME to do tests against
+;var=dname_txt
 dname.example.com. 3600 IN DNAME somethinglong.dnametarget.example.com.
-## Some data at the dname node (allowed by RFC 2672)
-#var=dname_a_txt
+;; Some data at the dname node (allowed by RFC 2672)
+;var=dname_a_txt
 dname.example.com. 3600 IN A 192.0.2.5
-## This is not inside the zone, this is created at runtime
-## www.dname.example.com. 3600 IN CNAME www.somethinglong.dnametarget.example.com.
-## The rest of data won't be referenced from the test cases.
-#var=other_zone_rrs
+;; This is not inside the zone, this is created at runtime
+;; www.dname.example.com. 3600 IN CNAME www.somethinglong.dnametarget.example.com.
+;; The rest of data won't be referenced from the test cases.
+;var=other_zone_rrs
 cnamemailer.example.com. 3600 IN CNAME www.example.com.
 cnamemx.example.com. 3600 IN MX 10 cnamemailer.example.com.
 mx.delegation.example.com. 3600 IN A 192.0.2.100
-## Wildcards
-#var=wild_txt
+;; Wildcards
+;var=wild_txt
 *.wild.example.com. 3600 IN A 192.0.2.7
-#var=nsec_wild_txt
+;var=nsec_wild_txt
 *.wild.example.com. 3600 IN NSEC www.example.com. A NSEC RRSIG
 
-#var=
+;var=
 *.wild.example.com. 3600 IN RRSIG A 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 *.wild.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-#var=cnamewild_txt
+;var=cnamewild_txt
 *.cnamewild.example.com. 3600 IN CNAME www.example.org.
-#var=nsec_cnamewild_txt
+;var=nsec_cnamewild_txt
 *.cnamewild.example.com. 3600 IN NSEC delegation.example.com. CNAME NSEC RRSIG
 
-#var=
+;var=
 *.cnamewild.example.com. 3600 IN RRSIG CNAME 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 *.cnamewild.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## Wildcard_nxrrset
-#var=wild_txt_nxrrset
+;; Wildcard_nxrrset
+;var=wild_txt_nxrrset
 *.uwild.example.com. 3600 IN A 192.0.2.9
-#var=nsec_wild_txt_nxrrset
+;var=nsec_wild_txt_nxrrset
 *.uwild.example.com. 3600 IN NSEC www.uwild.example.com. A NSEC RRSIG
-#var=
+;var=
 *.uwild.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
-#var=wild_txt_next
+;var=wild_txt_next
 www.uwild.example.com. 3600 IN A 192.0.2.11
-#var=
+;var=
 www.uwild.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
-#var=nsec_wild_txt_next
+;var=nsec_wild_txt_next
 www.uwild.example.com. 3600 IN NSEC *.wild.example.com. A NSEC RRSIG
-## Wildcard empty
-#var=empty_txt
+;; Wildcard empty
+;var=empty_txt
 b.*.t.example.com. 3600 IN A 192.0.2.13
-#var=nsec_empty_txt
+;var=nsec_empty_txt
 b.*.t.example.com. 3600 IN NSEC *.uwild.example.com. A NSEC RRSIG
 
-#var=
+;var=
 b.*.t.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-#var=empty_prev_txt
+;var=empty_prev_txt
 t.example.com. 3600 IN A 192.0.2.15
-#var=nsec_empty_prev_txt
+;var=nsec_empty_prev_txt
 t.example.com. 3600 IN NSEC b.*.t.example.com. A NSEC RRSIG
 
-#var=
+;var=
 t.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## Used in NXDOMAIN proof test.  We are going to test some unusual case where
-## the best possible wildcard is below the "next domain" of the NSEC RR that
-## proves the NXDOMAIN, i.e.,
-## mx.example.com. (exist)
-## (.no.example.com. (qname, NXDOMAIN)
-## ).no.example.com. (exist)
-## *.no.example.com. (best possible wildcard, not exist)
-#var=no_txt
+;; Used in NXDOMAIN proof test.  We are going to test some unusual case where
+;; the best possible wildcard is below the "next domain" of the NSEC RR that
+;; proves the NXDOMAIN, i.e.,
+;; mx.example.com. (exist)
+;; (.no.example.com. (qname, NXDOMAIN)
+;; ).no.example.com. (exist)
+;; *.no.example.com. (best possible wildcard, not exist)
+;var=no_txt
 \).no.example.com. 3600 IN AAAA 2001:db8::53
-## NSEC records.
-#var=nsec_apex_txt
+;; NSEC records.
+;var=nsec_apex_txt
 example.com. 3600 IN NSEC cname.example.com. NS SOA NSEC RRSIG
-#var=
+;var=
 example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
-#var=nsec_mx_txt
+;var=nsec_mx_txt
 mx.example.com. 3600 IN NSEC \).no.example.com. MX NSEC RRSIG
 
-#var=
+;var=
 mx.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-#var=nsec_no_txt
+;var=nsec_no_txt
 \).no.example.com. 3600 IN NSEC nz.no.example.com. AAAA NSEC RRSIG
 
-#var=
+;var=
 \).no.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## We'll also test the case where a single NSEC proves both NXDOMAIN and the
-## non existence of wildcard.  The following records will be used for that
-## test.
-## ).no.example.com. (exist, whose NSEC proves everything)
-## *.no.example.com. (best possible wildcard, not exist)
-## nx.no.example.com. (NXDOMAIN)
-## nz.no.example.com. (exist)
-#var=nz_txt
+;; We'll also test the case where a single NSEC proves both NXDOMAIN and the
+;; non existence of wildcard.  The following records will be used for that
+;; test.
+;; ).no.example.com. (exist, whose NSEC proves everything)
+;; *.no.example.com. (best possible wildcard, not exist)
+;; nx.no.example.com. (NXDOMAIN)
+;; nz.no.example.com. (exist)
+;var=nz_txt
 nz.no.example.com. 3600 IN AAAA 2001:db8::5300
-#var=nsec_nz_txt
+;var=nsec_nz_txt
 nz.no.example.com. 3600 IN NSEC noglue.example.com. AAAA NSEC RRSIG
-#var=nsec_nxdomain_txt
+;var=nsec_nxdomain_txt
 noglue.example.com. 3600 IN NSEC nonsec.example.com. A
 
-#var=
+;var=
 noglue.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## NSEC for the normal NXRRSET case
-#var=nsec_www_txt
+;; NSEC for the normal NXRRSET case
+;var=nsec_www_txt
 www.example.com. 3600 IN NSEC example.com. A NSEC RRSIG
 
-#var=
+;var=
 www.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## Authoritative data without NSEC
-#var=nonsec_a_txt
+;; Authoritative data without NSEC
+;var=nonsec_a_txt
 nonsec.example.com. 3600 IN A 192.0.2.0
 
-## (Secure) delegation data; Delegation with DS record
-#var=signed_delegation_txt
+;; (Secure) delegation data; Delegation with DS record
+;var=signed_delegation_txt
 signed-delegation.example.com. 3600 IN NS ns.example.net.
-#var=signed_delegation_ds_txt
+;var=signed_delegation_ds_txt
 signed-delegation.example.com. 3600 IN DS 12345 8 2 764501411DE58E8618945054A3F620B36202E115D015A7773F4B78E0F952CECA
 
-#var=
+;var=
 signed-delegation.example.com. 3600 IN RRSIG DS 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## (Secure) delegation data; Delegation without DS record (and both NSEC
-## and NSEC3 denying its existence)
-#var=unsigned_delegation_txt
+;; (Secure) delegation data; Delegation without DS record (and both NSEC
+;; and NSEC3 denying its existence)
+;var=unsigned_delegation_txt
 unsigned-delegation.example.com. 3600 IN NS ns.example.net.
-#var=unsigned_delegation_nsec_txt
+;var=unsigned_delegation_nsec_txt
 unsigned-delegation.example.com. 3600 IN NSEC unsigned-delegation-optout.example.com. NS RRSIG NSEC
 
-#var=
+;var=
 unsigned-delegation.example.com. 3600 IN RRSIG NSEC 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
 
-## Delegation without DS record, and no direct matching NSEC3 record
-#var=unsigned_delegation_optout_txt
+;; Delegation without DS record, and no direct matching NSEC3 record
+;var=unsigned_delegation_optout_txt
 unsigned-delegation-optout.example.com. 3600 IN NS ns.example.net.
-#var=unsigned_delegation_optout_nsec_txt
+;var=unsigned_delegation_optout_nsec_txt
 unsigned-delegation-optout.example.com. 3600 IN NSEC *.uwild.example.com. NS RRSIG NSEC
 
-## (Secure) delegation data; Delegation where the DS lookup will raise an
-## exception.
-#var=bad_delegation_txt
+;; (Secure) delegation data; Delegation where the DS lookup will raise an
+;; exception.
+;var=bad_delegation_txt
 bad-delegation.example.com. 3600 IN NS ns.example.net.
 
-## Delegation from an unsigned parent.  There's no DS, and there's no NSEC
-## or NSEC3 that proves it.
-#var=nosec_delegation_txt
+;; Delegation from an unsigned parent.  There's no DS, and there's no NSEC
+;; or NSEC3 that proves it.
+;var=nosec_delegation_txt
 nosec-delegation.example.com. 3600 IN NS ns.nosec.example.net.

+ 9 - 9
src/bin/auth/tests/testdata/query_testzone_data_nsec3.txt

@@ -1,16 +1,16 @@
-## See query_testzone_data.txt for general notes.
+;; See query_testzone_data.txt for general notes.
 
-## NSEC3PARAM.  This is needed for database-based data source to
-## signal the zone is NSEC3-signed
-#var=
+;; NSEC3PARAM.  This is needed for database-based data source to
+;; signal the zone is NSEC3-signed
+;var=
 example.com. 3600 IN NSEC3PARAM 1 1 12 aabbccdd
 
-## NSEC3 RRs.  You may also need to add mapping to MockZoneFinder::hash_map_.
-#var=nsec3_apex_txt
+;; NSEC3 RRs.  You may also need to add mapping to MockZoneFinder::hash_map_.
+;var=nsec3_apex_txt
 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example.com. 3600 IN NSEC3 1 1 12 aabbccdd 2t7b4g4vsa5smi47k61mv5bv1a22bojr NS SOA NSEC3PARAM RRSIG
-#var=nsec3_apex_rrsig_txt
+;var=nsec3_apex_rrsig_txt
 0p9mhaveqvm6t7vbl5lop2u3t2rp3tom.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE
-#var=nsec3_www_txt
+;var=nsec3_www_txt
 q04jkcevqvmu85r014c7dkba38o0ji5r.example.com. 3600 IN NSEC3 1 1 12 aabbccdd r53bq7cc2uvmubfu5ocmm6pers9tk9en A RRSIG
-#var=nsec3_www_rrsig_txt
+;var=nsec3_www_rrsig_txt
 q04jkcevqvmu85r014c7dkba38o0ji5r.example.com. 3600 IN RRSIG NSEC3 5 3 3600 20000101000000 20000201000000 12345 example.com. FAKEFAKEFAKE