]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
resolved: tests for link_new(), link_process_rtnl()
authorJames Coglan <james@neighbourhood.ie>
Tue, 25 Jun 2024 11:15:38 +0000 (12:15 +0100)
committerJames Coglan <james@neighbourhood.ie>
Mon, 22 Jul 2024 12:17:08 +0000 (13:17 +0100)
src/resolve/meson.build
src/resolve/test-resolved-link.c [new file with mode: 0644]

index d336b2c07bf4e8db844ca850bc4a130aa3c093f1..cdb683d348b93593339f1785a3e94871a46e4773 100644 (file)
@@ -182,6 +182,17 @@ executables += [
                 'sources' : files('test-dnssec-complex.c'),
                 'type' : 'manual',
         },
+        test_template + {
+                'sources' : [
+                        files('test-resolved-link.c'),
+                        basic_dns_sources,
+                        systemd_resolved_sources,
+                ],
+                'dependencies' : [
+                        systemd_resolved_dependencies,
+                ],
+                'include_directories' : resolve_includes,
+        },
         test_template + {
                 'sources' : [
                         files('test-resolved-stream.c'),
diff --git a/src/resolve/test-resolved-link.c b/src/resolve/test-resolved-link.c
new file mode 100644 (file)
index 0000000..dc74841
--- /dev/null
@@ -0,0 +1,45 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include "netlink-internal.h"
+#include "resolved-link.h"
+#include "resolved-manager.h"
+
+#include "log.h"
+#include "tests.h"
+
+/* ================================================================
+ * link_new()
+ * ================================================================ */
+
+TEST(link_new) {
+        Manager manager = {};
+        _cleanup_(link_freep) Link *link = NULL;
+
+        ASSERT_OK(link_new(&manager, &link, 1));
+        ASSERT_NOT_NULL(link);
+}
+
+/* ================================================================
+ * link_process_rtnl()
+ * ================================================================ */
+
+TEST(link_process_rtnl) {
+        Manager manager = {};
+        _cleanup_(link_freep) Link *link = NULL;
+        _cleanup_(sd_netlink_unrefp) sd_netlink *nl = NULL;
+        _cleanup_(sd_netlink_message_unrefp) sd_netlink_message *msg = NULL;
+
+        ASSERT_OK(link_new(&manager, &link, 1));
+        ASSERT_NOT_NULL(link);
+
+        ASSERT_OK(netlink_open_family(&nl, AF_INET));
+        nl->protocol = NETLINK_ROUTE;
+
+        ASSERT_OK(sd_rtnl_message_new_link(nl, &msg, RTM_NEWLINK, 1));
+        ASSERT_NOT_NULL(msg);
+        message_seal(msg);
+
+        ASSERT_OK(link_process_rtnl(link, msg));
+}
+
+DEFINE_TEST_MAIN(LOG_DEBUG)