From: Daan De Meyer Date: Thu, 20 Nov 2025 18:15:14 +0000 (+0100) Subject: test-journald-config: Modernize test X-Git-Tag: v259-rc2~45^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d11ce973863b1c907e60cd3de39cbcc7e24b8b32;p=thirdparty%2Fsystemd.git test-journald-config: Modernize test --- diff --git a/src/journal/test-journald-config.c b/src/journal/test-journald-config.c index 735e4d664a8..15815f29675 100644 --- a/src/journal/test-journald-config.c +++ b/src/journal/test-journald-config.c @@ -5,90 +5,76 @@ #include #include "alloc-util.h" -#include "journald-manager.h" +#include "journald-config.h" #include "log.h" #include "socket-util.h" #include "sparse-endian.h" #include "tests.h" -#define _COMPRESS_PARSE_CHECK(str, enab, thresh, varname) \ - do { \ - JournalCompressOptions varname = {-222, 111}; \ - config_parse_compress("", "", 0, "", 0, "", 0, str, \ - &varname, NULL); \ - assert_se((enab) == varname.enabled); \ - if (varname.enabled) \ - assert_se((thresh) == varname.threshold_bytes); \ - } while (0) +static void compress_parse_check(const char *str, int expected_enabled, uint64_t expected_threshold) { + JournalCompressOptions conf = { .enabled = -222, .threshold_bytes = 111 }; -#define COMPRESS_PARSE_CHECK(str, enabled, threshold) \ - _COMPRESS_PARSE_CHECK(str, enabled, threshold, conf##__COUNTER__) + ASSERT_OK(config_parse_compress("", "", 0, "", 0, "", 0, str, &conf, NULL)); + ASSERT_EQ(expected_enabled, conf.enabled); + if (conf.enabled) + ASSERT_EQ(expected_threshold, conf.threshold_bytes); +} TEST(config_compress) { - COMPRESS_PARSE_CHECK("yes", true, UINT64_MAX); - COMPRESS_PARSE_CHECK("no", false, UINT64_MAX); - COMPRESS_PARSE_CHECK("y", true, UINT64_MAX); - COMPRESS_PARSE_CHECK("n", false, UINT64_MAX); - COMPRESS_PARSE_CHECK("true", true, UINT64_MAX); - COMPRESS_PARSE_CHECK("false", false, UINT64_MAX); - COMPRESS_PARSE_CHECK("t", true, UINT64_MAX); - COMPRESS_PARSE_CHECK("f", false, UINT64_MAX); - COMPRESS_PARSE_CHECK("on", true, UINT64_MAX); - COMPRESS_PARSE_CHECK("off", false, UINT64_MAX); + compress_parse_check("yes", true, UINT64_MAX); + compress_parse_check("no", false, UINT64_MAX); + compress_parse_check("y", true, UINT64_MAX); + compress_parse_check("n", false, UINT64_MAX); + compress_parse_check("true", true, UINT64_MAX); + compress_parse_check("false", false, UINT64_MAX); + compress_parse_check("t", true, UINT64_MAX); + compress_parse_check("f", false, UINT64_MAX); + compress_parse_check("on", true, UINT64_MAX); + compress_parse_check("off", false, UINT64_MAX); /* Weird size/bool overlapping case. We preserve backward compatibility instead of assuming these are byte * counts. */ - COMPRESS_PARSE_CHECK("1", true, UINT64_MAX); - COMPRESS_PARSE_CHECK("0", false, UINT64_MAX); + compress_parse_check("1", true, UINT64_MAX); + compress_parse_check("0", false, UINT64_MAX); /* IEC sizing */ - COMPRESS_PARSE_CHECK("1B", true, 1); - COMPRESS_PARSE_CHECK("1K", true, 1024); - COMPRESS_PARSE_CHECK("1M", true, 1024 * 1024); - COMPRESS_PARSE_CHECK("1G", true, 1024 * 1024 * 1024); + compress_parse_check("1B", true, 1); + compress_parse_check("1K", true, 1024); + compress_parse_check("1M", true, 1024 * 1024); + compress_parse_check("1G", true, 1024 * 1024 * 1024); /* Invalid Case */ - COMPRESS_PARSE_CHECK("-1", -222, 111); - COMPRESS_PARSE_CHECK("blah blah", -222, 111); - COMPRESS_PARSE_CHECK("", -1, UINT64_MAX); + compress_parse_check("-1", -222, 111); + compress_parse_check("blah blah", -222, 111); + compress_parse_check("", -1, UINT64_MAX); } -#define _FORWARD_TO_SOCKET_PARSE_CHECK_FAILS(str, addr, varname) \ - do { \ - SocketAddress varname = {}; \ - config_parse_forward_to_socket("", "", 0, "", 0, "", 0, str, \ - &varname, NULL); \ - assert_se(socket_address_verify(&varname, true) < 0); \ - } while (0) - -#define FORWARD_TO_SOCKET_PARSE_CHECK_FAILS(str) \ - _FORWARD_TO_SOCKET_PARSE_CHECK_FAILS(str, addr, conf##__COUNTER__) - -#define _FORWARD_TO_SOCKET_PARSE_CHECK(str, addr, varname) \ - do { \ - SocketAddress varname = {}; \ - config_parse_forward_to_socket("", "", 0, "", 0, "", 0, str, \ - &varname, NULL); \ - buf = mfree(buf); \ - buf2 = mfree(buf2); \ - socket_address_print(&varname, &buf); \ - socket_address_print(&addr, &buf2); \ - log_info("\"%s\" parsed as \"%s\", should be \"%s\"", str, buf, buf2); \ - log_info("socket_address_verify(&addr, false) = %d", socket_address_verify(&addr, false)); \ - log_info("socket_address_verify(&varname, false) = %d", socket_address_verify(&varname, false)); \ - log_info("socket_address_family(&addr) = %d", socket_address_family(&addr)); \ - log_info("socket_address_family(&varname) = %d", socket_address_family(&varname)); \ - log_info("addr.size = %u", addr.size); \ - log_info("varname.size = %u", varname.size); \ - assert_se(socket_address_equal(&varname, &addr)); \ - } while (0) - -#define FORWARD_TO_SOCKET_PARSE_CHECK(str, addr) \ - _FORWARD_TO_SOCKET_PARSE_CHECK(str, addr, conf##__COUNTER__) +static void forward_to_socket_parse_check_fails(const char *str) { + SocketAddress conf = {}; + + ASSERT_OK(config_parse_forward_to_socket("", "", 0, "", 0, "", 0, str, &conf, NULL)); + ASSERT_FAIL(socket_address_verify(&conf, true)); +} + +static void forward_to_socket_parse_check(const char *str, const SocketAddress *expected_addr) { + _cleanup_free_ char *buf = NULL, *buf2 = NULL; + SocketAddress conf = {}; + + ASSERT_OK(config_parse_forward_to_socket("", "", 0, "", 0, "", 0, str, &conf, NULL)); + ASSERT_OK(socket_address_print(&conf, &buf)); + ASSERT_OK(socket_address_print(expected_addr, &buf2)); + log_info("\"%s\" parsed as \"%s\", should be \"%s\"", str, buf, buf2); + log_info("socket_address_verify(&expected_addr, false) = %d", socket_address_verify(expected_addr, false)); + log_info("socket_address_verify(&conf, false) = %d", socket_address_verify(&conf, false)); + log_info("socket_address_family(&expected_addr) = %d", socket_address_family(expected_addr)); + log_info("socket_address_family(&conf) = %d", socket_address_family(&conf)); + log_info("expected_addr.size = %u", expected_addr->size); + log_info("conf.size = %u", conf.size); + ASSERT_TRUE(socket_address_equal(&conf, expected_addr)); +} TEST(config_forward_to_socket) { SocketAddress addr; - _cleanup_free_ char *buf = NULL, *buf2 = NULL; /* Valid AF_UNIX */ addr = (SocketAddress) { @@ -98,11 +84,11 @@ TEST(config_forward_to_socket) { }, .size = offsetof(struct sockaddr_un, sun_path) + strlen("/run/host/journal/socket") + 1, }; - FORWARD_TO_SOCKET_PARSE_CHECK("/run/host/journal/socket", addr); + forward_to_socket_parse_check("/run/host/journal/socket", &addr); addr.size -= 1; memcpy(addr.sockaddr.un.sun_path, "\0run/host/journal/socket", sizeof("\0run/host/journal/socket")); - FORWARD_TO_SOCKET_PARSE_CHECK("@run/host/journal/socket", addr); + forward_to_socket_parse_check("@run/host/journal/socket", &addr); /* Valid AF_INET */ addr = (SocketAddress) { @@ -113,7 +99,7 @@ TEST(config_forward_to_socket) { }, .size = sizeof(struct sockaddr_in), }; - FORWARD_TO_SOCKET_PARSE_CHECK("192.168.0.1:1234", addr); + forward_to_socket_parse_check("192.168.0.1:1234", &addr); /* Valid AF_INET6 */ addr = (SocketAddress) { @@ -133,7 +119,7 @@ TEST(config_forward_to_socket) { }, .size = sizeof(struct sockaddr_in6), }; - FORWARD_TO_SOCKET_PARSE_CHECK("[2001:db8:4006:812::200e]:8080", addr); + forward_to_socket_parse_check("[2001:db8:4006:812::200e]:8080", &addr); /* Valid AF_VSOCK */ addr = (SocketAddress) { @@ -144,34 +130,34 @@ TEST(config_forward_to_socket) { }, .size = sizeof(struct sockaddr_vm), }; - FORWARD_TO_SOCKET_PARSE_CHECK("vsock:123456:654321", addr); + forward_to_socket_parse_check("vsock:123456:654321", &addr); /* Invalid IPv4 */ - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("256.123.45.12:1235"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("252.123.45.12:123500"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("252.123.45.12:0"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("252.123.45.12:-1"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("-1.123.45.12:22"); + forward_to_socket_parse_check_fails("256.123.45.12:1235"); + forward_to_socket_parse_check_fails("252.123.45.12:123500"); + forward_to_socket_parse_check_fails("252.123.45.12:0"); + forward_to_socket_parse_check_fails("252.123.45.12:-1"); + forward_to_socket_parse_check_fails("-1.123.45.12:22"); /* Invalid IPv6 */ - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("[2001:db8:4006:812::200e]:80800"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("[1ffff:db8:4006:812::200e]:8080"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("[-1:db8:4006:812::200e]:8080"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("[2001:db8:4006:812::200e]:-1"); + forward_to_socket_parse_check_fails("[2001:db8:4006:812::200e]:80800"); + forward_to_socket_parse_check_fails("[1ffff:db8:4006:812::200e]:8080"); + forward_to_socket_parse_check_fails("[-1:db8:4006:812::200e]:8080"); + forward_to_socket_parse_check_fails("[2001:db8:4006:812::200e]:-1"); /* Invalid UNIX */ - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("a/b/c"); + forward_to_socket_parse_check_fails("a/b/c"); /* Invalid VSock */ - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("vsock:4294967296:1234"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("vsock:1234:4294967296"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("vsock:abcd:1234"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("vsock:1234:abcd"); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("vsock:1234"); + forward_to_socket_parse_check_fails("vsock:4294967296:1234"); + forward_to_socket_parse_check_fails("vsock:1234:4294967296"); + forward_to_socket_parse_check_fails("vsock:abcd:1234"); + forward_to_socket_parse_check_fails("vsock:1234:abcd"); + forward_to_socket_parse_check_fails("vsock:1234"); /* Invalid Case */ - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS(""); - FORWARD_TO_SOCKET_PARSE_CHECK_FAILS("ahh yes sockets, mmh"); + forward_to_socket_parse_check_fails(""); + forward_to_socket_parse_check_fails("ahh yes sockets, mmh"); } DEFINE_TEST_MAIN(LOG_INFO);