250dcb4cf5c356bb492c849edff5fe3c81f61f77Tatuya JINMEI 神明達哉# $Id: gen-data-queryperf.py,v 1.2 2008/06/13 18:17:08 jinmei Exp $
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews# Contributed by Stephane Bortzmeyer <bortzmeyer@nic.fr>
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews# "A small tool which may be useful with contrib/queryperf. This script
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews# can generate files of queries, both with random names (to test the
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews# behaviour with NXdomain) and with domains from a real zone file."
250dcb4cf5c356bb492c849edff5fe3c81f61f77Tatuya JINMEI 神明達哉domain_ns = r'^([a-z0-9-\.]+)((\s+\d+)?(\s+IN)?|(\s+IN)(\s+\d+)?)\s+NS'
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrewsdomain_ns_re = re.compile(domain_ns, re.IGNORECASE)
f6f3264d8c81cda5d489e29d2141f1a92fbe4c84Mark Andrews# characters allowed in a label
f6f3264d8c81cda5d489e29d2141f1a92fbe4c84Mark AndrewsLDH = string.digits + string.ascii_lowercase + "-"
f6f3264d8c81cda5d489e29d2141f1a92fbe4c84Mark Andrews Generate a random DNS label.
f6f3264d8c81cda5d489e29d2141f1a92fbe4c84Mark Andrews Note that this may generate labels that start/end with '-'.
f6f3264d8c81cda5d489e29d2141f1a92fbe4c84Mark Andrews sys.stdout.write("Usage: " + sys.argv[0] + " [-n number] " +
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews "[-p percent-random] [-t TLD]\n")
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews sys.stdout.write(" [-m MAXSIZE] [-f zone-file]\n")
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews optlist, args = getopt.getopt(sys.argv[1:], "hp:f:n:t:m:",
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews "maxsize="])
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews elif option == "--percentrandom" or option == "-p":
cfa19fe5c9cf279b38e4258a54acb3fd16b9550bMark Andrews sys.stderr.write(sys.argv[0] + ": " + str(reason) + "\n")
250dcb4cf5c356bb492c849edff5fe3c81f61f77Tatuya JINMEI 神明達哉 domain = remove_tld(domain_line.group(1), tld)
250dcb4cf5c356bb492c849edff5fe3c81f61f77Tatuya JINMEI 神明達哉 sys.stderr.write("No domains found in '%s'\n" % zone_file)
250dcb4cf5c356bb492c849edff5fe3c81f61f77Tatuya JINMEI 神明達哉 sys.stdout.write(make_domain(gen_random_label()))
f6f3264d8c81cda5d489e29d2141f1a92fbe4c84Mark Andrews sys.stdout.write(make_domain(gen.choice(domain_names)))