1#!/usr/bin/env python3 2# Copyright 2015 gRPC authors. 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15 16# This file is auto-generated 17 18import argparse 19import os 20import platform 21import signal 22import subprocess 23import sys 24import tempfile 25import time 26 27argp = argparse.ArgumentParser(description='Run c-ares resolver tests') 28argp.add_argument('--test_bin_path', default=None, type=str, 29 help='Path to gtest test binary to invoke.') 30argp.add_argument('--dns_server_bin_path', default=None, type=str, 31 help='Path to local DNS server python script.') 32argp.add_argument('--records_config_path', default=None, type=str, 33 help=('Path to DNS records yaml file that ' 34 'specifies records for the DNS sever. ')) 35argp.add_argument('--dns_server_port', default=None, type=int, 36 help=('Port that local DNS server is listening on.')) 37argp.add_argument('--dns_resolver_bin_path', default=None, type=str, 38 help=('Path to the DNS health check utility.')) 39argp.add_argument('--tcp_connect_bin_path', default=None, type=str, 40 help=('Path to the TCP health check utility.')) 41argp.add_argument('--extra_args', default='', type=str, 42 help=('Comma-separate list of command args to ' 43 'plumb through to --test_bin_path')) 44args = argp.parse_args() 45 46def test_runner_log(msg): 47 sys.stderr.write('\n%s: %s\n' % (__file__, msg)) 48 49def python_args(arg_list): 50 if platform.system() == 'Windows' and arg_list[0].endswith('.py'): 51 return [sys.executable] + arg_list 52 return arg_list 53 54cur_resolver = os.environ.get('GRPC_DNS_RESOLVER') 55if cur_resolver and cur_resolver != 'ares': 56 test_runner_log(('WARNING: cur resolver set to %s. This set of tests ' 57 'needs to use GRPC_DNS_RESOLVER=ares.')) 58 test_runner_log('Exit 1 without running tests.') 59 sys.exit(1) 60os.environ.update({'GRPC_TRACE': 'cares_resolver,cares_address_sorting'}) 61experiments = os.environ.get('GRPC_EXPERIMENTS') 62if experiments is not None and 'event_engine_dns' in experiments: 63 os.environ.update({'GRPC_TRACE': 'event_engine_client_channel_resolver,cares_resolver'}) 64 65def wait_until_dns_server_is_up(args, 66 dns_server_subprocess, 67 dns_server_subprocess_output): 68 for i in range(0, 30): 69 test_runner_log('Health check: attempt to connect to DNS server over TCP.') 70 tcp_connect_subprocess = subprocess.Popen(python_args([ 71 args.tcp_connect_bin_path, 72 '--server_host', '127.0.0.1', 73 '--server_port', str(args.dns_server_port), 74 '--timeout', str(1)])) 75 tcp_connect_subprocess.communicate() 76 if tcp_connect_subprocess.returncode == 0: 77 test_runner_log(('Health check: attempt to make an A-record ' 78 'query to DNS server.')) 79 dns_resolver_subprocess = subprocess.Popen(python_args([ 80 args.dns_resolver_bin_path, 81 '--qname', 'health-check-local-dns-server-is-alive.resolver-tests.grpctestingexp', 82 '--server_host', '127.0.0.1', 83 '--server_port', str(args.dns_server_port)]), 84 stdout=subprocess.PIPE) 85 dns_resolver_stdout, _ = dns_resolver_subprocess.communicate(str.encode('ascii')) 86 if dns_resolver_subprocess.returncode == 0: 87 if '123.123.123.123'.encode('ascii') in dns_resolver_stdout: 88 test_runner_log(('DNS server is up! ' 89 'Successfully reached it over UDP and TCP.')) 90 return 91 time.sleep(0.1) 92 dns_server_subprocess.kill() 93 dns_server_subprocess.wait() 94 test_runner_log(('Failed to reach DNS server over TCP and/or UDP. ' 95 'Exitting without running tests.')) 96 test_runner_log('======= DNS server stdout ' 97 '(merged stdout and stderr) =============') 98 with open(dns_server_subprocess_output, 'r') as l: 99 test_runner_log(l.read()) 100 test_runner_log('======= end DNS server output=========') 101 sys.exit(1) 102 103dns_server_subprocess_output = tempfile.mktemp() 104with open(dns_server_subprocess_output, 'w') as l: 105 dns_server_subprocess = subprocess.Popen(python_args([ 106 args.dns_server_bin_path, 107 '--port', str(args.dns_server_port), 108 '--records_config_path', args.records_config_path]), 109 stdin=subprocess.PIPE, 110 stdout=l, 111 stderr=l) 112 113def _quit_on_signal(signum, _frame): 114 test_runner_log('Received signal: %d' % signum) 115 dns_server_subprocess.kill() 116 dns_server_subprocess.wait() 117 sys.exit(1) 118 119signal.signal(signal.SIGINT, _quit_on_signal) 120signal.signal(signal.SIGTERM, _quit_on_signal) 121wait_until_dns_server_is_up(args, 122 dns_server_subprocess, 123 dns_server_subprocess_output) 124num_test_failures = 0 125 126test_runner_log('Run test with target: %s' % 'no-srv-ipv4-single-target.resolver-tests-version-4.grpctestingexp.') 127current_test_subprocess = subprocess.Popen([ 128 args.test_bin_path, 129 '--target_name', 'no-srv-ipv4-single-target.resolver-tests-version-4.grpctestingexp.', 130 '--do_ordered_address_comparison', 'False', 131 '--expected_addrs', '5.5.5.5:443,False', 132 '--expected_chosen_service_config', '', 133 '--expected_service_config_error', '', 134 '--expected_lb_policy', '', 135 '--enable_srv_queries', 'True', 136 '--enable_txt_queries', 'True', 137 '--inject_broken_nameserver_list', 'False', 138 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 139 ] + args.extra_args.split(',')) 140current_test_subprocess.communicate() 141if current_test_subprocess.returncode != 0: 142 num_test_failures += 1 143 144test_runner_log('Run test with target: %s' % 'srv-ipv4-single-target.resolver-tests-version-4.grpctestingexp.') 145current_test_subprocess = subprocess.Popen([ 146 args.test_bin_path, 147 '--target_name', 'srv-ipv4-single-target.resolver-tests-version-4.grpctestingexp.', 148 '--do_ordered_address_comparison', 'False', 149 '--expected_addrs', '1.2.3.4:1234,True', 150 '--expected_chosen_service_config', '', 151 '--expected_service_config_error', '', 152 '--expected_lb_policy', '', 153 '--enable_srv_queries', 'True', 154 '--enable_txt_queries', 'True', 155 '--inject_broken_nameserver_list', 'False', 156 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 157 ] + args.extra_args.split(',')) 158current_test_subprocess.communicate() 159if current_test_subprocess.returncode != 0: 160 num_test_failures += 1 161 162test_runner_log('Run test with target: %s' % 'srv-ipv4-multi-target.resolver-tests-version-4.grpctestingexp.') 163current_test_subprocess = subprocess.Popen([ 164 args.test_bin_path, 165 '--target_name', 'srv-ipv4-multi-target.resolver-tests-version-4.grpctestingexp.', 166 '--do_ordered_address_comparison', 'False', 167 '--expected_addrs', '1.2.3.5:1234,True;1.2.3.6:1234,True;1.2.3.7:1234,True', 168 '--expected_chosen_service_config', '', 169 '--expected_service_config_error', '', 170 '--expected_lb_policy', '', 171 '--enable_srv_queries', 'True', 172 '--enable_txt_queries', 'True', 173 '--inject_broken_nameserver_list', 'False', 174 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 175 ] + args.extra_args.split(',')) 176current_test_subprocess.communicate() 177if current_test_subprocess.returncode != 0: 178 num_test_failures += 1 179 180test_runner_log('Run test with target: %s' % 'srv-ipv6-single-target.resolver-tests-version-4.grpctestingexp.') 181current_test_subprocess = subprocess.Popen([ 182 args.test_bin_path, 183 '--target_name', 'srv-ipv6-single-target.resolver-tests-version-4.grpctestingexp.', 184 '--do_ordered_address_comparison', 'False', 185 '--expected_addrs', '[2607:f8b0:400a:801::1001]:1234,True', 186 '--expected_chosen_service_config', '', 187 '--expected_service_config_error', '', 188 '--expected_lb_policy', '', 189 '--enable_srv_queries', 'True', 190 '--enable_txt_queries', 'True', 191 '--inject_broken_nameserver_list', 'False', 192 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 193 ] + args.extra_args.split(',')) 194current_test_subprocess.communicate() 195if current_test_subprocess.returncode != 0: 196 num_test_failures += 1 197 198test_runner_log('Run test with target: %s' % 'srv-ipv6-multi-target.resolver-tests-version-4.grpctestingexp.') 199current_test_subprocess = subprocess.Popen([ 200 args.test_bin_path, 201 '--target_name', 'srv-ipv6-multi-target.resolver-tests-version-4.grpctestingexp.', 202 '--do_ordered_address_comparison', 'False', 203 '--expected_addrs', '[2607:f8b0:400a:801::1002]:1234,True;[2607:f8b0:400a:801::1003]:1234,True;[2607:f8b0:400a:801::1004]:1234,True', 204 '--expected_chosen_service_config', '', 205 '--expected_service_config_error', '', 206 '--expected_lb_policy', '', 207 '--enable_srv_queries', 'True', 208 '--enable_txt_queries', 'True', 209 '--inject_broken_nameserver_list', 'False', 210 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 211 ] + args.extra_args.split(',')) 212current_test_subprocess.communicate() 213if current_test_subprocess.returncode != 0: 214 num_test_failures += 1 215 216test_runner_log('Run test with target: %s' % 'srv-ipv4-simple-service-config.resolver-tests-version-4.grpctestingexp.') 217current_test_subprocess = subprocess.Popen([ 218 args.test_bin_path, 219 '--target_name', 'srv-ipv4-simple-service-config.resolver-tests-version-4.grpctestingexp.', 220 '--do_ordered_address_comparison', 'False', 221 '--expected_addrs', '1.2.3.4:1234,True', 222 '--expected_chosen_service_config', '{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"SimpleService"}],"waitForReady":true}]}', 223 '--expected_service_config_error', '', 224 '--expected_lb_policy', 'round_robin', 225 '--enable_srv_queries', 'True', 226 '--enable_txt_queries', 'True', 227 '--inject_broken_nameserver_list', 'False', 228 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 229 ] + args.extra_args.split(',')) 230current_test_subprocess.communicate() 231if current_test_subprocess.returncode != 0: 232 num_test_failures += 1 233 234test_runner_log('Run test with target: %s' % 'ipv4-no-srv-simple-service-config.resolver-tests-version-4.grpctestingexp.') 235current_test_subprocess = subprocess.Popen([ 236 args.test_bin_path, 237 '--target_name', 'ipv4-no-srv-simple-service-config.resolver-tests-version-4.grpctestingexp.', 238 '--do_ordered_address_comparison', 'False', 239 '--expected_addrs', '1.2.3.4:443,False', 240 '--expected_chosen_service_config', '{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"NoSrvSimpleService"}],"waitForReady":true}]}', 241 '--expected_service_config_error', '', 242 '--expected_lb_policy', 'round_robin', 243 '--enable_srv_queries', 'True', 244 '--enable_txt_queries', 'True', 245 '--inject_broken_nameserver_list', 'False', 246 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 247 ] + args.extra_args.split(',')) 248current_test_subprocess.communicate() 249if current_test_subprocess.returncode != 0: 250 num_test_failures += 1 251 252test_runner_log('Run test with target: %s' % 'ipv4-no-config-for-cpp.resolver-tests-version-4.grpctestingexp.') 253current_test_subprocess = subprocess.Popen([ 254 args.test_bin_path, 255 '--target_name', 'ipv4-no-config-for-cpp.resolver-tests-version-4.grpctestingexp.', 256 '--do_ordered_address_comparison', 'False', 257 '--expected_addrs', '1.2.3.4:443,False', 258 '--expected_chosen_service_config', '', 259 '--expected_service_config_error', '', 260 '--expected_lb_policy', '', 261 '--enable_srv_queries', 'True', 262 '--enable_txt_queries', 'True', 263 '--inject_broken_nameserver_list', 'False', 264 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 265 ] + args.extra_args.split(',')) 266current_test_subprocess.communicate() 267if current_test_subprocess.returncode != 0: 268 num_test_failures += 1 269 270test_runner_log('Run test with target: %s' % 'ipv4-cpp-config-has-zero-percentage.resolver-tests-version-4.grpctestingexp.') 271current_test_subprocess = subprocess.Popen([ 272 args.test_bin_path, 273 '--target_name', 'ipv4-cpp-config-has-zero-percentage.resolver-tests-version-4.grpctestingexp.', 274 '--do_ordered_address_comparison', 'False', 275 '--expected_addrs', '1.2.3.4:443,False', 276 '--expected_chosen_service_config', '', 277 '--expected_service_config_error', '', 278 '--expected_lb_policy', '', 279 '--enable_srv_queries', 'True', 280 '--enable_txt_queries', 'True', 281 '--inject_broken_nameserver_list', 'False', 282 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 283 ] + args.extra_args.split(',')) 284current_test_subprocess.communicate() 285if current_test_subprocess.returncode != 0: 286 num_test_failures += 1 287 288test_runner_log('Run test with target: %s' % 'ipv4-second-language-is-cpp.resolver-tests-version-4.grpctestingexp.') 289current_test_subprocess = subprocess.Popen([ 290 args.test_bin_path, 291 '--target_name', 'ipv4-second-language-is-cpp.resolver-tests-version-4.grpctestingexp.', 292 '--do_ordered_address_comparison', 'False', 293 '--expected_addrs', '1.2.3.4:443,False', 294 '--expected_chosen_service_config', '{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"CppService"}],"waitForReady":true}]}', 295 '--expected_service_config_error', '', 296 '--expected_lb_policy', 'round_robin', 297 '--enable_srv_queries', 'True', 298 '--enable_txt_queries', 'True', 299 '--inject_broken_nameserver_list', 'False', 300 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 301 ] + args.extra_args.split(',')) 302current_test_subprocess.communicate() 303if current_test_subprocess.returncode != 0: 304 num_test_failures += 1 305 306test_runner_log('Run test with target: %s' % 'ipv4-config-with-percentages.resolver-tests-version-4.grpctestingexp.') 307current_test_subprocess = subprocess.Popen([ 308 args.test_bin_path, 309 '--target_name', 'ipv4-config-with-percentages.resolver-tests-version-4.grpctestingexp.', 310 '--do_ordered_address_comparison', 'False', 311 '--expected_addrs', '1.2.3.4:443,False', 312 '--expected_chosen_service_config', '{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"AlwaysPickedService"}],"waitForReady":true}]}', 313 '--expected_service_config_error', '', 314 '--expected_lb_policy', 'round_robin', 315 '--enable_srv_queries', 'True', 316 '--enable_txt_queries', 'True', 317 '--inject_broken_nameserver_list', 'False', 318 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 319 ] + args.extra_args.split(',')) 320current_test_subprocess.communicate() 321if current_test_subprocess.returncode != 0: 322 num_test_failures += 1 323 324test_runner_log('Run test with target: %s' % 'srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-4.grpctestingexp.') 325current_test_subprocess = subprocess.Popen([ 326 args.test_bin_path, 327 '--target_name', 'srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-4.grpctestingexp.', 328 '--do_ordered_address_comparison', 'False', 329 '--expected_addrs', '1.2.3.4:1234,True;1.2.3.4:443,False', 330 '--expected_chosen_service_config', '', 331 '--expected_service_config_error', '', 332 '--expected_lb_policy', '', 333 '--enable_srv_queries', 'True', 334 '--enable_txt_queries', 'True', 335 '--inject_broken_nameserver_list', 'False', 336 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 337 ] + args.extra_args.split(',')) 338current_test_subprocess.communicate() 339if current_test_subprocess.returncode != 0: 340 num_test_failures += 1 341 342test_runner_log('Run test with target: %s' % 'srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-4.grpctestingexp.') 343current_test_subprocess = subprocess.Popen([ 344 args.test_bin_path, 345 '--target_name', 'srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-4.grpctestingexp.', 346 '--do_ordered_address_comparison', 'False', 347 '--expected_addrs', '[2607:f8b0:400a:801::1002]:1234,True;[2607:f8b0:400a:801::1002]:443,False', 348 '--expected_chosen_service_config', '', 349 '--expected_service_config_error', '', 350 '--expected_lb_policy', '', 351 '--enable_srv_queries', 'True', 352 '--enable_txt_queries', 'True', 353 '--inject_broken_nameserver_list', 'False', 354 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 355 ] + args.extra_args.split(',')) 356current_test_subprocess.communicate() 357if current_test_subprocess.returncode != 0: 358 num_test_failures += 1 359 360test_runner_log('Run test with target: %s' % 'ipv4-config-causing-fallback-to-tcp.resolver-tests-version-4.grpctestingexp.') 361current_test_subprocess = subprocess.Popen([ 362 args.test_bin_path, 363 '--target_name', 'ipv4-config-causing-fallback-to-tcp.resolver-tests-version-4.grpctestingexp.', 364 '--do_ordered_address_comparison', 'False', 365 '--expected_addrs', '1.2.3.4:443,False', 366 '--expected_chosen_service_config', '{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooTwo","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooThree","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooFour","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooFive","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooSix","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooSeven","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooEight","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooNine","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooTen","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooEleven","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooTwelve","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooThirteen","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooFourteen","service":"SimpleService"}],"waitForReady":true},{"name":[{"method":"FooFifteen","service":"SimpleService"}],"waitForReady":true}]}', 367 '--expected_service_config_error', '', 368 '--expected_lb_policy', '', 369 '--enable_srv_queries', 'True', 370 '--enable_txt_queries', 'True', 371 '--inject_broken_nameserver_list', 'False', 372 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 373 ] + args.extra_args.split(',')) 374current_test_subprocess.communicate() 375if current_test_subprocess.returncode != 0: 376 num_test_failures += 1 377 378test_runner_log('Run test with target: %s' % 'srv-ipv4-single-target-srv-disabled.resolver-tests-version-4.grpctestingexp.') 379current_test_subprocess = subprocess.Popen([ 380 args.test_bin_path, 381 '--target_name', 'srv-ipv4-single-target-srv-disabled.resolver-tests-version-4.grpctestingexp.', 382 '--do_ordered_address_comparison', 'False', 383 '--expected_addrs', '2.3.4.5:443,False', 384 '--expected_chosen_service_config', '', 385 '--expected_service_config_error', '', 386 '--expected_lb_policy', '', 387 '--enable_srv_queries', 'False', 388 '--enable_txt_queries', 'True', 389 '--inject_broken_nameserver_list', 'False', 390 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 391 ] + args.extra_args.split(',')) 392current_test_subprocess.communicate() 393if current_test_subprocess.returncode != 0: 394 num_test_failures += 1 395 396test_runner_log('Run test with target: %s' % 'srv-ipv4-multi-target-srv-disabled.resolver-tests-version-4.grpctestingexp.') 397current_test_subprocess = subprocess.Popen([ 398 args.test_bin_path, 399 '--target_name', 'srv-ipv4-multi-target-srv-disabled.resolver-tests-version-4.grpctestingexp.', 400 '--do_ordered_address_comparison', 'False', 401 '--expected_addrs', '9.2.3.5:443,False;9.2.3.6:443,False;9.2.3.7:443,False', 402 '--expected_chosen_service_config', '', 403 '--expected_service_config_error', '', 404 '--expected_lb_policy', '', 405 '--enable_srv_queries', 'False', 406 '--enable_txt_queries', 'True', 407 '--inject_broken_nameserver_list', 'False', 408 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 409 ] + args.extra_args.split(',')) 410current_test_subprocess.communicate() 411if current_test_subprocess.returncode != 0: 412 num_test_failures += 1 413 414test_runner_log('Run test with target: %s' % 'srv-ipv6-single-target-srv-disabled.resolver-tests-version-4.grpctestingexp.') 415current_test_subprocess = subprocess.Popen([ 416 args.test_bin_path, 417 '--target_name', 'srv-ipv6-single-target-srv-disabled.resolver-tests-version-4.grpctestingexp.', 418 '--do_ordered_address_comparison', 'False', 419 '--expected_addrs', '[2600::1001]:443,False', 420 '--expected_chosen_service_config', '', 421 '--expected_service_config_error', '', 422 '--expected_lb_policy', '', 423 '--enable_srv_queries', 'False', 424 '--enable_txt_queries', 'True', 425 '--inject_broken_nameserver_list', 'False', 426 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 427 ] + args.extra_args.split(',')) 428current_test_subprocess.communicate() 429if current_test_subprocess.returncode != 0: 430 num_test_failures += 1 431 432test_runner_log('Run test with target: %s' % 'srv-ipv6-multi-target-srv-disabled.resolver-tests-version-4.grpctestingexp.') 433current_test_subprocess = subprocess.Popen([ 434 args.test_bin_path, 435 '--target_name', 'srv-ipv6-multi-target-srv-disabled.resolver-tests-version-4.grpctestingexp.', 436 '--do_ordered_address_comparison', 'False', 437 '--expected_addrs', '[2600::1002]:443,False;[2600::1003]:443,False;[2600::1004]:443,False', 438 '--expected_chosen_service_config', '', 439 '--expected_service_config_error', '', 440 '--expected_lb_policy', '', 441 '--enable_srv_queries', 'False', 442 '--enable_txt_queries', 'True', 443 '--inject_broken_nameserver_list', 'False', 444 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 445 ] + args.extra_args.split(',')) 446current_test_subprocess.communicate() 447if current_test_subprocess.returncode != 0: 448 num_test_failures += 1 449 450test_runner_log('Run test with target: %s' % 'srv-ipv4-simple-service-config-srv-disabled.resolver-tests-version-4.grpctestingexp.') 451current_test_subprocess = subprocess.Popen([ 452 args.test_bin_path, 453 '--target_name', 'srv-ipv4-simple-service-config-srv-disabled.resolver-tests-version-4.grpctestingexp.', 454 '--do_ordered_address_comparison', 'False', 455 '--expected_addrs', '5.5.3.4:443,False', 456 '--expected_chosen_service_config', '{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"SimpleService"}],"waitForReady":true}]}', 457 '--expected_service_config_error', '', 458 '--expected_lb_policy', 'round_robin', 459 '--enable_srv_queries', 'False', 460 '--enable_txt_queries', 'True', 461 '--inject_broken_nameserver_list', 'False', 462 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 463 ] + args.extra_args.split(',')) 464current_test_subprocess.communicate() 465if current_test_subprocess.returncode != 0: 466 num_test_failures += 1 467 468test_runner_log('Run test with target: %s' % 'srv-ipv4-simple-service-config-txt-disabled.resolver-tests-version-4.grpctestingexp.') 469current_test_subprocess = subprocess.Popen([ 470 args.test_bin_path, 471 '--target_name', 'srv-ipv4-simple-service-config-txt-disabled.resolver-tests-version-4.grpctestingexp.', 472 '--do_ordered_address_comparison', 'False', 473 '--expected_addrs', '1.2.3.4:1234,True', 474 '--expected_chosen_service_config', '', 475 '--expected_service_config_error', '', 476 '--expected_lb_policy', '', 477 '--enable_srv_queries', 'True', 478 '--enable_txt_queries', 'False', 479 '--inject_broken_nameserver_list', 'False', 480 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 481 ] + args.extra_args.split(',')) 482current_test_subprocess.communicate() 483if current_test_subprocess.returncode != 0: 484 num_test_failures += 1 485 486test_runner_log('Run test with target: %s' % 'ipv4-cpp-config-has-zero-percentage-txt-disabled.resolver-tests-version-4.grpctestingexp.') 487current_test_subprocess = subprocess.Popen([ 488 args.test_bin_path, 489 '--target_name', 'ipv4-cpp-config-has-zero-percentage-txt-disabled.resolver-tests-version-4.grpctestingexp.', 490 '--do_ordered_address_comparison', 'False', 491 '--expected_addrs', '1.2.3.4:443,False', 492 '--expected_chosen_service_config', '', 493 '--expected_service_config_error', '', 494 '--expected_lb_policy', '', 495 '--enable_srv_queries', 'True', 496 '--enable_txt_queries', 'False', 497 '--inject_broken_nameserver_list', 'False', 498 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 499 ] + args.extra_args.split(',')) 500current_test_subprocess.communicate() 501if current_test_subprocess.returncode != 0: 502 num_test_failures += 1 503 504test_runner_log('Run test with target: %s' % 'ipv4-second-language-is-cpp-txt-disabled.resolver-tests-version-4.grpctestingexp.') 505current_test_subprocess = subprocess.Popen([ 506 args.test_bin_path, 507 '--target_name', 'ipv4-second-language-is-cpp-txt-disabled.resolver-tests-version-4.grpctestingexp.', 508 '--do_ordered_address_comparison', 'False', 509 '--expected_addrs', '1.2.3.4:443,False', 510 '--expected_chosen_service_config', '', 511 '--expected_service_config_error', '', 512 '--expected_lb_policy', '', 513 '--enable_srv_queries', 'True', 514 '--enable_txt_queries', 'False', 515 '--inject_broken_nameserver_list', 'False', 516 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 517 ] + args.extra_args.split(',')) 518current_test_subprocess.communicate() 519if current_test_subprocess.returncode != 0: 520 num_test_failures += 1 521 522test_runner_log('Run test with target: %s' % 'ipv4-svc_cfg_bad_json.resolver-tests-version-4.grpctestingexp.') 523current_test_subprocess = subprocess.Popen([ 524 args.test_bin_path, 525 '--target_name', 'ipv4-svc_cfg_bad_json.resolver-tests-version-4.grpctestingexp.', 526 '--do_ordered_address_comparison', 'False', 527 '--expected_addrs', '1.2.3.4:443,False', 528 '--expected_chosen_service_config', '', 529 '--expected_service_config_error', 'JSON parse error', 530 '--expected_lb_policy', '', 531 '--enable_srv_queries', 'True', 532 '--enable_txt_queries', 'True', 533 '--inject_broken_nameserver_list', 'False', 534 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 535 ] + args.extra_args.split(',')) 536current_test_subprocess.communicate() 537if current_test_subprocess.returncode != 0: 538 num_test_failures += 1 539 540test_runner_log('Run test with target: %s' % 'ipv4-svc_cfg_bad_client_language.resolver-tests-version-4.grpctestingexp.') 541current_test_subprocess = subprocess.Popen([ 542 args.test_bin_path, 543 '--target_name', 'ipv4-svc_cfg_bad_client_language.resolver-tests-version-4.grpctestingexp.', 544 '--do_ordered_address_comparison', 'False', 545 '--expected_addrs', '1.2.3.4:443,False', 546 '--expected_chosen_service_config', '', 547 '--expected_service_config_error', 'clientLanguage error:is not an array', 548 '--expected_lb_policy', '', 549 '--enable_srv_queries', 'True', 550 '--enable_txt_queries', 'True', 551 '--inject_broken_nameserver_list', 'False', 552 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 553 ] + args.extra_args.split(',')) 554current_test_subprocess.communicate() 555if current_test_subprocess.returncode != 0: 556 num_test_failures += 1 557 558test_runner_log('Run test with target: %s' % 'ipv4-svc_cfg_bad_percentage.resolver-tests-version-4.grpctestingexp.') 559current_test_subprocess = subprocess.Popen([ 560 args.test_bin_path, 561 '--target_name', 'ipv4-svc_cfg_bad_percentage.resolver-tests-version-4.grpctestingexp.', 562 '--do_ordered_address_comparison', 'False', 563 '--expected_addrs', '1.2.3.4:443,False', 564 '--expected_chosen_service_config', '', 565 '--expected_service_config_error', 'percentage error:failed to parse number', 566 '--expected_lb_policy', '', 567 '--enable_srv_queries', 'True', 568 '--enable_txt_queries', 'True', 569 '--inject_broken_nameserver_list', 'False', 570 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 571 ] + args.extra_args.split(',')) 572current_test_subprocess.communicate() 573if current_test_subprocess.returncode != 0: 574 num_test_failures += 1 575 576test_runner_log('Run test with target: %s' % 'ipv4-svc_cfg_bad_wait_for_ready.resolver-tests-version-4.grpctestingexp.') 577current_test_subprocess = subprocess.Popen([ 578 args.test_bin_path, 579 '--target_name', 'ipv4-svc_cfg_bad_wait_for_ready.resolver-tests-version-4.grpctestingexp.', 580 '--do_ordered_address_comparison', 'False', 581 '--expected_addrs', '1.2.3.4:443,False', 582 '--expected_chosen_service_config', '', 583 '--expected_service_config_error', 'field:methodConfig[0].waitForReady error:is not a boolean', 584 '--expected_lb_policy', '', 585 '--enable_srv_queries', 'True', 586 '--enable_txt_queries', 'True', 587 '--inject_broken_nameserver_list', 'False', 588 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 589 ] + args.extra_args.split(',')) 590current_test_subprocess.communicate() 591if current_test_subprocess.returncode != 0: 592 num_test_failures += 1 593 594test_runner_log('Run test with target: %s' % 'no-srv-ipv4-single-target-inject-broken-nameservers.resolver-tests-version-4.grpctestingexp.') 595current_test_subprocess = subprocess.Popen([ 596 args.test_bin_path, 597 '--target_name', 'no-srv-ipv4-single-target-inject-broken-nameservers.resolver-tests-version-4.grpctestingexp.', 598 '--do_ordered_address_comparison', 'False', 599 '--expected_addrs', '5.5.5.5:443,False', 600 '--expected_chosen_service_config', '', 601 '--expected_service_config_error', '', 602 '--expected_lb_policy', '', 603 '--enable_srv_queries', 'True', 604 '--enable_txt_queries', 'True', 605 '--inject_broken_nameserver_list', 'True', 606 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 607 ] + args.extra_args.split(',')) 608current_test_subprocess.communicate() 609if current_test_subprocess.returncode != 0: 610 num_test_failures += 1 611 612test_runner_log('Run test with target: %s' % 'ipv4-config-causing-fallback-to-tcp-inject-broken-nameservers.resolver-tests-version-4.grpctestingexp.') 613current_test_subprocess = subprocess.Popen([ 614 args.test_bin_path, 615 '--target_name', 'ipv4-config-causing-fallback-to-tcp-inject-broken-nameservers.resolver-tests-version-4.grpctestingexp.', 616 '--do_ordered_address_comparison', 'False', 617 '--expected_addrs', '1.2.3.4:443,False', 618 '--expected_chosen_service_config', '', 619 '--expected_service_config_error', 'field:loadBalancingPolicy error:is not a string', 620 '--expected_lb_policy', '', 621 '--enable_srv_queries', 'True', 622 '--enable_txt_queries', 'True', 623 '--inject_broken_nameserver_list', 'True', 624 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 625 ] + args.extra_args.split(',')) 626current_test_subprocess.communicate() 627if current_test_subprocess.returncode != 0: 628 num_test_failures += 1 629 630test_runner_log('Run test with target: %s' % 'load-balanced-name-with-dualstack-balancer.resolver-tests-version-4.grpctestingexp.') 631current_test_subprocess = subprocess.Popen([ 632 args.test_bin_path, 633 '--target_name', 'load-balanced-name-with-dualstack-balancer.resolver-tests-version-4.grpctestingexp.', 634 '--do_ordered_address_comparison', 'True', 635 '--expected_addrs', '[::1]:1234,True;[2002::1111]:1234,True', 636 '--expected_chosen_service_config', '', 637 '--expected_service_config_error', '', 638 '--expected_lb_policy', '', 639 '--enable_srv_queries', 'True', 640 '--enable_txt_queries', 'True', 641 '--inject_broken_nameserver_list', 'False', 642 '--local_dns_server_address', '127.0.0.1:%d' % args.dns_server_port 643 ] + args.extra_args.split(',')) 644current_test_subprocess.communicate() 645if current_test_subprocess.returncode != 0: 646 num_test_failures += 1 647 648test_runner_log('now kill DNS server') 649dns_server_subprocess.kill() 650dns_server_subprocess.wait() 651test_runner_log('%d tests failed.' % num_test_failures) 652sys.exit(num_test_failures) 653