gen_build_yaml.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/env python2.7
  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. """Generates the appropriate build.json data for all the naming tests."""
  16. import collections
  17. import hashlib
  18. import json
  19. import yaml
  20. _LOCAL_DNS_SERVER_ADDRESS = '127.0.0.1:15353'
  21. def _append_zone_name(name, zone_name):
  22. return '%s.%s' % (name, zone_name)
  23. def _build_expected_addrs_cmd_arg(expected_addrs):
  24. out = []
  25. for addr in expected_addrs:
  26. out.append('%s,%s' % (addr['address'], str(addr['is_balancer'])))
  27. return ';'.join(out)
  28. def _resolver_test_cases(resolver_component_data):
  29. out = []
  30. for test_case in resolver_component_data['resolver_component_tests']:
  31. target_name = _append_zone_name(
  32. test_case['record_to_resolve'],
  33. resolver_component_data['resolver_tests_common_zone_name'])
  34. out.append({
  35. 'test_title':
  36. target_name,
  37. 'arg_names_and_values': [
  38. ('target_name', target_name),
  39. ('do_ordered_address_comparison',
  40. test_case['do_ordered_address_comparison']),
  41. ('expected_addrs',
  42. _build_expected_addrs_cmd_arg(test_case['expected_addrs'])),
  43. ('expected_chosen_service_config',
  44. (test_case['expected_chosen_service_config'] or '')),
  45. ('expected_service_config_error',
  46. (test_case['expected_service_config_error'] or '')),
  47. ('expected_lb_policy', (test_case['expected_lb_policy'] or '')),
  48. ('enable_srv_queries', test_case['enable_srv_queries']),
  49. ('enable_txt_queries', test_case['enable_txt_queries']),
  50. ('inject_broken_nameserver_list',
  51. test_case['inject_broken_nameserver_list']),
  52. ],
  53. })
  54. return out
  55. def main():
  56. resolver_component_data = ''
  57. with open('test/cpp/naming/resolver_test_record_groups.yaml') as f:
  58. resolver_component_data = yaml.load(f, Loader=yaml.FullLoader)
  59. json = {
  60. 'resolver_tests_common_zone_name':
  61. resolver_component_data['resolver_tests_common_zone_name'],
  62. # this data is required by the resolver_component_tests_runner.py.template
  63. 'resolver_component_test_cases':
  64. _resolver_test_cases(resolver_component_data),
  65. }
  66. print(yaml.dump(json))
  67. if __name__ == '__main__':
  68. main()