TESTS: Add test_nwrap_gethostbyname_multiple test
authorRobin Hack <hack.robin@gmail.com>
Tue, 24 Mar 2015 11:03:14 +0000 (12:03 +0100)
committerMichael Adam <obnox@samba.org>
Wed, 7 Oct 2015 13:58:32 +0000 (15:58 +0200)
Test cover multiple records support.

Signed-off-by: Robin Hack <hack.robin@gmail.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
tests/hosts.in
tests/test_gethostby_name_addr.c

index 36f192bab52a062c65d312e8c5d87f0035af7f7f..59195aa39da5d00bef84c0a27a0e0fe890653f7a 100644 (file)
@@ -1,4 +1,6 @@
 127.0.0.11     magrathea.galaxy.site magrathea 
+127.0.0.12     magrathea.galaxy.site magrathea
+::29a          magrathea.galaxy.site magrathea
 127.0.0.12      maximegalon.galaxy.site
 ::13            beteigeuze.galaxy.site beteigeuze mail   
 127.0.0.14 krikkit.galaxy.site
index b9ae603aab455287b90ded5eeb6c0c147e75e866..7e5d0eed88810ffbc682de21194ab39a7ccecd8b 100644 (file)
@@ -71,6 +71,39 @@ static void test_nwrap_gethostbyname(void **state)
        assert_string_equal(ip, "127.0.0.11");
 }
 
+static void test_nwrap_gethostbyname_multiple(void **state)
+{
+       struct hostent *he;
+       char **list;
+
+       /* For inet_ntop call */
+       char buf[4096];
+       const char *result;
+       char *p = buf;
+
+       /* List of ips in hosts file - order matters */
+       const char *const result_ips[] = { "127.0.0.11", "127.0.0.12", NULL };
+       const char *actual_ip = result_ips[0];
+       unsigned int ac;
+
+       (void) state; /* unused */
+
+       he = gethostbyname("magrathea.galaxy.site");
+       assert_non_null(he);
+       assert_non_null(he->h_name);
+       assert_non_null(he->h_addr_list);
+
+       list = he->h_addr_list;
+       for (ac = 0; *list != NULL; ++ac, ++list) {
+               actual_ip = result_ips[ac];
+               /* When test fails here more records are returned */
+               assert_non_null(actual_ip);
+               result = inet_ntop(AF_INET, *list, p, 4096);
+               assert_non_null(p);
+               assert_string_equal(actual_ip, result);
+       }
+}
+
 #ifdef HAVE_GETHOSTBYNAME2
 static void test_nwrap_gethostbyname2(void **state)
 {
@@ -216,6 +249,7 @@ int main(void) {
 #ifdef HAVE_GETHOSTBYADDR_R
                cmocka_unit_test(test_nwrap_gethostbyaddr_r),
 #endif
+               cmocka_unit_test(test_nwrap_gethostbyname_multiple),
        };
 
        rc = cmocka_run_group_tests(tests, NULL, NULL);