From: Robin Hack Date: Tue, 24 Mar 2015 11:03:14 +0000 (+0100) Subject: TESTS: Add test_nwrap_gethostbyname_multiple test X-Git-Url: http://git.samba.org/?p=obnox%2Fcwrap%2Fnss_wrapper.git;a=commitdiff_plain;h=f839fb8fbd69c0d2614c92b7f852a735912d75bc TESTS: Add test_nwrap_gethostbyname_multiple test Test cover multiple records support. Signed-off-by: Robin Hack Reviewed-by: Andreas Schneider Reviewed-by: Michael Adam --- diff --git a/tests/hosts.in b/tests/hosts.in index 36f192b..59195aa 100644 --- a/tests/hosts.in +++ b/tests/hosts.in @@ -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 diff --git a/tests/test_gethostby_name_addr.c b/tests/test_gethostby_name_addr.c index b9ae603..7e5d0ee 100644 --- a/tests/test_gethostby_name_addr.c +++ b/tests/test_gethostby_name_addr.c @@ -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);