[LTP] [PATCH] network/lib6/getaddrinfo01: rewrite with the new API + use static hostnames
Alexey Kodanev
aleksei.kodanev@bell-sw.com
Tue May 18 10:30:45 CEST 2021
On 18.05.2021 09:02, Petr Vorel wrote:
> Hi Alexey,
>
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
>
Hi Petr,
Thank you for review!
> Moving everything to /etc/hosts based setup is a great idea
> as we get rid of network setup related failures.
>
> Do we lost any getaddrinfo() test coverage for bypassing DNS?
We may lose some DNS lookups queries because the files almost always
will be checked first by nss, and I think this is covered by another
test, dns-stress{01|02} (focus more on the server than the client).
> Just a few unimportant nits below (feel free to ignore them).
> Again, I'd be for merging this before release.
>
OK, I'll post v2 today.
>> The test is now independent of various machine settings
>> regarding the test host name as it adds predefined names
>> and aliases to /etc/hosts file and restores it to its
>> original state after completing the test.
>
>> This should fix the following failures:
>> * when gethostname() returns an alias name that doesn't
>> match canonical name;
>> * No AAAA record for the returned name from gethostname().
>
>> Addresses and names added to /etc/hosts are more or less
>> unique, so that there are no conflicts with the existing
>> configuration.
> We might want to put this into docparse documentation, e.g:
>
> /*\
> * [Description]
> *
> * Basic getaddrinfo() tests.
> *
> * Test use LTP specific addresses and names added to /etc/hosts to avoid
> * problems with DNS and hostname setup or conflicts with existing
> * configuration.
> */
>
>> Also most of the duplicate code is now gone.
>
>> Signed-off-by: Alexey Kodanev <aleksei.kodanev@bell-sw.com>
>> ---
>> testcases/network/lib6/getaddrinfo_01.c | 1140 +++++------------------
>> 1 file changed, 235 insertions(+), 905 deletions(-)
>
>> diff --git a/testcases/network/lib6/getaddrinfo_01.c b/testcases/network/lib6/getaddrinfo_01.c
>> index db252a998..23a279ed1 100644
>
> ...
>> +static void gaiv(void)
>> +{
>> + check_addrinfo(1, "basic lookup", hostname, 0, NULL, 0, 0, 0, NULL);
>> + check_addrinfo_name("canonical name");
>
> ...
>> + check_addrinfo(1, "host+service", hostname, 7, "echo", 0, 0, 0, NULL);
>> +
>> + check_addrinfo(1, "host+service, AI_PASSIVE", hostname, 9462, "9462",
>> + AI_PASSIVE, SOCK_STREAM, 0, test_passive);
>> +
>> + check_addrinfo(0, "host+service, AI_NUMERICHOST", hostname, 7, "echo",
>> + AI_NUMERICHOST, SOCK_STREAM, 0, NULL);
>> + if (TST_RET != EAI_NONAME)
>> + tst_brk(TFAIL, "AI_NUMERICHOST: ret %ld exp %d (EAI_NONAME)",
>> + TST_RET, EAI_NONAME);
>> + tst_res(TPASS, "AI_NUMERICHOST: exp %ld (EAI_NONAME)", TST_RET);
>> +
>> + check_addrinfo(1, "0+service, AI_PASSIVE", NULL, 9462, "9462",
>> + AI_PASSIVE, SOCK_STREAM, 0, test_passive_no_host);
>> +
>> + check_addrinfo(0, "0+service", NULL, 9462, "9462",
>> + 0, SOCK_STREAM, 0, test_loopback);
>> + if (TST_RET == EAI_BADFLAGS) {
>> + tst_res(TPASS, "0+service ('', '9462') returns %ld '%s'",
>> + TST_RET, gai_strerror(TST_RET));
>> + } else if (TST_RET) {
>> + tst_brk(TFAIL, "0+service ('', '9462') returns %ld '%s'",
>> + TST_RET, gai_strerror(TST_RET));
>> }
> nit: Maybe having check_addrinfo_badflags() which would do the verification
> would safe few lines of code duplicity.
>
> ...
>> - /* test 16, IPv6 host+service w/ AI_NUMERICHOST */
>> - memset(&hints, 0, sizeof(hints));
>> - strcpy(service, "echo");
>> - servnum = 7;
>> - hints.ai_family = AF_INET6;
>> - hints.ai_flags = AI_NUMERICHOST;
>> - TEST(getaddrinfo(hostname, service, &hints, &aires));
>> - if (TEST_RETURN != EAI_NONAME) {
>> - tst_resm(TFAIL, "getaddrinfo IPv6 AI_NUMERICHOST w/ hostname: "
>> - "returns %ld expected %d (EAI_NONAME)",
>> - TEST_RETURN, EAI_NONAME);
>> - if (!TEST_RETURN)
>> - freeaddrinfo(aires);
>> - return;
>> + check_addrinfo(0, "SOCK_STREAM/IPPROTO_UDP", NULL, 0, NULL, 0,
>> + SOCK_STREAM, IPPROTO_UDP, NULL);
>> + if (!TST_RET)
>> + tst_brk(TFAIL, "SOCK_STREAM/IPPROTO_UDP: unexpected pass");
>> + tst_res(TPASS, "SOCK_STREAM/IPPROTO_UDP: failed as expected");
>> +
>> + check_addrinfo(0, "socktype 0, 513", NULL, 513, "513", 0, 0, 0, NULL);
> And here also check_addrinfo_badflags() (if implemented)
> and nit: "socktype 0,513" (remove space)
>
>> + if (TST_RET == EAI_BADFLAGS) {
>> + tst_res(TPASS, "socktype 0,513 returns %ld '%s'",
>> + TST_RET, gai_strerror(TST_RET));
>> + } else if (TST_RET) {
>> + tst_brk(TFAIL, "socktype 0,513 returns %ld '%s'",
>> + TST_RET, gai_strerror(TST_RET));
>> }
>
> Kind regards,
> Petr
>
More information about the ltp
mailing list