From: James Coglan Date: Fri, 31 May 2024 11:56:11 +0000 (+0100) Subject: resolved: tests for dns_search_domain_new() X-Git-Tag: v257-rc1~839^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b65d6ab5dcba7332967935084e1732247b1098a5;p=thirdparty%2Fsystemd.git resolved: tests for dns_search_domain_new() --- diff --git a/src/resolve/meson.build b/src/resolve/meson.build index 42bd4beb740..f4c868f2d65 100644 --- a/src/resolve/meson.build +++ b/src/resolve/meson.build @@ -197,6 +197,19 @@ executables += [ 'sources' : files('test-dnssec-complex.c'), 'type' : 'manual', }, + test_template + { + 'sources' : [ + files('test-dns-search-domain.c'), + basic_dns_sources, + systemd_resolved_sources, + ], + 'dependencies' : [ + lib_openssl_or_gcrypt, + libm, + systemd_resolved_dependencies, + ], + 'include_directories' : resolve_includes, + }, test_template + { 'sources' : [ files('test-resolved-link.c'), diff --git a/src/resolve/test-dns-search-domain.c b/src/resolve/test-dns-search-domain.c new file mode 100644 index 00000000000..d92bee38de0 --- /dev/null +++ b/src/resolve/test-dns-search-domain.c @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "resolved-dns-search-domain.h" +#include "resolved-link.h" +#include "resolved-manager.h" + +#include "log.h" +#include "tests.h" + +/* ================================================================ + * dns_search_domain_new() + * ================================================================ */ + +TEST(dns_search_domain_new_system) { + Manager manager = {}; + _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd = NULL; + + ASSERT_OK(dns_search_domain_new(&manager, &sd, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "local")); + ASSERT_NOT_NULL(sd); + + ASSERT_TRUE(sd->linked); + ASSERT_STREQ(DNS_SEARCH_DOMAIN_NAME(sd), "local"); +} + +TEST(dns_search_domain_new_system_limit) { + Manager manager = {}; + DnsSearchDomain *sd = NULL; + + for (size_t i = 0; i < MANAGER_SEARCH_DOMAINS_MAX; i++) { + ASSERT_OK(dns_search_domain_new(&manager, &sd, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "local")); + ASSERT_NOT_NULL(sd); + ASSERT_EQ(manager.n_search_domains, i + 1); + } + + ASSERT_ERROR(dns_search_domain_new(&manager, &sd, DNS_SEARCH_DOMAIN_SYSTEM, NULL, "local"), E2BIG); + ASSERT_NOT_NULL(sd); + + dns_search_domain_unlink_all(manager.search_domains); +} + +TEST(dns_search_domain_new_link) { + Manager manager = {}; + Link *link = NULL; + _cleanup_(dns_search_domain_unrefp) DnsSearchDomain *sd = NULL; + + ASSERT_OK(link_new(&manager, &link, 1)); + ASSERT_NOT_NULL(link); + + ASSERT_OK(dns_search_domain_new(&manager, &sd, DNS_SEARCH_DOMAIN_LINK, link, "local.")); + ASSERT_NOT_NULL(sd); + + ASSERT_TRUE(sd->linked); + ASSERT_STREQ(DNS_SEARCH_DOMAIN_NAME(sd), "local"); +} + +TEST(dns_search_domain_new_link_limit) { + Manager manager = {}; + _cleanup_(link_freep) Link *link = NULL; + DnsSearchDomain *sd = NULL; + + ASSERT_OK(link_new(&manager, &link, 1)); + ASSERT_NOT_NULL(link); + + for (size_t i = 0; i < LINK_SEARCH_DOMAINS_MAX; i++) { + ASSERT_OK(dns_search_domain_new(&manager, &sd, DNS_SEARCH_DOMAIN_LINK, link, "local")); + ASSERT_NOT_NULL(sd); + ASSERT_EQ(link->n_search_domains, i + 1); + } + + ASSERT_ERROR(dns_search_domain_new(&manager, &sd, DNS_SEARCH_DOMAIN_LINK, link, "local"), E2BIG); + ASSERT_NOT_NULL(sd); +} + +DEFINE_TEST_MAIN(LOG_DEBUG);