diff options
author | Yash Tibrewal <yashkt@google.com> | 2017-09-29 17:28:57 -0700 |
---|---|---|
committer | Yash Tibrewal <yashkt@google.com> | 2017-09-29 17:28:57 -0700 |
commit | 39f0895c021980d7b644e745fe743e697f5fad00 (patch) | |
tree | 44d8aa8f60017ebf21caa3e2bb386a9703f826b5 /test | |
parent | bdf998a1840a5b35c9ad84d27c8ca4ce2642b06a (diff) | |
parent | 9c15cb9329a8e465529a8a8759b808b15e3df97e (diff) |
Merge branch 'master' into epoll1_h2proxy_tests_fix
Diffstat (limited to 'test')
-rw-r--r-- | test/core/security/credentials_test.c | 43 | ||||
-rw-r--r-- | test/cpp/end2end/end2end_test.cc | 28 | ||||
-rw-r--r-- | test/cpp/naming/README.md | 43 | ||||
-rwxr-xr-x | test/cpp/naming/create_private_dns_zone.sh | 27 | ||||
-rwxr-xr-x | test/cpp/naming/gen_build_yaml.py | 110 | ||||
-rwxr-xr-x | test/cpp/naming/private_dns_zone_init.sh | 215 | ||||
-rwxr-xr-x | test/cpp/naming/resolver_component_tests_runner.sh | 26 | ||||
-rwxr-xr-x | test/cpp/naming/resolver_gce_integration_tests_runner.sh | 359 | ||||
-rw-r--r-- | test/cpp/naming/resolver_test_record_groups.yaml | 2 | ||||
-rwxr-xr-x | test/cpp/naming/test_dns_server.py | 2 |
10 files changed, 813 insertions, 42 deletions
diff --git a/test/core/security/credentials_test.c b/test/core/security/credentials_test.c index 441c431135..5ac58070c8 100644 --- a/test/core/security/credentials_test.c +++ b/test/core/security/credentials_test.c @@ -1036,39 +1036,46 @@ typedef enum { static const expected_md plugin_md[] = {{"foo", "bar"}, {"hi", "there"}}; -static void plugin_get_metadata_success(void *state, - grpc_auth_metadata_context context, - grpc_credentials_plugin_metadata_cb cb, - void *user_data) { - size_t i; - grpc_metadata md[GPR_ARRAY_SIZE(plugin_md)]; - plugin_state *s = (plugin_state *)state; +static int plugin_get_metadata_success( + void *state, grpc_auth_metadata_context context, + grpc_credentials_plugin_metadata_cb cb, void *user_data, + grpc_metadata creds_md[GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX], + size_t *num_creds_md, grpc_status_code *status, + const char **error_details) { GPR_ASSERT(strcmp(context.service_url, test_service_url) == 0); GPR_ASSERT(strcmp(context.method_name, test_method) == 0); GPR_ASSERT(context.channel_auth_context == NULL); GPR_ASSERT(context.reserved == NULL); + GPR_ASSERT(GPR_ARRAY_SIZE(plugin_md) < + GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX); + plugin_state *s = (plugin_state *)state; *s = PLUGIN_GET_METADATA_CALLED_STATE; - for (i = 0; i < GPR_ARRAY_SIZE(plugin_md); i++) { - memset(&md[i], 0, sizeof(grpc_metadata)); - md[i].key = grpc_slice_from_copied_string(plugin_md[i].key); - md[i].value = grpc_slice_from_copied_string(plugin_md[i].value); + for (size_t i = 0; i < GPR_ARRAY_SIZE(plugin_md); ++i) { + memset(&creds_md[i], 0, sizeof(grpc_metadata)); + creds_md[i].key = grpc_slice_from_copied_string(plugin_md[i].key); + creds_md[i].value = grpc_slice_from_copied_string(plugin_md[i].value); } - cb(user_data, md, GPR_ARRAY_SIZE(md), GRPC_STATUS_OK, NULL); + *num_creds_md = GPR_ARRAY_SIZE(plugin_md); + return true; // Synchronous return. } static const char *plugin_error_details = "Could not get metadata for plugin."; -static void plugin_get_metadata_failure(void *state, - grpc_auth_metadata_context context, - grpc_credentials_plugin_metadata_cb cb, - void *user_data) { - plugin_state *s = (plugin_state *)state; +static int plugin_get_metadata_failure( + void *state, grpc_auth_metadata_context context, + grpc_credentials_plugin_metadata_cb cb, void *user_data, + grpc_metadata creds_md[GRPC_METADATA_CREDENTIALS_PLUGIN_SYNC_MAX], + size_t *num_creds_md, grpc_status_code *status, + const char **error_details) { GPR_ASSERT(strcmp(context.service_url, test_service_url) == 0); GPR_ASSERT(strcmp(context.method_name, test_method) == 0); GPR_ASSERT(context.channel_auth_context == NULL); GPR_ASSERT(context.reserved == NULL); + plugin_state *s = (plugin_state *)state; *s = PLUGIN_GET_METADATA_CALLED_STATE; - cb(user_data, NULL, 0, GRPC_STATUS_UNAUTHENTICATED, plugin_error_details); + *status = GRPC_STATUS_UNAUTHENTICATED; + *error_details = gpr_strdup(plugin_error_details); + return true; // Synchronous return. } static void plugin_destroy(void *state) { diff --git a/test/cpp/end2end/end2end_test.cc b/test/cpp/end2end/end2end_test.cc index e54cd03ca2..5dae5b014b 100644 --- a/test/cpp/end2end/end2end_test.cc +++ b/test/cpp/end2end/end2end_test.cc @@ -1673,6 +1673,34 @@ TEST_P(SecureEnd2endTest, BlockingAuthMetadataPluginFailure) { kTestCredsPluginErrorMsg); } +TEST_P(SecureEnd2endTest, CompositeCallCreds) { + ResetStub(); + EchoRequest request; + EchoResponse response; + ClientContext context; + const char kMetadataKey1[] = "call-creds-key1"; + const char kMetadataKey2[] = "call-creds-key2"; + const char kMetadataVal1[] = "call-creds-val1"; + const char kMetadataVal2[] = "call-creds-val2"; + + context.set_credentials(CompositeCallCredentials( + MetadataCredentialsFromPlugin(std::unique_ptr<MetadataCredentialsPlugin>( + new TestMetadataCredentialsPlugin(kMetadataKey1, kMetadataVal1, true, + true))), + MetadataCredentialsFromPlugin(std::unique_ptr<MetadataCredentialsPlugin>( + new TestMetadataCredentialsPlugin(kMetadataKey2, kMetadataVal2, true, + true))))); + request.set_message("Hello"); + request.mutable_param()->set_echo_metadata(true); + + Status s = stub_->Echo(&context, request, &response); + EXPECT_TRUE(s.ok()); + EXPECT_TRUE(MetadataContains(context.GetServerTrailingMetadata(), + kMetadataKey1, kMetadataVal1)); + EXPECT_TRUE(MetadataContains(context.GetServerTrailingMetadata(), + kMetadataKey2, kMetadataVal2)); +} + TEST_P(SecureEnd2endTest, ClientAuthContext) { ResetStub(); EchoRequest request; diff --git a/test/cpp/naming/README.md b/test/cpp/naming/README.md new file mode 100644 index 0000000000..e33184620c --- /dev/null +++ b/test/cpp/naming/README.md @@ -0,0 +1,43 @@ +# Resolver Tests + +This directory has tests and infrastructure for unit tests and GCE +integration tests of gRPC resolver functionality. + +There are two different tests here: + +## Resolver unit tests (resolver "component" tests) + +These tests run per-change, along with the rest of the grpc unit tests. +They query a local testing DNS server. + +## GCE integration tests + +These tests use the same test binary and the same test records +as the unit tests, but they run against GCE DNS (this is done by +running the test on a GCE instance and not specifying an authority +in uris). These tests run in a background job, which needs to be +actively monitored. + +## Making changes to test records + +After making a change to `resolver_test_record_groups.yaml`: + +1. Increment the "version number" in the `resolver_tests_common_zone_name` + DNS zone (this is a yaml field at the top + of `resolver_test_record_groups.yaml`). + +2. Regenerate projects. + +3. From the repo root, run: + +``` +$ test/cpp/naming/create_dns_private_zone.sh +$ test/cpp/naming/private_dns_zone_init.sh +``` + +Note that these commands must be ran in environment that +has access to the grpc-testing GCE project. + +If everything runs smoothly, then once the change is merged, +the GCE DNS integration testing job will transition to the +new records and continue passing. diff --git a/test/cpp/naming/create_private_dns_zone.sh b/test/cpp/naming/create_private_dns_zone.sh new file mode 100755 index 0000000000..3d7520b90a --- /dev/null +++ b/test/cpp/naming/create_private_dns_zone.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Copyright 2015 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file is auto-generated + +set -ex + +cd $(dirname $0)/../../.. + +gcloud alpha dns managed-zones create \ + resolver-tests-version-1-grpctestingexp-zone-id \ + --dns-name=resolver-tests-version-1.grpctestingexp. \ + --description="GCE-DNS-private-zone-for-GRPC-testing" \ + --visibility=private \ + --networks=default diff --git a/test/cpp/naming/gen_build_yaml.py b/test/cpp/naming/gen_build_yaml.py index 3a51fef7a0..91718156e9 100755 --- a/test/cpp/naming/gen_build_yaml.py +++ b/test/cpp/naming/gen_build_yaml.py @@ -24,6 +24,12 @@ import json _LOCAL_DNS_SERVER_ADDRESS = '127.0.0.1:15353' +_TARGET_RECORDS_TO_SKIP_AGAINST_GCE = [ + # TODO: enable this once able to upload the very large TXT record + # in this group to GCE DNS. + 'ipv4-config-causing-fallback-to-tcp', +] + def _append_zone_name(name, zone_name): return '%s.%s' % (name, zone_name) @@ -33,21 +39,107 @@ def _build_expected_addrs_cmd_arg(expected_addrs): out.append('%s,%s' % (addr['address'], str(addr['is_balancer']))) return ';'.join(out) +def _data_for_type(r_type, r_data, common_zone_name): + if r_type in ['A', 'AAAA']: + return ' '.join(map(lambda x: '\"%s\"' % x, r_data)) + if r_type == 'SRV': + assert len(r_data) == 1 + target = r_data[0].split(' ')[3] + uploadable_target = '%s.%s' % (target, common_zone_name) + uploadable = r_data[0].split(' ') + uploadable[3] = uploadable_target + return '\"%s\"' % ' '.join(uploadable) + if r_type == 'TXT': + assert len(r_data) == 1 + chunks = [] + all_data = r_data[0] + cur = 0 + # Split TXT records that span more than 255 characters (the single + # string length-limit in DNS) into multiple strings. Each string + # needs to be wrapped with double-quotes, and all inner double-quotes + # are escaped. The wrapping double-quotes and inner backslashes can be + # counted towards the 255 character length limit (as observed with gcloud), + # so make sure all strings fit within that limit. + while len(all_data[cur:]) > 0: + next_chunk = '\"' + while len(next_chunk) < 254 and len(all_data[cur:]) > 0: + if all_data[cur] == '\"': + if len(next_chunk) < 253: + next_chunk += '\\\"' + else: + break + else: + next_chunk += all_data[cur] + cur += 1 + next_chunk += '\"' + if len(next_chunk) > 255: + raise Exception('Bug: next chunk is too long.') + chunks.append(next_chunk) + # Wrap the whole record in single quotes to make sure all strings + # are associated with the same TXT record (to make it one bash token for + # gcloud) + return '\'%s\'' % ' '.join(chunks) + +# Convert DNS records from their "within a test group" format +# of the yaml file to an easier form for the templates to use. +def _gcloud_uploadable_form(test_cases, common_zone_name): + out = [] + for group in test_cases: + if group['record_to_resolve'] in _TARGET_RECORDS_TO_SKIP_AGAINST_GCE: + continue + for record_name in group['records'].keys(): + r_ttl = None + all_r_data = {} + for r_data in group['records'][record_name]: + # enforce records have the same TTL only for simplicity + if r_ttl is None: + r_ttl = r_data['TTL'] + assert r_ttl == r_data['TTL'], '%s and %s differ' % (r_ttl, r_data['TTL']) + r_type = r_data['type'] + if all_r_data.get(r_type) is None: + all_r_data[r_type] = [] + all_r_data[r_type].append(r_data['data']) + for r_type in all_r_data.keys(): + for r in out: + assert r['name'] != record_name or r['type'] != r_type, 'attempt to add a duplicate record' + out.append({ + 'name': record_name, + 'ttl': r_ttl, + 'type': r_type, + 'data': _data_for_type(r_type, all_r_data[r_type], common_zone_name) + }) + return out + +def _gce_dns_zone_id(resolver_component_data): + dns_name = resolver_component_data['resolver_tests_common_zone_name'] + return dns_name.replace('.', '-') + 'zone-id' + +def _resolver_test_cases(resolver_component_data, records_to_skip): + out = [] + for test_case in resolver_component_data['resolver_component_tests']: + if test_case['record_to_resolve'] in records_to_skip: + continue + out.append({ + 'target_name': _append_zone_name(test_case['record_to_resolve'], + resolver_component_data['resolver_tests_common_zone_name']), + 'expected_addrs': _build_expected_addrs_cmd_arg(test_case['expected_addrs']), + 'expected_chosen_service_config': (test_case['expected_chosen_service_config'] or ''), + 'expected_lb_policy': (test_case['expected_lb_policy'] or ''), + }) + return out + def main(): resolver_component_data = '' with open('test/cpp/naming/resolver_test_record_groups.yaml') as f: resolver_component_data = yaml.load(f) json = { - 'resolver_component_test_cases': [ - { - 'target_name': _append_zone_name(test_case['record_to_resolve'], - resolver_component_data['resolver_component_tests_common_zone_name']), - 'expected_addrs': _build_expected_addrs_cmd_arg(test_case['expected_addrs']), - 'expected_chosen_service_config': (test_case['expected_chosen_service_config'] or ''), - 'expected_lb_policy': (test_case['expected_lb_policy'] or ''), - } for test_case in resolver_component_data['resolver_component_tests'] - ], + 'resolver_tests_common_zone_name': resolver_component_data['resolver_tests_common_zone_name'], + 'resolver_gce_integration_tests_zone_id': _gce_dns_zone_id(resolver_component_data), + 'all_integration_test_records': _gcloud_uploadable_form(resolver_component_data['resolver_component_tests'], + resolver_component_data['resolver_tests_common_zone_name']), + 'resolver_gce_integration_test_cases': _resolver_test_cases(resolver_component_data, _TARGET_RECORDS_TO_SKIP_AGAINST_GCE), + 'resolver_component_test_cases': _resolver_test_cases(resolver_component_data, []), 'targets': [ { 'name': 'resolver_component_test' + unsecure_build_config_suffix, diff --git a/test/cpp/naming/private_dns_zone_init.sh b/test/cpp/naming/private_dns_zone_init.sh new file mode 100755 index 0000000000..4eaf750ab7 --- /dev/null +++ b/test/cpp/naming/private_dns_zone_init.sh @@ -0,0 +1,215 @@ +#!/bin/bash +# Copyright 2015 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file is auto-generated + +set -ex + +cd $(dirname $0)/../../.. + +gcloud dns record-sets transaction start -z=resolver-tests-version-1-grpctestingexp-zone-id + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=_grpclb._tcp.srv-ipv4-single-target.resolver-tests-version-1.grpctestingexp. \ + --type=SRV \ + --ttl=2100 \ + "0 0 1234 ipv4-single-target.resolver-tests-version-1.grpctestingexp." + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-single-target.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=_grpclb._tcp.srv-ipv4-multi-target.resolver-tests-version-1.grpctestingexp. \ + --type=SRV \ + --ttl=2100 \ + "0 0 1234 ipv4-multi-target.resolver-tests-version-1.grpctestingexp." + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-multi-target.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.5" "1.2.3.6" "1.2.3.7" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=_grpclb._tcp.srv-ipv6-single-target.resolver-tests-version-1.grpctestingexp. \ + --type=SRV \ + --ttl=2100 \ + "0 0 1234 ipv6-single-target.resolver-tests-version-1.grpctestingexp." + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv6-single-target.resolver-tests-version-1.grpctestingexp. \ + --type=AAAA \ + --ttl=2100 \ + "2607:f8b0:400a:801::1001" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=_grpclb._tcp.srv-ipv6-multi-target.resolver-tests-version-1.grpctestingexp. \ + --type=SRV \ + --ttl=2100 \ + "0 0 1234 ipv6-multi-target.resolver-tests-version-1.grpctestingexp." + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv6-multi-target.resolver-tests-version-1.grpctestingexp. \ + --type=AAAA \ + --ttl=2100 \ + "2607:f8b0:400a:801::1002" "2607:f8b0:400a:801::1003" "2607:f8b0:400a:801::1004" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. \ + --type=TXT \ + --ttl=2100 \ + '"grpc_config=[{\"serviceConfig\":{\"loadBalancingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"SimpleService\",\"waitForReady\":true}]}]}}]"' + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=_grpclb._tcp.srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. \ + --type=SRV \ + --ttl=2100 \ + "0 0 1234 ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp." + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp. \ + --type=TXT \ + --ttl=2100 \ + '"grpc_config=[{\"serviceConfig\":{\"loadBalancingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"NoSrvSimpleService\",\"waitForReady\":true}]}]}}]"' + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp. \ + --type=TXT \ + --ttl=2100 \ + '"grpc_config=[{\"clientLanguage\":[\"python\"],\"serviceConfig\":{\"loadBalancingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"PythonService\",\"waitForReady\":true}]}]}}]"' + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp. \ + --type=TXT \ + --ttl=2100 \ + '"grpc_config=[{\"percentage\":0,\"serviceConfig\":{\"loadBalancingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"CppService\",\"waitForReady\":true}]}]}}]"' + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp. \ + --type=TXT \ + --ttl=2100 \ + '"grpc_config=[{\"clientLanguage\":[\"go\"],\"serviceConfig\":{\"loadBalancingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"GoService\",\"waitForReady\":true}]}]}},{\"clientLanguage\":[\"c++\"],\"serviceConfig\":{" "\"loadBalancingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"CppService\",\"waitForReady\":true}]}]}}]"' + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp. \ + --type=TXT \ + --ttl=2100 \ + '"grpc_config=[{\"percentage\":0,\"serviceConfig\":{\"loadBalancingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"NeverPickedService\",\"waitForReady\":true}]}]}},{\"percentage\":100,\"serviceConfig\":{\"loadBalanc" "ingPolicy\":\"round_robin\",\"methodConfig\":[{\"name\":[{\"method\":\"Foo\",\"service\":\"AlwaysPickedService\",\"waitForReady\":true}]}]}}]"' + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=_grpclb._tcp.srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. \ + --type=SRV \ + --ttl=2100 \ + "0 0 1234 balancer-for-ipv4-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp." + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=balancer-for-ipv4-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. \ + --type=A \ + --ttl=2100 \ + "1.2.3.4" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=_grpclb._tcp.srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. \ + --type=SRV \ + --ttl=2100 \ + "0 0 1234 balancer-for-ipv6-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp." + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=balancer-for-ipv6-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. \ + --type=AAAA \ + --ttl=2100 \ + "2607:f8b0:400a:801::1002" + +gcloud dns record-sets transaction add \ + -z=resolver-tests-version-1-grpctestingexp-zone-id \ + --name=srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. \ + --type=AAAA \ + --ttl=2100 \ + "2607:f8b0:400a:801::1002" + +gcloud dns record-sets transaction describe -z=resolver-tests-version-1-grpctestingexp-zone-id +gcloud dns record-sets transaction execute -z=resolver-tests-version-1-grpctestingexp-zone-id +gcloud dns record-sets list -z=resolver-tests-version-1-grpctestingexp-zone-id diff --git a/test/cpp/naming/resolver_component_tests_runner.sh b/test/cpp/naming/resolver_component_tests_runner.sh index cf71c9dcf9..407db5ed66 100755 --- a/test/cpp/naming/resolver_component_tests_runner.sh +++ b/test/cpp/naming/resolver_component_tests_runner.sh @@ -73,7 +73,7 @@ EXIT_CODE=0 # in the resolver. $FLAGS_test_bin_path \ - --target_name='srv-ipv4-single-target.resolver-tests.grpctestingexp.' \ + --target_name='srv-ipv4-single-target.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:1234,True' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -81,7 +81,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='srv-ipv4-multi-target.resolver-tests.grpctestingexp.' \ + --target_name='srv-ipv4-multi-target.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.5:1234,True;1.2.3.6:1234,True;1.2.3.7:1234,True' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -89,7 +89,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='srv-ipv6-single-target.resolver-tests.grpctestingexp.' \ + --target_name='srv-ipv6-single-target.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='[2607:f8b0:400a:801::1001]:1234,True' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -97,7 +97,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='srv-ipv6-multi-target.resolver-tests.grpctestingexp.' \ + --target_name='srv-ipv6-multi-target.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='[2607:f8b0:400a:801::1002]:1234,True;[2607:f8b0:400a:801::1003]:1234,True;[2607:f8b0:400a:801::1004]:1234,True' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -105,7 +105,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='srv-ipv4-simple-service-config.resolver-tests.grpctestingexp.' \ + --target_name='srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:1234,True' \ --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"SimpleService","waitForReady":true}]}]}' \ --expected_lb_policy='round_robin' \ @@ -113,7 +113,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='ipv4-no-srv-simple-service-config.resolver-tests.grpctestingexp.' \ + --target_name='ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:443,False' \ --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"NoSrvSimpleService","waitForReady":true}]}]}' \ --expected_lb_policy='round_robin' \ @@ -121,7 +121,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='ipv4-no-config-for-cpp.resolver-tests.grpctestingexp.' \ + --target_name='ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:443,False' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -129,7 +129,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='ipv4-cpp-config-has-zero-percentage.resolver-tests.grpctestingexp.' \ + --target_name='ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:443,False' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -137,7 +137,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='ipv4-second-language-is-cpp.resolver-tests.grpctestingexp.' \ + --target_name='ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:443,False' \ --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"CppService","waitForReady":true}]}]}' \ --expected_lb_policy='round_robin' \ @@ -145,7 +145,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='ipv4-config-with-percentages.resolver-tests.grpctestingexp.' \ + --target_name='ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:443,False' \ --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"AlwaysPickedService","waitForReady":true}]}]}' \ --expected_lb_policy='round_robin' \ @@ -153,7 +153,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='srv-ipv4-target-has-backend-and-balancer.resolver-tests.grpctestingexp.' \ + --target_name='srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:1234,True;1.2.3.4:443,False' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -161,7 +161,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='srv-ipv6-target-has-backend-and-balancer.resolver-tests.grpctestingexp.' \ + --target_name='srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='[2607:f8b0:400a:801::1002]:1234,True;[2607:f8b0:400a:801::1002]:443,False' \ --expected_chosen_service_config='' \ --expected_lb_policy='' \ @@ -169,7 +169,7 @@ $FLAGS_test_bin_path \ wait $! || EXIT_CODE=1 $FLAGS_test_bin_path \ - --target_name='ipv4-config-causing-fallback-to-tcp.resolver-tests.grpctestingexp.' \ + --target_name='ipv4-config-causing-fallback-to-tcp.resolver-tests-version-1.grpctestingexp.' \ --expected_addrs='1.2.3.4:443,False' \ --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":"FooTwelve","service":"SimpleService","waitForReady":true}]},{"name":[{"method":"FooTwelve","service":"SimpleService","waitForReady":true}]},{"name":[{"method":"FooTwelve","service":"SimpleService","waitForReady":true}]}]}' \ --expected_lb_policy='' \ diff --git a/test/cpp/naming/resolver_gce_integration_tests_runner.sh b/test/cpp/naming/resolver_gce_integration_tests_runner.sh new file mode 100755 index 0000000000..b20d18d9d1 --- /dev/null +++ b/test/cpp/naming/resolver_gce_integration_tests_runner.sh @@ -0,0 +1,359 @@ +#!/bin/bash +# Copyright 2015 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This file is auto-generated + +set -ex + +if [[ "$GRPC_DNS_RESOLVER" == "" ]]; then + export GRPC_DNS_RESOLVER=ares +elif [[ "$GRPC_DNS_RESOLVER" != ares ]]; then + echo "Unexpected: GRPC_DNS_RESOLVER=$GRPC_DNS_RESOLVER. This test only works with c-ares resolver" + exit 1 +fi + +cd $(dirname $0)/../../.. + +if [[ "$CONFIG" == "" ]]; then + export CONFIG=opt +fi +make resolver_component_test +echo "Sanity check DNS records are resolveable with dig:" +EXIT_CODE=0 + +ONE_FAILED=0 +dig SRV _grpclb._tcp.srv-ipv4-single-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig SRV _grpclb._tcp.srv-ipv4-single-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-single-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-single-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig SRV _grpclb._tcp.srv-ipv4-multi-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig SRV _grpclb._tcp.srv-ipv4-multi-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-multi-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-multi-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig SRV _grpclb._tcp.srv-ipv6-single-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig SRV _grpclb._tcp.srv-ipv6-single-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig AAAA ipv6-single-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig AAAA ipv6-single-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig SRV _grpclb._tcp.srv-ipv6-multi-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig SRV _grpclb._tcp.srv-ipv6-multi-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig AAAA ipv6-multi-target.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig AAAA ipv6-multi-target.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig TXT srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig TXT srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig SRV _grpclb._tcp.srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig SRV _grpclb._tcp.srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig TXT ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig TXT ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig TXT ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig TXT ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig TXT ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig TXT ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig TXT ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig TXT ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig TXT ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig TXT ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig SRV _grpclb._tcp.srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig SRV _grpclb._tcp.srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A balancer-for-ipv4-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A balancer-for-ipv4-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig A srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig A srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig SRV _grpclb._tcp.srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig SRV _grpclb._tcp.srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig AAAA balancer-for-ipv6-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig AAAA balancer-for-ipv6-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +ONE_FAILED=0 +dig AAAA srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. | grep 'ANSWER SECTION' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Sanity check: dig AAAA srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + exit 1 +fi + +echo "Sanity check PASSED. Run resolver tests:" + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='srv-ipv4-single-target.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:1234,True' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: srv-ipv4-single-target.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='srv-ipv4-multi-target.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.5:1234,True;1.2.3.6:1234,True;1.2.3.7:1234,True' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: srv-ipv4-multi-target.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='srv-ipv6-single-target.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='[2607:f8b0:400a:801::1001]:1234,True' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: srv-ipv6-single-target.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='srv-ipv6-multi-target.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='[2607:f8b0:400a:801::1002]:1234,True;[2607:f8b0:400a:801::1003]:1234,True;[2607:f8b0:400a:801::1004]:1234,True' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: srv-ipv6-multi-target.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:1234,True' \ + --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"SimpleService","waitForReady":true}]}]}' \ + --expected_lb_policy='round_robin' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: srv-ipv4-simple-service-config.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:443,False' \ + --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"NoSrvSimpleService","waitForReady":true}]}]}' \ + --expected_lb_policy='round_robin' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: ipv4-no-srv-simple-service-config.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:443,False' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: ipv4-no-config-for-cpp.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:443,False' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: ipv4-cpp-config-has-zero-percentage.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:443,False' \ + --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"CppService","waitForReady":true}]}]}' \ + --expected_lb_policy='round_robin' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: ipv4-second-language-is-cpp.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:443,False' \ + --expected_chosen_service_config='{"loadBalancingPolicy":"round_robin","methodConfig":[{"name":[{"method":"Foo","service":"AlwaysPickedService","waitForReady":true}]}]}' \ + --expected_lb_policy='round_robin' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: ipv4-config-with-percentages.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='1.2.3.4:1234,True;1.2.3.4:443,False' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: srv-ipv4-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +ONE_FAILED=0 +bins/$CONFIG/resolver_component_test \ + --target_name='srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp.' \ + --expected_addrs='[2607:f8b0:400a:801::1002]:1234,True;[2607:f8b0:400a:801::1002]:443,False' \ + --expected_chosen_service_config='' \ + --expected_lb_policy='' || ONE_FAILED=1 +if [[ "$ONE_FAILED" != 0 ]]; then + echo "Test based on target record: srv-ipv6-target-has-backend-and-balancer.resolver-tests-version-1.grpctestingexp. FAILED" + EXIT_CODE=1 +fi + +exit $EXIT_CODE diff --git a/test/cpp/naming/resolver_test_record_groups.yaml b/test/cpp/naming/resolver_test_record_groups.yaml index 33d774ca70..2b3204335c 100644 --- a/test/cpp/naming/resolver_test_record_groups.yaml +++ b/test/cpp/naming/resolver_test_record_groups.yaml @@ -1,4 +1,4 @@ -resolver_component_tests_common_zone_name: resolver-tests.grpctestingexp. +resolver_tests_common_zone_name: resolver-tests-version-1.grpctestingexp. resolver_component_tests: - expected_addrs: - {address: '1.2.3.4:1234', is_balancer: true} diff --git a/test/cpp/naming/test_dns_server.py b/test/cpp/naming/test_dns_server.py index 9d4b89cffb..9f42f65ee6 100755 --- a/test/cpp/naming/test_dns_server.py +++ b/test/cpp/naming/test_dns_server.py @@ -66,7 +66,7 @@ def start_local_dns_server(args): with open(args.records_config_path) as config: test_records_config = yaml.load(config) - common_zone_name = test_records_config['resolver_component_tests_common_zone_name'] + common_zone_name = test_records_config['resolver_tests_common_zone_name'] for group in test_records_config['resolver_component_tests']: for name in group['records'].keys(): for record in group['records'][name]: |