diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-08-20 10:45:27 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-08-21 07:18:31 -0700 |
| commit | 75adda86be49e6839e50443f0bae5875d9910897 (patch) | |
| tree | e29b8b449c863be01e5f02945940dc390b239462 /tests | |
| parent | 6305e16ab64e42fd9791819d416a6e3534439b0b (diff) | |
| download | nng-75adda86be49e6839e50443f0bae5875d9910897.tar.gz nng-75adda86be49e6839e50443f0bae5875d9910897.tar.bz2 nng-75adda86be49e6839e50443f0bae5875d9910897.zip | |
fixes #41 Move DNS out of tcp transport
This moves the DNS related functionality into common code, and also
removes all the URL parsing stuff out of the platform specific code
and into the transports. Now the transports just take sockaddr's on
initialization. (We may want to move this until later.)
We also add UDP resolution as another separate API.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/resolv.c | 90 |
1 files changed, 64 insertions, 26 deletions
diff --git a/tests/resolv.c b/tests/resolv.c index 94108765..849b41cd 100644 --- a/tests/resolv.c +++ b/tests/resolv.c @@ -126,67 +126,105 @@ ip6tostr(void *addr) ); #endif -TestMain("TCP Resolver", { +TestMain("Resolver", { nni_init(); Convey("Google DNS IPv4 resolves", { - nni_aio aio; - const char *str; + nni_aio aio; + const char * str; + nng_sockaddr sa; memset(&aio, 0, sizeof(aio)); nni_aio_init(&aio, NULL, NULL); + aio.a_addr = &sa; nni_plat_tcp_resolv("google-public-dns-a.google.com", "80", NNG_AF_INET, 1, &aio); nni_aio_wait(&aio); So(nni_aio_result(&aio) == 0); - So(aio.a_naddrs == 1); - So(aio.a_addrs[0].s_un.s_in.sa_family == NNG_AF_INET); - So(aio.a_addrs[0].s_un.s_in.sa_port == ntohs(80)); - str = ip4tostr(&aio.a_addrs[0].s_un.s_in.sa_addr); + So(sa.s_un.s_in.sa_family == NNG_AF_INET); + So(sa.s_un.s_in.sa_port == ntohs(80)); + str = ip4tostr(&sa.s_un.s_in.sa_addr); So(strcmp(str, "8.8.8.8") == 0); nni_aio_fini(&aio); }); + Convey("Numeric UDP resolves", { + nni_aio aio; + const char * str; + nng_sockaddr sa; + memset(&aio, 0, sizeof(aio)); + nni_aio_init(&aio, NULL, NULL); + aio.a_addr = &sa; + nni_plat_udp_resolv("8.8.4.4", "69", NNG_AF_INET, 1, &aio); + nni_aio_wait(&aio); + So(nni_aio_result(&aio) == 0); + So(sa.s_un.s_in.sa_family == NNG_AF_INET); + So(sa.s_un.s_in.sa_port == ntohs(69)); + str = ip4tostr(&sa.s_un.s_in.sa_addr); + So(strcmp(str, "8.8.4.4") == 0); + nni_aio_fini(&aio); + }); Convey("Numeric v4 resolves", { - nni_aio aio; - const char *str; + nni_aio aio; + const char * str; + nng_sockaddr sa; memset(&aio, 0, sizeof(aio)); nni_aio_init(&aio, NULL, NULL); + aio.a_addr = &sa; nni_plat_tcp_resolv("8.8.4.4", "80", NNG_AF_INET, 1, &aio); nni_aio_wait(&aio); So(nni_aio_result(&aio) == 0); - So(aio.a_naddrs == 1); - So(aio.a_addrs[0].s_un.s_in.sa_family == NNG_AF_INET); - So(aio.a_addrs[0].s_un.s_in.sa_port == ntohs(80)); - str = ip4tostr(&aio.a_addrs[0].s_un.s_in.sa_addr); + So(sa.s_un.s_in.sa_family == NNG_AF_INET); + So(sa.s_un.s_in.sa_port == ntohs(80)); + str = ip4tostr(&sa.s_un.s_in.sa_addr); So(strcmp(str, "8.8.4.4") == 0); nni_aio_fini(&aio); }); Convey("Numeric v6 resolves", { - nni_aio aio; - const char *str; + nni_aio aio; + const char * str; + nng_sockaddr sa; memset(&aio, 0, sizeof(aio)); nni_aio_init(&aio, NULL, NULL); + aio.a_addr = &sa; nni_plat_tcp_resolv("::1", "80", NNG_AF_INET6, 1, &aio); nni_aio_wait(&aio); So(nni_aio_result(&aio) == 0); - So(aio.a_naddrs == 1); - So(aio.a_addrs[0].s_un.s_in6.sa_family == NNG_AF_INET6); - So(aio.a_addrs[0].s_un.s_in6.sa_port == ntohs(80)); - str = ip6tostr(&aio.a_addrs[0].s_un.s_in6.sa_addr); + So(sa.s_un.s_in6.sa_family == NNG_AF_INET6); + So(sa.s_un.s_in6.sa_port == ntohs(80)); + str = ip6tostr(&sa.s_un.s_in6.sa_addr); So(strcmp(str, "::1") == 0); nni_aio_fini(&aio); }); - Convey("Name service resolves", { - nni_aio aio; - const char *str; + + Convey("TCP Name service resolves", { + nni_aio aio; + const char * str; + nng_sockaddr sa; memset(&aio, 0, sizeof(aio)); nni_aio_init(&aio, NULL, NULL); + aio.a_addr = &sa; nni_plat_tcp_resolv("8.8.4.4", "http", NNG_AF_INET, 1, &aio); nni_aio_wait(&aio); So(nni_aio_result(&aio) == 0); - So(aio.a_naddrs == 1); - So(aio.a_addrs[0].s_un.s_in.sa_family == NNG_AF_INET); - So(aio.a_addrs[0].s_un.s_in.sa_port == ntohs(80)); - str = ip4tostr(&aio.a_addrs[0].s_un.s_in.sa_addr); + So(sa.s_un.s_in.sa_family == NNG_AF_INET); + So(sa.s_un.s_in.sa_port == ntohs(80)); + str = ip4tostr(&sa.s_un.s_in.sa_addr); + So(strcmp(str, "8.8.4.4") == 0); + nni_aio_fini(&aio); + }); + + Convey("UDP Name service resolves", { + nni_aio aio; + const char * str; + nng_sockaddr sa; + memset(&aio, 0, sizeof(aio)); + nni_aio_init(&aio, NULL, NULL); + aio.a_addr = &sa; + nni_plat_udp_resolv("8.8.4.4", "tftp", NNG_AF_INET, 1, &aio); + nni_aio_wait(&aio); + So(nni_aio_result(&aio) == 0); + So(sa.s_un.s_in.sa_family == NNG_AF_INET); + So(sa.s_un.s_in.sa_port == ntohs(69)); + str = ip4tostr(&sa.s_un.s_in.sa_addr); So(strcmp(str, "8.8.4.4") == 0); nni_aio_fini(&aio); }); |
