From c28ec168aa728e5338f8914ca4dfeb8e28a7dfa2 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 4 May 2026 14:15:44 +0900 Subject: [PATCH] test: move test cases for client_id_{hash,compare}_func() to test-dhcp-client-id.c --- src/libsystemd-network/meson.build | 3 ++ src/libsystemd-network/test-dhcp-client-id.c | 51 ++++++++++++++++++++ src/libsystemd-network/test-dhcp-server.c | 46 ------------------ 3 files changed, 54 insertions(+), 46 deletions(-) create mode 100644 src/libsystemd-network/test-dhcp-client-id.c diff --git a/src/libsystemd-network/meson.build b/src/libsystemd-network/meson.build index 9a2d1bc7765..500882319e6 100644 --- a/src/libsystemd-network/meson.build +++ b/src/libsystemd-network/meson.build @@ -78,6 +78,9 @@ executables += [ network_test_template + { 'sources' : files('test-dhcp-client.c'), }, + network_test_template + { + 'sources' : files('test-dhcp-client-id.c'), + }, network_test_template + { 'sources' : files('test-dhcp-duid.c'), }, diff --git a/src/libsystemd-network/test-dhcp-client-id.c b/src/libsystemd-network/test-dhcp-client-id.c new file mode 100644 index 00000000000..60cb682c88b --- /dev/null +++ b/src/libsystemd-network/test-dhcp-client-id.c @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "dhcp-client-id-internal.h" +#include "hashmap.h" +#include "siphash24.h" +#include "tests.h" + +static uint64_t client_id_hash_helper(sd_dhcp_client_id *id, uint8_t key[HASH_KEY_SIZE]) { + struct siphash state; + + siphash24_init(&state, key); + client_id_hash_func(id, &state); + + return htole64(siphash24_finalize(&state)); +} + +TEST(client_id_hash) { + sd_dhcp_client_id a = { + .size = 4, + }, b = { + .size = 4, + }; + uint8_t hash_key[HASH_KEY_SIZE] = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', + }; + + log_debug("/* %s */", __func__); + + memcpy(a.raw, "abcd", 4); + memcpy(b.raw, "abcd", 4); + + ASSERT_EQ(client_id_compare_func(&a, &b), 0); + ASSERT_EQ(client_id_hash_helper(&a, hash_key), client_id_hash_helper(&b, hash_key)); + a.size = 3; + ASSERT_NE(client_id_compare_func(&a, &b), 0); + a.size = 4; + ASSERT_EQ(client_id_compare_func(&a, &b), 0); + ASSERT_EQ(client_id_hash_helper(&a, hash_key), client_id_hash_helper(&b, hash_key)); + + b.size = 3; + ASSERT_NE(client_id_compare_func(&a, &b), 0); + b.size = 4; + ASSERT_EQ(client_id_compare_func(&a, &b), 0); + ASSERT_EQ(client_id_hash_helper(&a, hash_key), client_id_hash_helper(&b, hash_key)); + + memcpy(b.raw, "abce", 4); + ASSERT_NE(client_id_compare_func(&a, &b), 0); +} + +DEFINE_TEST_MAIN(LOG_DEBUG); diff --git a/src/libsystemd-network/test-dhcp-server.c b/src/libsystemd-network/test-dhcp-server.c index 3dc49491269..4da4fdb116b 100644 --- a/src/libsystemd-network/test-dhcp-server.c +++ b/src/libsystemd-network/test-dhcp-server.c @@ -9,8 +9,6 @@ #include "sd-event.h" #include "dhcp-server-internal.h" -#include "hashmap.h" -#include "siphash24.h" #include "tests.h" static void test_pool(struct in_addr *address, unsigned size, int ret) { @@ -285,49 +283,6 @@ static void test_message_handler(void) { ASSERT_OK_EQ(dhcp_server_handle_message(server, (DHCPMessage*)&test, sizeof(test), NULL), DHCP_ACK); } -static uint64_t client_id_hash_helper(sd_dhcp_client_id *id, uint8_t key[HASH_KEY_SIZE]) { - struct siphash state; - - siphash24_init(&state, key); - client_id_hash_func(id, &state); - - return htole64(siphash24_finalize(&state)); -} - -static void test_client_id_hash(void) { - sd_dhcp_client_id a = { - .size = 4, - }, b = { - .size = 4, - }; - uint8_t hash_key[HASH_KEY_SIZE] = { - '0', '1', '2', '3', '4', '5', '6', '7', - '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', - }; - - log_debug("/* %s */", __func__); - - memcpy(a.raw, "abcd", 4); - memcpy(b.raw, "abcd", 4); - - ASSERT_EQ(client_id_compare_func(&a, &b), 0); - ASSERT_EQ(client_id_hash_helper(&a, hash_key), client_id_hash_helper(&b, hash_key)); - a.size = 3; - ASSERT_NE(client_id_compare_func(&a, &b), 0); - a.size = 4; - ASSERT_EQ(client_id_compare_func(&a, &b), 0); - ASSERT_EQ(client_id_hash_helper(&a, hash_key), client_id_hash_helper(&b, hash_key)); - - b.size = 3; - ASSERT_NE(client_id_compare_func(&a, &b), 0); - b.size = 4; - ASSERT_EQ(client_id_compare_func(&a, &b), 0); - ASSERT_EQ(client_id_hash_helper(&a, hash_key), client_id_hash_helper(&b, hash_key)); - - memcpy(b.raw, "abce", 4); - ASSERT_NE(client_id_compare_func(&a, &b), 0); -} - static void test_static_lease(void) { _cleanup_(sd_dhcp_server_unrefp) sd_dhcp_server *server = NULL; @@ -452,7 +407,6 @@ int main(int argc, char *argv[]) { test_setup_logging(LOG_DEBUG); - test_client_id_hash(); test_static_lease(); test_domain_name(); -- 2.47.3