From f734b2cc6686ff2891df5b300b8ed1ee86535153 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 31 May 2023 09:41:26 +0200 Subject: [PATCH] test-loopback: run test in network + user namespace This way it can actually do useful testing even when unprivileged. --- src/test/test-loopback.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/test/test-loopback.c b/src/test/test-loopback.c index 58d8c29dbb0..c18f07cfed5 100644 --- a/src/test/test-loopback.c +++ b/src/test/test-loopback.c @@ -1,20 +1,44 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include #include #include +#include "errno-util.h" #include "log.h" #include "loopback-setup.h" #include "tests.h" -int main(int argc, char* argv[]) { +TEST_RET(loopback_setup) { int r; - test_setup_logging(LOG_DEBUG); + if (unshare(CLONE_NEWUSER | CLONE_NEWNET) < 0) { + if (ERRNO_IS_PRIVILEGE(errno) || ERRNO_IS_NOT_SUPPORTED(errno)) { + log_notice("Skipping test, lacking privileges or namespaces not supported"); + return EXIT_TEST_SKIP; + } + return log_error_errno(errno, "Failed to create user+network namespace: %m"); + } r = loopback_setup(); if (r < 0) - log_error_errno(r, "loopback: %m"); + return log_error_errno(r, "loopback: %m"); - return r >= 0 ? EXIT_SUCCESS : EXIT_FAILURE; + log_info("> ipv6 main"); + system("ip -6 route show table main"); + log_info("> ipv6 local"); + system("ip -6 route show table local"); + log_info("> ipv4 main"); + system("ip -4 route show table main"); + log_info("> ipv4 local"); + system("ip -4 route show table local"); + + return EXIT_SUCCESS; +} + +static int intro(void) { + log_show_color(true); + return EXIT_SUCCESS; } + +DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro); -- 2.47.3