about summary refs log tree commit diff
path: root/src/initrd/tests
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2020-01-13 16:10:30 +0100
committerSebastien Bacher <seb128@ubuntu.com>2020-01-13 16:31:40 +0100
commit5a09f7759860f4f2a9bb01471ca8099cd705bc10 (patch)
tree3a9cffc9622d53c9196771a1c7924bceb754f118 /src/initrd/tests
parent25691220fd27093630cf244e219b2f4f1f4e749e (diff)
parentca847639aab94434daed120c874e1100c3d75dcf (diff)
Merge remote-tracking branch 'salsa/debian/master'
Diffstat (limited to 'src/initrd/tests')
-rw-r--r--src/initrd/tests/meson.build12
-rw-r--r--src/initrd/tests/sysfs-dt-tftp/firmware/devicetree/base/chosen/bootpathbin0 -> 108 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-requestbin0 -> 273 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-responsebin0 -> 300 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootpathbin0 -> 37 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/broadcast-ip1
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-ip2
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-namebin0 -> 9 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/domain-namebin0 -> 15 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/gateway-ip2
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/namebin0 -> 7 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/netmask-ipbin0 -> 4 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/root-pathbin0 -> 1 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/server-ip2
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/tftp-filebin0 -> 11 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/vendor-optionsbin0 -> 1 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/device_typebin0 -> 8 bytes
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/local-mac-address1
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/mac-address1
-rw-r--r--src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/namebin0 -> 9 bytes
-rw-r--r--src/initrd/tests/test-cmdline-reader.c184
-rw-r--r--src/initrd/tests/test-dt-reader.c132
-rw-r--r--src/initrd/tests/test-ibft-reader.c21
23 files changed, 297 insertions, 61 deletions
diff --git a/src/initrd/tests/meson.build b/src/initrd/tests/meson.build
index 20cf6af2..5dd2873c 100644
--- a/src/initrd/tests/meson.build
+++ b/src/initrd/tests/meson.build
@@ -1,20 +1,20 @@
+c_flags = test_c_flags + ['-DTEST_INITRD_DIR="@0@"'.format(meson.current_source_dir())]
+
 test_units = [
+  'test-dt-reader',
   'test-ibft-reader',
   'test-cmdline-reader',
 ]
 
-cflags = [
-  '-DTEST_INITRD_DIR="@0@"'.format(meson.current_source_dir()),
-]
-
 foreach test_unit : test_units
   exe = executable(
     test_unit,
     test_unit + '.c',
-    dependencies: test_nm_dep,
-    c_args: cflags,
+    dependencies: libnetwork_manager_test_dep,
+    c_args: c_flags,
     link_with: libnmi_core,
   )
+
   test(
     'initrd/' + test_unit,
     test_script,
diff --git a/src/initrd/tests/sysfs-dt-tftp/firmware/devicetree/base/chosen/bootpath b/src/initrd/tests/sysfs-dt-tftp/firmware/devicetree/base/chosen/bootpath
new file mode 100644
index 00000000..6f069ae0
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt-tftp/firmware/devicetree/base/chosen/bootpath
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-request b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-request
new file mode 100644
index 00000000..034d423e
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-request
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-response b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-response
new file mode 100644
index 00000000..25982d6f
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootp-response
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootpath b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootpath
new file mode 100644
index 00000000..db880702
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/bootpath
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/broadcast-ip b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/broadcast-ip
new file mode 100644
index 00000000..7bde8641
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/broadcast-ip
@@ -0,0 +1 @@
+ÿÿÿÿ
\ No newline at end of file
diff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-ip b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-ip
new file mode 100644
index 00000000..f108ba9b
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-ip
@@ -0,0 +1,2 @@
+
++
\ No newline at end of file
diff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-name b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-name
new file mode 100644
index 00000000..fe0f76b8
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/client-name
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/domain-name b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/domain-name
new file mode 100644
index 00000000..b34f9f96
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/domain-name
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/gateway-ip b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/gateway-ip
new file mode 100644
index 00000000..f0361835
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/gateway-ip
@@ -0,0 +1,2 @@
+
++þ
\ No newline at end of file
diff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/name b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/name
new file mode 100644
index 00000000..f3e58052
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/name
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/netmask-ip b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/netmask-ip
new file mode 100644
index 00000000..d441cd83
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/netmask-ip
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/root-path b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/root-path
new file mode 100644
index 00000000..f76dd238
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/root-path
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/server-ip b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/server-ip
new file mode 100644
index 00000000..a2a4b2e8
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/server-ip
@@ -0,0 +1,2 @@
+
+&
\ No newline at end of file
diff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/tftp-file b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/tftp-file
new file mode 100644
index 00000000..c0e0e330
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/tftp-file
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/vendor-options b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/vendor-options
new file mode 100644
index 00000000..f76dd238
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/chosen/vendor-options
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/device_type b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/device_type
new file mode 100644
index 00000000..df3c9d9f
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/device_type
Binary files differdiff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/local-mac-address b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/local-mac-address
new file mode 100644
index 00000000..c983e752
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/local-mac-address
@@ -0,0 +1 @@
+¬>åØ
\ No newline at end of file
diff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/mac-address b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/mac-address
new file mode 100644
index 00000000..c983e752
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/mac-address
@@ -0,0 +1 @@
+¬>åØ
\ No newline at end of file
diff --git a/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/name b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/name
new file mode 100644
index 00000000..88eaddfe
--- /dev/null
+++ b/src/initrd/tests/sysfs-dt/firmware/devicetree/base/ethernet/name
Binary files differdiff --git a/src/initrd/tests/test-cmdline-reader.c b/src/initrd/tests/test-cmdline-reader.c
index 5ac82f50..1d4bb9a6 100644
--- a/src/initrd/tests/test-cmdline-reader.c
+++ b/src/initrd/tests/test-cmdline-reader.c
@@ -1,21 +1,6 @@
-/* NetworkManager initrd configuration generator
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- *
- * Copyright 2018 Red Hat, Inc.
+// SPDX-License-Identifier: LGPL-2.1+
+/*
+ * Copyright (C) 2018 Red Hat, Inc.
  */
 
 #include "nm-default.h"
@@ -283,8 +268,7 @@ test_multiple (void)
 {
 	gs_unref_hashtable GHashTable *connections = NULL;
 	const char *const*ARGV = NM_MAKE_STRV ("ip=192.0.2.2:::::eth0",
-	                                       "ip=[2001:db8::2]:::::eth0",
-	                                       "BOOTIF=00:53:AB:cd:02:03");
+	                                       "ip=[2001:db8::2]:::::eth0");
 	NMConnection *connection;
 	NMSettingWired *s_wired;
 	NMSettingIPConfig *s_ip4;
@@ -302,7 +286,6 @@ test_multiple (void)
 
 	s_wired = nm_connection_get_setting_wired (connection);
 	g_assert (s_wired);
-	g_assert_cmpstr (nm_setting_wired_get_mac_address (s_wired), ==, "00:53:AB:CD:02:03");
 
 	s_ip4 = nm_connection_get_setting_ip4_config (connection);
 	g_assert (s_ip4);
@@ -324,12 +307,45 @@ test_multiple (void)
 }
 
 static void
+test_bootdev (void)
+{
+	gs_unref_hashtable GHashTable *connections = NULL;
+	const char *const*ARGV = NM_MAKE_STRV ("vlan=vlan2:ens5", "bootdev=ens3");
+	NMConnection *connection;
+	NMSettingConnection *s_con;
+
+	connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV);
+	g_assert (connections);
+	g_assert_cmpint (g_hash_table_size (connections), ==, 2);
+
+	connection = g_hash_table_lookup (connections, "ens3");
+	g_assert (connection);
+	nmtst_assert_connection_verifies_without_normalization (connection);
+
+	s_con = nm_connection_get_setting_connection (connection);
+	g_assert (s_con);
+	g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRED_SETTING_NAME);
+	g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "ens3");
+	g_assert_cmpstr (nm_setting_connection_get_interface_name (s_con), ==, "ens3");
+
+	connection = g_hash_table_lookup (connections, "vlan2");
+	g_assert (connection);
+	nmtst_assert_connection_verifies_without_normalization (connection);
+
+	s_con = nm_connection_get_setting_connection (connection);
+	g_assert (s_con);
+	g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_VLAN_SETTING_NAME);
+	g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "vlan2");
+	g_assert_cmpstr (nm_setting_connection_get_interface_name (s_con), ==, "vlan2");
+}
+
+static void
 test_some_more (void)
 {
 	gs_unref_hashtable GHashTable *connections = NULL;
 	const char *const*ARGV = NM_MAKE_STRV ("bootdev=eth1", "hail", "nameserver=[2001:DB8:3::53]",
 	                                       "satan", "nameserver=192.0.2.53", "worship",
-	                                       "BOOTIF=01-00-53-AB-cd-02-03", "doom", "rd.peerdns=0",
+	                                       "doom", "rd.peerdns=0",
 	                                       "rd.route=[2001:DB8:3::/48]:[2001:DB8:2::1]:ens10");
 	NMConnection *connection;
 	NMSettingConnection *s_con;
@@ -355,7 +371,6 @@ test_some_more (void)
 
 	s_wired = nm_connection_get_setting_wired (connection);
 	g_assert (s_wired);
-	g_assert_cmpstr (nm_setting_wired_get_mac_address (s_wired), ==, "00:53:AB:CD:02:03");
 
 	s_ip4 = nm_connection_get_setting_ip4_config (connection);
 	g_assert (s_ip4);
@@ -406,17 +421,6 @@ test_some_more (void)
 }
 
 static void
-test_no_bootif (void)
-{
-	gs_unref_hashtable GHashTable *connections = NULL;
-	const char *const*ARGV = NM_MAKE_STRV ("BOOTIF=01-00-53-AB-cd-02-03", "rd.bootif=0");
-
-	connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV);
-	g_assert (connections);
-	g_assert_cmpint (g_hash_table_size (connections), ==, 0);
-}
-
-static void
 test_bond (void)
 {
 	gs_unref_hashtable GHashTable *connections = NULL;
@@ -651,12 +655,12 @@ test_bridge_default (void)
 	g_assert (connections);
 	g_assert_cmpint (g_hash_table_size (connections), ==, 2);
 
-	connection = g_hash_table_lookup (connections, "bridge0");
+	connection = g_hash_table_lookup (connections, "br0");
 
 	g_assert (connection);
 	nmtst_assert_connection_verifies_without_normalization (connection);
 	g_assert_cmpstr (nm_connection_get_connection_type (connection), ==, NM_SETTING_BRIDGE_SETTING_NAME);
-	g_assert_cmpstr (nm_connection_get_id (connection), ==, "bridge0");
+	g_assert_cmpstr (nm_connection_get_id (connection), ==, "br0");
 	master_uuid = nm_connection_get_uuid (connection);
 	g_assert (master_uuid);
 
@@ -917,6 +921,109 @@ test_rd_znet_legacy (void)
 	nmtst_assert_connection_verifies_without_normalization (connection);
 }
 
+static void
+test_bootif (void)
+{
+	gs_unref_hashtable GHashTable *connections = NULL;
+	const char *const*ARGV = NM_MAKE_STRV ("BOOTIF=00:53:AB:cd:02:03",
+	                                       "ip=dhcp");
+	NMConnection *connection;
+	NMSettingWired *s_wired;
+	NMSettingIPConfig *s_ip4;
+	NMSettingIPConfig *s_ip6;
+
+	connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV);
+	g_assert (connections);
+	g_assert_cmpint (g_hash_table_size (connections), ==, 1);
+
+	connection = g_hash_table_lookup (connections, "default_connection");
+	g_assert (connection);
+	nmtst_assert_connection_verifies_without_normalization (connection);
+	g_assert_cmpstr (nm_connection_get_id (connection), ==, "Wired Connection");
+
+	s_wired = nm_connection_get_setting_wired (connection);
+	g_assert_cmpstr (nm_setting_wired_get_mac_address (s_wired), ==, "00:53:AB:CD:02:03");
+	g_assert (s_wired);
+
+	s_ip4 = nm_connection_get_setting_ip4_config (connection);
+	g_assert (s_ip4);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO);
+	g_assert (!nm_setting_ip_config_get_ignore_auto_dns (s_ip4));
+	g_assert (!nm_setting_ip_config_get_may_fail (s_ip4));
+
+	s_ip6 = nm_connection_get_setting_ip6_config (connection);
+	g_assert (s_ip6);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_DISABLED);
+	g_assert (!nm_setting_ip_config_get_ignore_auto_dns (s_ip6));
+}
+
+static void
+test_bootif_hwtype (void)
+{
+	gs_unref_hashtable GHashTable *connections = NULL;
+	const char *const*ARGV = NM_MAKE_STRV ("ip=eth0:dhcp",
+	                                       "BOOTIF=01-00-53-AB-cd-02-03");
+	NMConnection *connection;
+	NMSettingWired *s_wired;
+	NMSettingIPConfig *s_ip4;
+	NMSettingIPConfig *s_ip6;
+
+	connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV);
+	g_assert (connections);
+	g_assert_cmpint (g_hash_table_size (connections), ==, 2);
+
+	connection = g_hash_table_lookup (connections, "eth0");
+	g_assert (connection);
+	nmtst_assert_connection_verifies_without_normalization (connection);
+	g_assert_cmpstr (nm_connection_get_id (connection), ==, "eth0");
+
+	s_wired = nm_connection_get_setting_wired (connection);
+	g_assert (!nm_setting_wired_get_mac_address (s_wired));
+	g_assert (s_wired);
+
+	s_ip4 = nm_connection_get_setting_ip4_config (connection);
+	g_assert (s_ip4);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO);
+	g_assert (!nm_setting_ip_config_get_ignore_auto_dns (s_ip4));
+	g_assert (!nm_setting_ip_config_get_may_fail (s_ip4));
+
+	s_ip6 = nm_connection_get_setting_ip6_config (connection);
+	g_assert (s_ip6);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_DISABLED);
+	g_assert (!nm_setting_ip_config_get_ignore_auto_dns (s_ip6));
+
+	connection = g_hash_table_lookup (connections, "bootif_connection");
+	g_assert (connection);
+	nmtst_assert_connection_verifies_without_normalization (connection);
+	g_assert_cmpstr (nm_connection_get_id (connection), ==, "BOOTIF Connection");
+
+	s_wired = nm_connection_get_setting_wired (connection);
+	g_assert_cmpstr (nm_setting_wired_get_mac_address (s_wired), ==, "00:53:AB:CD:02:03");
+	g_assert (s_wired);
+
+	s_ip4 = nm_connection_get_setting_ip4_config (connection);
+	g_assert (s_ip4);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO);
+	g_assert (!nm_setting_ip_config_get_ignore_auto_dns (s_ip4));
+	g_assert (nm_setting_ip_config_get_may_fail (s_ip4));
+
+	s_ip6 = nm_connection_get_setting_ip6_config (connection);
+	g_assert (s_ip6);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
+	g_assert (!nm_setting_ip_config_get_ignore_auto_dns (s_ip6));
+	g_assert (nm_setting_ip_config_get_may_fail (s_ip6));
+}
+
+static void
+test_bootif_off (void)
+{
+	gs_unref_hashtable GHashTable *connections = NULL;
+	const char *const*ARGV = NM_MAKE_STRV ("BOOTIF=01-00-53-AB-cd-02-03", "rd.bootif=0");
+
+	connections = nmi_cmdline_reader_parse (TEST_INITRD_DIR "/sysfs", ARGV);
+	g_assert (connections);
+	g_assert_cmpint (g_hash_table_size (connections), ==, 0);
+}
 
 NMTST_DEFINE ();
 
@@ -932,7 +1039,7 @@ int main (int argc, char **argv)
 	g_test_add_func ("/initrd/cmdline/if_ip6_manual", test_if_ip6_manual);
 	g_test_add_func ("/initrd/cmdline/multiple", test_multiple);
 	g_test_add_func ("/initrd/cmdline/some_more", test_some_more);
-	g_test_add_func ("/initrd/cmdline/no_bootif", test_no_bootif);
+	g_test_add_func ("/initrd/cmdline/bootdev", test_bootdev);
 	g_test_add_func ("/initrd/cmdline/bond", test_bond);
 	g_test_add_func ("/initrd/cmdline/bond/default", test_bond_default);
 	g_test_add_func ("/initrd/cmdline/team", test_team);
@@ -942,6 +1049,9 @@ int main (int argc, char **argv)
 	g_test_add_func ("/initrd/cmdline/ignore_extra", test_ignore_extra);
 	g_test_add_func ("/initrd/cmdline/rd_znet", test_rd_znet);
 	g_test_add_func ("/initrd/cmdline/rd_znet/legacy", test_rd_znet_legacy);
+	g_test_add_func ("/initrd/cmdline/bootif", test_bootif);
+	g_test_add_func ("/initrd/cmdline/bootif/hwtype", test_bootif_hwtype);
+	g_test_add_func ("/initrd/cmdline/bootif/off", test_bootif_off);
 
 	return g_test_run ();
 }
diff --git a/src/initrd/tests/test-dt-reader.c b/src/initrd/tests/test-dt-reader.c
new file mode 100644
index 00000000..9a4dc735
--- /dev/null
+++ b/src/initrd/tests/test-dt-reader.c
@@ -0,0 +1,132 @@
+// SPDX-License-Identifier: LGPL-2.1+
+/*
+ * Copyright (C) 2014 - 2018 Red Hat, Inc.
+ */
+
+#include "nm-default.h"
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <unistd.h>
+#include <netinet/ether.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <sys/socket.h>
+
+#include "nm-core-internal.h"
+#include "NetworkManagerUtils.h"
+
+#include "../nm-initrd-generator.h"
+
+#include "nm-test-utils-core.h"
+
+static void
+test_read_dt_ofw (void)
+{
+	NMConnection *connection;
+	NMSettingConnection *s_con;
+	NMSettingWired *s_wired;
+	NMSettingIPConfig *s_ip4;
+	NMSettingIPConfig *s_ip6;
+	const char *mac_address;
+
+	connection = nmi_dt_reader_parse (TEST_INITRD_DIR "/sysfs-dt");
+	g_assert (connection);
+	nmtst_assert_connection_verifies (connection);
+
+	s_con = nm_connection_get_setting_connection (connection);
+	g_assert (s_con);
+	g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRED_SETTING_NAME);
+	g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "OpenFirmware Connection");
+	g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, 0);
+	g_assert (nm_setting_connection_get_autoconnect (s_con));
+
+	s_wired = nm_connection_get_setting_wired (connection);
+	g_assert (s_wired);
+	mac_address = nm_setting_wired_get_mac_address (s_wired);
+	g_assert (mac_address);
+	g_assert (nm_utils_hwaddr_matches (mac_address, -1, "ac:7f:3e:e5:d8:d8", -1));
+	g_assert (!nm_setting_wired_get_duplex (s_wired));
+	g_assert_cmpint (nm_setting_wired_get_speed (s_wired), ==, 0);
+	g_assert_cmpint (nm_setting_wired_get_mtu (s_wired), ==, 0);
+
+	s_ip4 = nm_connection_get_setting_ip4_config (connection);
+	g_assert (s_ip4);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_AUTO);
+	g_assert_cmpstr (nm_setting_ip_config_get_dhcp_hostname (s_ip4), ==, "demiurge");
+
+	s_ip6 = nm_connection_get_setting_ip6_config (connection);
+	g_assert (s_ip6);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_AUTO);
+
+	g_object_unref (connection);
+}
+
+static void
+test_read_dt_slof (void)
+{
+	NMConnection *connection;
+	NMSettingConnection *s_con;
+	NMSettingWired *s_wired;
+	NMSettingIPConfig *s_ip4;
+	NMSettingIPConfig *s_ip6;
+	NMIPAddress *ip4_addr;
+
+	connection = nmi_dt_reader_parse (TEST_INITRD_DIR "/sysfs-dt-tftp");
+	g_assert (connection);
+	nmtst_assert_connection_verifies (connection);
+
+	s_con = nm_connection_get_setting_connection (connection);
+	g_assert (s_con);
+	g_assert_cmpstr (nm_setting_connection_get_connection_type (s_con), ==, NM_SETTING_WIRED_SETTING_NAME);
+	g_assert_cmpstr (nm_setting_connection_get_id (s_con), ==, "OpenFirmware Connection");
+	g_assert_cmpint (nm_setting_connection_get_timestamp (s_con), ==, 0);
+	g_assert (nm_setting_connection_get_autoconnect (s_con));
+
+	s_wired = nm_connection_get_setting_wired (connection);
+	g_assert (s_wired);
+	g_assert (!nm_setting_wired_get_mac_address (s_wired));
+	g_assert_cmpstr (nm_setting_wired_get_duplex (s_wired), ==, "half");
+	g_assert_cmpint (nm_setting_wired_get_speed (s_wired), ==, 10);
+	g_assert_cmpint (nm_setting_wired_get_mtu (s_wired), ==, 0);
+
+	s_ip4 = nm_connection_get_setting_ip4_config (connection);
+	g_assert (s_ip4);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip4), ==, NM_SETTING_IP4_CONFIG_METHOD_MANUAL);
+
+	g_assert_cmpint (nm_setting_ip_config_get_num_addresses (s_ip4), ==, 1);
+	ip4_addr = nm_setting_ip_config_get_address (s_ip4, 0);
+	g_assert (ip4_addr);
+	g_assert_cmpstr (nm_ip_address_get_address (ip4_addr), ==, "192.168.32.2");
+	g_assert_cmpint (nm_ip_address_get_prefix (ip4_addr), ==, 16);
+
+	g_assert_cmpstr (nm_setting_ip_config_get_gateway (s_ip4), ==, "192.168.32.1");
+
+	s_ip6 = nm_connection_get_setting_ip6_config (connection);
+	g_assert (s_ip6);
+	g_assert_cmpstr (nm_setting_ip_config_get_method (s_ip6), ==, NM_SETTING_IP6_CONFIG_METHOD_DISABLED);
+
+	g_object_unref (connection);
+}
+
+static void
+test_read_dt_none (void)
+{
+	NMConnection *connection;
+
+	connection = nmi_dt_reader_parse (TEST_INITRD_DIR "/sysfs");
+	g_assert (!connection);
+}
+
+NMTST_DEFINE ();
+
+int main (int argc, char **argv)
+{
+	nmtst_init_assert_logging (&argc, &argv, "INFO", "DEFAULT");
+
+	g_test_add_func ("/initrd/dt/ofw", test_read_dt_ofw);
+	g_test_add_func ("/initrd/dt/slof", test_read_dt_slof);
+	g_test_add_func ("/initrd/dt/none", test_read_dt_none);
+
+	return g_test_run ();
+}
diff --git a/src/initrd/tests/test-ibft-reader.c b/src/initrd/tests/test-ibft-reader.c
index a49d0abf..932c1a48 100644
--- a/src/initrd/tests/test-ibft-reader.c
+++ b/src/initrd/tests/test-ibft-reader.c
@@ -1,21 +1,6 @@
-/* NetworkManager initrd configuration generator
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA.
- *
- * Copyright 2014 - 2018 Red Hat, Inc.
+// SPDX-License-Identifier: LGPL-2.1+
+/*
+ * Copyright (C) 2014 - 2018 Red Hat, Inc.
  */
 
 #include "nm-default.h"