From 9f478e0a80e505cc0d8f67d454dbec92905553dc Mon Sep 17 00:00:00 2001 From: Marcin Niestroj Date: Thu, 18 Mar 2021 12:52:55 +0100 Subject: [PATCH] tests: net: dns_addremove: cover dns_resolve_reconfigure() Add tests for just introduced dns_resolve_reconfigure() API, which allows to replace old DNS servers with new ones. Signed-off-by: Marcin Niestroj --- tests/net/lib/dns_addremove/src/main.c | 52 ++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tests/net/lib/dns_addremove/src/main.c b/tests/net/lib/dns_addremove/src/main.c index 75bf5a7e594..b0ad1f84ba0 100644 --- a/tests/net/lib/dns_addremove/src/main.c +++ b/tests/net/lib/dns_addremove/src/main.c @@ -41,6 +41,7 @@ LOG_MODULE_REGISTER(net_test, CONFIG_DNS_RESOLVER_LOG_LEVEL); #define NAME_IPV6 "2001:db8::1" #define DNS_NAME_IPV4 "192.0.2.4" +#define DNS2_NAME_IPV4 "192.0.2.5" #define DNS_NAME_IPV6 "2001:db8::4" #define DNS_TIMEOUT 500 /* ms */ @@ -437,6 +438,56 @@ static void test_dns_remove_callback(void) #endif } +static void test_dns_reconfigure_callback(void) +{ +#if defined(CONFIG_NET_IPV4) + struct dns_resolve_context *dnsCtx = &resv_ipv4; + const char *dns_servers_str[] = { DNS_NAME_IPV4, NULL }; + const char *dns2_servers_str[] = { DNS2_NAME_IPV4, NULL }; + int ret; + + ret = dns_resolve_init(dnsCtx, dns_servers_str, NULL); + if (ret < 0) { + LOG_ERR("dns_resolve_init fail (%d)", ret); + return; + } + + k_yield(); /* mandatory so that net_if send func gets to run */ + + /* Wait for DNS added callback after adding DNS */ + if (k_sem_take(&dns_added, WAIT_TIME)) { + zassert_true(false, + "Timeout while waiting for DNS added callback"); + } + + ret = dns_resolve_reconfigure(&resv_ipv4, dns2_servers_str, NULL); + zassert_equal(ret, 0, "Cannot reconfigure DNS server"); + + /* Wait for DNS removed callback after reconfiguring DNS */ + if (k_sem_take(&dns_removed, WAIT_TIME)) { + zassert_true(false, + "Timeout while waiting for DNS removed callback"); + } + + /* Wait for DNS added callback after reconfiguring DNS */ + if (k_sem_take(&dns_added, WAIT_TIME)) { + zassert_true(false, + "Timeout while waiting for DNS added callback"); + } + + ret = dns_resolve_close(&resv_ipv4); + zassert_equal(ret, 0, "Cannot remove DNS server"); + + k_yield(); /* mandatory so that net_if send func gets to run */ + + /* Wait for DNS removed callback after removing DNS */ + if (k_sem_take(&dns_removed, WAIT_TIME)) { + zassert_true(false, + "Timeout while waiting for DNS removed callback"); + } +#endif +} + static void test_dns_remove_none_callback(void) { #if defined(CONFIG_NET_IPV4) @@ -564,6 +615,7 @@ void test_main(void) ztest_unit_test(test_dns_do_not_add_add_callback), ztest_unit_test(test_dns_add_callback), ztest_unit_test(test_dns_remove_callback), + ztest_unit_test(test_dns_reconfigure_callback), ztest_unit_test(test_dns_remove_none_callback), ztest_unit_test(test_dns_add_remove_two_callback)