1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/tests/unittests/tests-dns_cache/tests-dns_cache.c

70 lines
2.3 KiB
C

/*
* Copyright (C) 2022 ML!PA Consulting GmbH
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
#include <stdint.h>
#include <string.h>
#include "net/af.h"
#include "net/ipv6.h"
#include "ztimer.h"
#include "net/dns/cache.h"
#include "tests-dns_cache.h"
static void test_dns_cache_add(void)
{
ipv6_addr_t addr_in = IPV6_ADDR_ALL_NODES_IF_LOCAL;
ipv6_addr_t addr_out;
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.com", &addr_out, AF_INET6));
/* add DNS entry, set it to expire in 1s */
dns_cache_add("example.com", &addr_in, sizeof(addr_in), 1);
TEST_ASSERT_EQUAL_INT(sizeof(addr_out), dns_cache_query("example.com", &addr_out, AF_INET6));
TEST_ASSERT_EQUAL_INT(0, memcmp(&addr_in, &addr_out, sizeof(addr_in)));
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.com", &addr_out, AF_INET));
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("alt.example.com", &addr_out, AF_INET6));
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.comm", &addr_out, AF_INET6));
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.co", &addr_out, AF_INET6));
ztimer_sleep(ZTIMER_USEC, 2000000);
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.com", &addr_out, AF_INET6));
}
static void test_dns_cache_add_ttl0(void)
{
ipv6_addr_t addr_in = IPV6_ADDR_ALL_NODES_IF_LOCAL;
ipv6_addr_t addr_out;
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.com", &addr_out, AF_INET6));
dns_cache_add("example.com", &addr_in, sizeof(addr_in), 0);
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.com", &addr_out, AF_INET6));
dns_cache_add("example.com", &addr_in, sizeof(addr_in), 1);
TEST_ASSERT_EQUAL_INT(sizeof(addr_out), dns_cache_query("example.com", &addr_out, AF_INET6));
dns_cache_add("example.com", &addr_in, sizeof(addr_in), 0);
TEST_ASSERT_EQUAL_INT(0, dns_cache_query("example.com", &addr_out, AF_INET6));
}
Test *tests_dns_cache_tests(void)
{
EMB_UNIT_TESTFIXTURES(fixtures) {
new_TestFixture(test_dns_cache_add),
new_TestFixture(test_dns_cache_add_ttl0),
};
EMB_UNIT_TESTCALLER(dns_cache_tests, NULL, NULL, fixtures);
return (Test *)&dns_cache_tests;
}
void tests_dns_cache(void)
{
TESTS_RUN(tests_dns_cache_tests());
}