26 argp = argparse.ArgumentParser(
27 description=
'Runs a DNS server for LB interop tests')
28 argp.add_argument(
'-l',
32 help=
'Comma-separated list of IP addresses of balancers')
38 help=
'Comma-separated list of IP addresses of fallback servers')
41 '--cause_no_error_no_data_for_balancer_a_record',
45 help=(
'Used for testing the case in which the grpclb '
46 'balancer A record lookup results in a DNS NOERROR response '
47 'but with no ANSWER section i.e. no addresses'))
48 args = argp.parse_args()
51 grpclb_ips = args.grpclb_ips.split(
',')
54 balancer_records.append({
60 fallback_ips = args.fallback_ips.split(
',')
62 for ip
in fallback_ips:
63 fallback_records.append({
68 records_config_yaml = {
69 'resolver_tests_common_zone_name':
71 'resolver_component_tests': [{
73 '_grpclb._tcp.server': [{
75 'data':
'0 0 12000 balancer',
78 'balancer': balancer_records,
79 'server': fallback_records,
83 if args.cause_no_error_no_data_for_balancer_a_record:
84 balancer_records = records_config_yaml[
'resolver_component_tests'][0][
85 'records'][
'balancer']
86 assert not balancer_records
92 balancer_records.append({
94 'data':
'arbitrary string that wont actually be resolved',
98 records_config_path = tempfile.mktemp()
99 with open(records_config_path,
'w')
as records_config_generated:
100 records_config_generated.write(yaml.dump(records_config_yaml))
102 with open(records_config_path,
'r')
as records_config_generated:
103 sys.stderr.write(
'===== DNS server records config: =====\n')
104 sys.stderr.write(records_config_generated.read())
105 sys.stderr.write(
'======================================\n')
113 subprocess.check_output([
114 '/var/local/git/grpc/test/cpp/naming/utils/dns_server.py',
116 '--records_config_path',
118 '--add_a_record=metadata.google.internal:169.254.169.254',