Skip to content

Commit 35b1fa2

Browse files
rlubosdkalowsk
authored andcommitted
tests: net: offloaded_netdev: Add test for offloaded DNS APIs
Add test case verifying that offloaded DNS APIs are called as expected and that enabling/disabling DNS offloading at runtime works. Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
1 parent b18bc7c commit 35b1fa2

File tree

1 file changed

+77
-0
lines changed
  • tests/net/offloaded_netdev/src

1 file changed

+77
-0
lines changed

tests/net/offloaded_netdev/src/main.c

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <zephyr/ztest.h>
1717
#include <zephyr/net/offloaded_netdev.h>
1818
#include <zephyr/net/net_offload.h>
19+
#include <zephyr/net/socket_offload.h>
1920
#include <zephyr/net/net_if.h>
2021
#include <zephyr/net/net_l2.h>
2122

@@ -390,4 +391,80 @@ ZTEST(net_offloaded_netdev, test_addr_add_net_off_impl)
390391
test_addr_add_common(test_iface, "net");
391392
}
392393

394+
static bool offload_getaddrinfo_called;
395+
396+
static int test_offload_getaddrinfo(const char *node,
397+
const char *service,
398+
const struct zsock_addrinfo *hints,
399+
struct zsock_addrinfo **res)
400+
{
401+
ARG_UNUSED(node);
402+
ARG_UNUSED(service);
403+
ARG_UNUSED(hints);
404+
ARG_UNUSED(res);
405+
406+
offload_getaddrinfo_called = true;
407+
408+
return 0;
409+
}
410+
411+
static void test_offload_freeaddrinfo(struct zsock_addrinfo *res)
412+
{
413+
ARG_UNUSED(res);
414+
}
415+
416+
static const struct socket_dns_offload test_dns_offload_ops = {
417+
.getaddrinfo = test_offload_getaddrinfo,
418+
.freeaddrinfo = test_offload_freeaddrinfo,
419+
};
420+
421+
ZTEST(net_offloaded_netdev, test_dns_offload)
422+
{
423+
struct zsock_addrinfo *ai;
424+
425+
/* Register offloaded DNS */
426+
offload_getaddrinfo_called = false;
427+
socket_offload_dns_register(&test_dns_offload_ops);
428+
zassert_true(socket_offload_dns_is_enabled(),
429+
"DNS offloading should be enabled");
430+
zassert_ok(zsock_getaddrinfo("127.0.0.1", NULL, NULL, &ai),
431+
"getaddrinfo() failed");
432+
zassert_true(offload_getaddrinfo_called,
433+
"Offloaded implementation should be called");
434+
zsock_freeaddrinfo(ai);
435+
436+
/* Disable offloaded DNS */
437+
offload_getaddrinfo_called = false;
438+
socket_offload_dns_enable(false);
439+
zassert_false(socket_offload_dns_is_enabled(),
440+
"DNS offloading should be disabled");
441+
zassert_ok(zsock_getaddrinfo("127.0.0.1", NULL, NULL, &ai),
442+
"getaddrinfo() failed");
443+
zassert_false(offload_getaddrinfo_called,
444+
"Offloaded implementation shouldn't be called");
445+
zsock_freeaddrinfo(ai);
446+
447+
/* Reenable offloaded DNS */
448+
offload_getaddrinfo_called = false;
449+
socket_offload_dns_enable(true);
450+
zassert_true(socket_offload_dns_is_enabled(),
451+
"DNS offloading should be enabled");
452+
zassert_ok(zsock_getaddrinfo("127.0.0.1", NULL, NULL, &ai),
453+
"getaddrinfo() failed");
454+
zassert_true(offload_getaddrinfo_called,
455+
"Offloaded implementation should be called");
456+
zsock_freeaddrinfo(ai);
457+
458+
/* Deregister offloaded DNS */
459+
offload_getaddrinfo_called = false;
460+
socket_offload_dns_deregister(&test_dns_offload_ops);
461+
zassert_false(socket_offload_dns_is_enabled(),
462+
"DNS offloading should be disabled");
463+
zassert_ok(zsock_getaddrinfo("127.0.0.1", NULL, NULL, &ai),
464+
"getaddrinfo() failed");
465+
zassert_false(offload_getaddrinfo_called,
466+
"Offloaded implementation shouldn't be called");
467+
zsock_freeaddrinfo(ai);
468+
}
469+
393470
ZTEST_SUITE(net_offloaded_netdev, NULL, NULL, net_offloaded_netdev_before, NULL, NULL);

0 commit comments

Comments
 (0)