aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/core/client_channel/resolvers/dns_resolver_test.cc
diff options
context:
space:
mode:
authorGravatar Yash Tibrewal <yashkt@google.com>2017-11-09 17:46:29 -0800
committerGravatar Yash Tibrewal <yashkt@google.com>2017-11-09 17:46:29 -0800
commit4e9265c828f0b559b5fdba04913fed46bf771399 (patch)
tree4a379fc2bdc037753cf8d81f8b86327e4bc50a42 /test/core/client_channel/resolvers/dns_resolver_test.cc
parent0ee7574732a06e8cace4e099a678f4bd5dbff679 (diff)
parentd9da7387b8057f3bd99a417a5ee905377bce9296 (diff)
Merge with master
Diffstat (limited to 'test/core/client_channel/resolvers/dns_resolver_test.cc')
-rw-r--r--test/core/client_channel/resolvers/dns_resolver_test.cc92
1 files changed, 92 insertions, 0 deletions
diff --git a/test/core/client_channel/resolvers/dns_resolver_test.cc b/test/core/client_channel/resolvers/dns_resolver_test.cc
new file mode 100644
index 0000000000..8b40360263
--- /dev/null
+++ b/test/core/client_channel/resolvers/dns_resolver_test.cc
@@ -0,0 +1,92 @@
+/*
+ *
+ * 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.
+ *
+ */
+
+#include <string.h>
+
+#include <grpc/support/log.h>
+
+#include "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h"
+#include "src/core/ext/filters/client_channel/resolver_registry.h"
+#include "src/core/lib/iomgr/combiner.h"
+#include "test/core/util/test_config.h"
+
+static grpc_combiner* g_combiner;
+
+static void test_succeeds(grpc_resolver_factory* factory, const char* string) {
+ ExecCtx _local_exec_ctx;
+ grpc_uri* uri = grpc_uri_parse(string, 0);
+ grpc_resolver_args args;
+ grpc_resolver* resolver;
+ gpr_log(GPR_DEBUG, "test: '%s' should be valid for '%s'", string,
+ factory->vtable->scheme);
+ GPR_ASSERT(uri);
+ memset(&args, 0, sizeof(args));
+ args.uri = uri;
+ args.combiner = g_combiner;
+ resolver = grpc_resolver_factory_create_resolver(factory, &args);
+ GPR_ASSERT(resolver != NULL);
+ GRPC_RESOLVER_UNREF(resolver, "test_succeeds");
+ grpc_uri_destroy(uri);
+ grpc_exec_ctx_finish();
+}
+
+static void test_fails(grpc_resolver_factory* factory, const char* string) {
+ ExecCtx _local_exec_ctx;
+ grpc_uri* uri = grpc_uri_parse(string, 0);
+ grpc_resolver_args args;
+ grpc_resolver* resolver;
+ gpr_log(GPR_DEBUG, "test: '%s' should be invalid for '%s'", string,
+ factory->vtable->scheme);
+ GPR_ASSERT(uri);
+ memset(&args, 0, sizeof(args));
+ args.uri = uri;
+ args.combiner = g_combiner;
+ resolver = grpc_resolver_factory_create_resolver(factory, &args);
+ GPR_ASSERT(resolver == NULL);
+ grpc_uri_destroy(uri);
+ grpc_exec_ctx_finish();
+}
+
+int main(int argc, char** argv) {
+ grpc_resolver_factory* dns;
+ grpc_test_init(argc, argv);
+ grpc_init();
+
+ g_combiner = grpc_combiner_create();
+
+ dns = grpc_resolver_factory_lookup("dns");
+
+ test_succeeds(dns, "dns:10.2.1.1");
+ test_succeeds(dns, "dns:10.2.1.1:1234");
+ test_succeeds(dns, "ipv4:www.google.com");
+ if (grpc_resolve_address == grpc_resolve_address_ares) {
+ test_succeeds(dns, "ipv4://8.8.8.8/8.8.8.8:8888");
+ } else {
+ test_fails(dns, "ipv4://8.8.8.8/8.8.8.8:8888");
+ }
+
+ grpc_resolver_factory_unref(dns);
+ {
+ ExecCtx _local_exec_ctx;
+ GRPC_COMBINER_UNREF(g_combiner, "test");
+ grpc_exec_ctx_finish();
+ }
+ grpc_shutdown();
+
+ return 0;
+}