ifcfg-rh/tests: compare the written files to a expected result

We have unit tests for writing and re-reading ifcfg file. Those
tests compare whether a file can be successfully read and is
semantically identical.

However, there were no tests that a certain output is written in
a stable format. We aim not to change the output of what we write.
For that, add tests to not only check the semantic of the written
ifcfg file, but their bits and bytes.

Some future changes may well intentionally change the current
output. That will require to update the expected result files
and can be done via

  NMTST_IFCFG_RH_UPDATE_EXPECTED=yes src/settings/plugins/ifcfg-rh/tests/test-ifcfg-rh

Note that alias, route, and key files are not checked.

Related: https://bugzilla.redhat.com/show_bug.cgi?id=1445414
This commit is contained in:
Thomas Haller 2017-04-25 20:02:29 +02:00
parent e1e5d0d867
commit f04bf45e84
27 changed files with 605 additions and 32 deletions

View file

@ -2132,7 +2132,32 @@ EXTRA_DIST += \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-3 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-3.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4 \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4.expected
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-write-unknown-4.expected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-a.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-bridge-component-b.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-System_test-wired-802-1X-subj-matches.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bond_Main.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Bridge_Component.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Permissions.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Proxy_Basic.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Team_Port.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_VLAN_reorder_hdr.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_Band_A.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_Hidden.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_always.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_default.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_missing.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_WiFi_MAC_never.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wifi_LEAP.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wifi_WEP_104_ASCII.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Auto-Negotiate.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Test_Write_Wired_Wake-on-LAN.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-dcb-test.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-random_wifi_connection_2.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-team-slave-enp31s0f1-142.cexpected \
src/settings/plugins/ifcfg-rh/tests/network-scripts/ifcfg-test-static-routes-legacy.cexpected
# make target dependencies can't have colons in their names, which ends up
# meaning that we can't add the alias files to EXTRA_DIST. They are instead

View file

@ -0,0 +1,8 @@
HWADDR=00:22:15:59:62:97
TYPE=Ethernet
BRIDGING_OPTS="priority=28 hairpin_mode=1"
NAME="System test-bridge-component"
UUID=${UUID}
DEVICE=eth0
ONBOOT=no
BRIDGE=br0

View file

@ -0,0 +1,17 @@
HWADDR=00:22:15:59:62:97
TYPE=Ethernet
BRIDGING_OPTS="priority=28 hairpin_mode=1"
NAME="System test-bridge-component"
UUID=${UUID}
DEVICE=eth0
ONBOOT=no
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy

View file

@ -0,0 +1,22 @@
HWADDR=00:11:22:33:44:EE
TYPE=Ethernet
KEY_MGMT=IEEE8021X
IEEE_8021X_EAP_METHODS=PEAP
IEEE_8021X_IDENTITY="Jara Cimrman"
IEEE_8021X_PASSWORD_FLAGS="user ask"
IEEE_8021X_PEAP_VERSION=1
IEEE_8021X_INNER_AUTH_METHODS=GTC
IEEE_8021X_SUBJECT_MATCH=server1.yourdomain.tld
IEEE_8021X_PHASE2_SUBJECT_MATCH=server2.yourdomain.tld
IEEE_8021X_ALTSUBJECT_MATCHES="a.yourdomain.tld b.yourdomain.tld c.yourdomain.tld"
IEEE_8021X_PHASE2_ALTSUBJECT_MATCHES="x.yourdomain.tld y.yourdomain.tld"
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="System test-wired-802-1X-subj-matches"
UUID=${UUID}
DEVICE=eth0
ONBOOT=yes

View file

@ -0,0 +1,16 @@
DEVICE=bond0
BONDING_OPTS=mode=balance-rr
TYPE=Bond
BONDING_MASTER=yes
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=1.1.1.3
PREFIX=24
GATEWAY=1.1.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="Test Write Bond Main"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,8 @@
HWADDR=31:33:33:37:BE:CD
MTU=1492
TYPE=Ethernet
BRIDGING_OPTS="priority=50 path_cost=33"
NAME="Test Write Bridge Component"
UUID=${UUID}
ONBOOT=yes
BRIDGE=br0

View file

@ -0,0 +1,11 @@
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="Test Write Permissions"
UUID=${UUID}
ONBOOT=yes
USERS="blahblah foobar asdfasdf"

View file

@ -0,0 +1,15 @@
TYPE=Ethernet
PROXY_METHOD=auto
PAC_URL=https://wpad.neverland.org/wpad.dat
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write Proxy Basic"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,6 @@
TEAM_PORT_CONFIG="{ \"p4p1\": { \"prio\": -10, \"sticky\": true } }"
NAME="Test Write Team Port"
UUID=${UUID}
ONBOOT=yes
TEAM_MASTER=team0
DEVICETYPE=TeamPort

View file

@ -0,0 +1,20 @@
VLAN=yes
TYPE=Vlan
PHYSDEV=eth0
VLAN_ID=444
REORDER_HDR=yes
GVRP=no
MVRP=no
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write VLAN reorder_hdr"
UUID=${UUID}
ONBOOT=no

View file

@ -0,0 +1,18 @@
ESSID="Test SSID"
MODE=Managed
BAND=a
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write WiFi Band A"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,18 @@
ESSID="Test SSID"
MODE=Managed
SSID_HIDDEN=yes
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write WiFi Hidden"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,18 @@
MACADDR=random
ESSID="Test SSID"
MODE=Managed
MAC_ADDRESS_RANDOMIZATION=always
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write WiFi MAC always"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,17 @@
ESSID="Test SSID"
MODE=Managed
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write WiFi MAC default"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,18 @@
MACADDR=permanent
ESSID="Test SSID"
MODE=Managed
MAC_ADDRESS_RANDOMIZATION=never
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write WiFi MAC missing"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,18 @@
MACADDR=permanent
ESSID="Test SSID"
MODE=Managed
MAC_ADDRESS_RANDOMIZATION=never
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write WiFi MAC never"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,16 @@
ESSID=blahblah
MODE=Managed
KEY_MGMT=IEEE8021X
SECURITYMODE=leap
IEEE_8021X_IDENTITY="Bill Smith"
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="Test Write Wifi LEAP"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,15 @@
ESSID=blahblah104
MODE=Managed
SECURITYMODE=open
DEFAULTKEY=1
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="Test Write Wifi WEP 104 ASCII"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,15 @@
ETHTOOL_OPTS="autoneg off speed 10 duplex half"
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write Wired Auto-Negotiate"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,15 @@
ETHTOOL_OPTS="wol umgs sopass 00:00:00:11:22:33"
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME="Test Write Wired Wake-on-LAN"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,22 @@
VLAN=yes
TYPE=Vlan
DEVICE=vlan43
PHYSDEV=eth9
VLAN_ID=43
REORDER_HDR=yes
GVRP=yes
VLAN_FLAGS=LOOSE_BINDING
MVRP=no
VLAN_INGRESS_PRIORITY_MAP=0:1,2:5
VLAN_EGRESS_PRIORITY_MAP=3:1,12:3,14:7
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.43.149
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="Vlan test-vlan-interface"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,41 @@
TYPE=Ethernet
DCB=yes
DCB_APP_FCOE_ENABLE=yes
DCB_APP_FCOE_ADVERTISE=yes
DCB_APP_FCOE_WILLING=yes
DCB_APP_FCOE_PRIORITY=5
DCB_APP_FCOE_MODE=fabric
DCB_APP_ISCSI_ENABLE=yes
DCB_APP_ISCSI_ADVERTISE=yes
DCB_APP_ISCSI_WILLING=yes
DCB_APP_ISCSI_PRIORITY=1
DCB_APP_FIP_ENABLE=yes
DCB_APP_FIP_ADVERTISE=yes
DCB_APP_FIP_WILLING=yes
DCB_APP_FIP_PRIORITY=3
DCB_PFC_ENABLE=yes
DCB_PFC_ADVERTISE=yes
DCB_PFC_WILLING=yes
DCB_PFC_UP=11010110
DCB_PG_ENABLE=yes
DCB_PG_ADVERTISE=yes
DCB_PG_WILLING=yes
DCB_PG_ID=4f6f173f
DCB_PG_PCT=10,20,15,10,2,3,35,5
DCB_PG_UPPCT=10,20,30,40,50,10,0,25
DCB_PG_STRICT=10110001
DCB_PG_UP2TC=34721056
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=dcb-test
UUID=${UUID}
DEVICE=eth0
ONBOOT=yes

View file

@ -0,0 +1,13 @@
ESSID=blahblah
MODE=Managed
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="random wifi connection"
UUID=${UUID}
ONBOOT=yes

View file

@ -0,0 +1,15 @@
ESSID=SomeSSID
MODE=Managed
MAC_ADDRESS_RANDOMIZATION=default
TYPE=Wireless
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME="random wifi connection 2"
UUID=${UUID}
ONBOOT=yes
USERS=superman
DEFAULTKEY=1

View file

@ -0,0 +1,12 @@
VLAN=yes
DEVICE=enp31s0f1-142
PHYSDEV=enp31s0f1
VLAN_ID=142
REORDER_HDR=yes
GVRP=no
MVRP=no
NAME=team-slave-enp31s0f1-142
UUID=74f435bb-ede4-415a-9d48-f580b60eba04
ONBOOT=no
TEAM_MASTER=team142
DEVICETYPE=TeamPort

View file

@ -0,0 +1,12 @@
HWADDR=00:16:41:11:22:33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=test-static-routes-legacy
UUID=ba60d05a-7898-820d-c2db-427a88f8f2a5
DEVICE=eth0
ONBOOT=yes

View file

@ -113,13 +113,118 @@ _assert_reread_same_FIXME (NMConnection *connection, NMConnection *reread)
g_assert (!nm_connection_diff (connection_normalized, reread, NM_SETTING_COMPARE_FLAG_EXACT, &settings));
}
#define _writer_update_connection_reread(connection, ifcfg_dir, filename, out_reread, out_reread_same) \
/* dummy path for an "expected" file, meaning: don't check for expected
* written ifcfg file. */
static const char const NO_EXPECTED[1];
static void
_assert_expected_content (NMConnection *connection, const char *filename, const char *expected)
{
gs_free char *content_expectd = NULL;
gs_free char *content_written = NULL;
GError *error = NULL;
gsize len_expectd = 0;
gsize len_written = 0;
gboolean success;
const char *uuid = NULL;
g_assert (NM_IS_CONNECTION (connection));
g_assert (filename);
g_assert (g_file_test (filename, G_FILE_TEST_EXISTS));
g_assert (expected);
if (expected == NO_EXPECTED)
return;
success = g_file_get_contents (filename, &content_written, &len_written, &error);
nmtst_assert_success (success, error);
success = g_file_get_contents (expected, &content_expectd, &len_expectd, &error);
nmtst_assert_success (success, error);
{
gsize i, j;
for (i = 0; i < len_expectd; ) {
if (content_expectd[i] != '$') {
i++;
continue;
}
if (g_str_has_prefix (&content_expectd[i], "${UUID}")) {
GString *str;
if (!uuid) {
uuid = nm_connection_get_uuid (connection);
g_assert (uuid);
}
j = strlen (uuid);
str = g_string_new_len (content_expectd, len_expectd);
g_string_erase (str, i, NM_STRLEN ("${UUID}"));
g_string_insert_len (str, i, uuid, j);
g_free (content_expectd);
len_expectd = str->len;
content_expectd = g_string_free (str, FALSE);
i += j;
continue;
}
/* other '$' is not supported. If need be, support escaping of
* '$' via '$$'. */
g_assert_not_reached ();
}
}
if ( len_expectd != len_written
|| memcmp (content_expectd, content_written, len_expectd) != 0) {
if (g_getenv ("NMTST_IFCFG_RH_UPDATE_EXPECTED")) {
if (uuid) {
gs_free char *search = g_strdup_printf ("UUID=%s\n", uuid);
const char *s;
gsize i;
GString *str;
s = content_written;
while (TRUE) {
s = strstr (s, search);
g_assert (s);
if ( s == content_written
|| s[-1] == '\n')
break;
s += strlen (search);
}
i = s - content_written;
str = g_string_new_len (content_written, len_written);
g_string_erase (str, i, strlen (search));
g_string_insert (str, i, "UUID=${UUID}\n");
len_written = str->len;
content_written = g_string_free (str, FALSE);
}
success = g_file_set_contents (expected, content_written, len_written, &error);
nmtst_assert_success (success, error);
} else {
g_error ("The content of \"%s\" (%zu) differs from \"%s\" (%zu). Set NMTST_IFCFG_RH_UPDATE_EXPECTED=yes to update the files inplace\n\n>>>%s<<<\n\n>>>%s<<<\n",
filename, len_written,
expected, len_expectd,
content_written,
content_expectd);
}
}
}
#define _writer_update_connection_reread(connection, ifcfg_dir, filename, expected, out_reread, out_reread_same) \
G_STMT_START { \
gs_unref_object NMConnection *_connection = nmtst_connection_duplicate_and_normalize (connection); \
NMConnection **_out_reread = (out_reread); \
gboolean *_out_reread_same = (out_reread_same); \
const char *_ifcfg_dir = (ifcfg_dir); \
const char *_filename = (filename); \
const char *_expected = (expected); \
GError *_error = NULL; \
gboolean _success; \
\
@ -128,15 +233,16 @@ _assert_reread_same_FIXME (NMConnection *connection, NMConnection *reread)
\
_success = writer_update_connection (_connection, _ifcfg_dir, _filename, _out_reread, _out_reread_same, &_error); \
nmtst_assert_success (_success, _error); \
_assert_expected_content (_connection, _filename, _expected); \
} G_STMT_END
#define _writer_update_connection(connection, ifcfg_dir, filename) \
#define _writer_update_connection(connection, ifcfg_dir, filename, expected) \
G_STMT_START { \
gs_unref_object NMConnection *_reread = NULL; \
NMConnection *_c = (connection); \
gboolean _reread_same = FALSE; \
\
_writer_update_connection_reread (_c, ifcfg_dir, filename, &_reread, &_reread_same); \
_writer_update_connection_reread (_c, ifcfg_dir, filename, expected, &_reread, &_reread_same); \
_assert_reread_same (_c, _reread); \
g_assert (_reread_same); \
} G_STMT_END
@ -187,6 +293,7 @@ static void
_writer_new_connection_reread (NMConnection *connection,
const char *ifcfg_dir,
char **out_filename,
const char *expected,
NMConnection **out_reread,
gboolean *out_reread_same)
{
@ -214,10 +321,27 @@ _writer_new_connection_reread (NMConnection *connection,
if (reread)
nmtst_assert_connection_verifies_without_normalization (*reread);
_assert_expected_content (con_verified, filename, expected);
if (out_filename)
*out_filename = filename;
else
g_free (filename);
}
static void
_writer_new_connec_exp (NMConnection *connection,
const char *ifcfg_dir,
const char *expected,
char **out_filename)
{
gs_unref_object NMConnection *reread = NULL;
gboolean reread_same = FALSE;
_writer_new_connection_reread (connection, ifcfg_dir, out_filename, expected, &reread, &reread_same);
_assert_reread_same (connection, reread);
g_assert (reread_same);
}
static void
@ -225,12 +349,7 @@ _writer_new_connection (NMConnection *connection,
const char *ifcfg_dir,
char **out_filename)
{
gs_unref_object NMConnection *reread = NULL;
gboolean reread_same = FALSE;
_writer_new_connection_reread (connection, ifcfg_dir, out_filename, &reread, &reread_same);
_assert_reread_same (connection, reread);
g_assert (reread_same);
_writer_new_connec_exp (connection, ifcfg_dir, NO_EXPECTED, out_filename);
}
static void
@ -243,7 +362,7 @@ _writer_new_connection_FIXME (NMConnection *connection,
/* FIXME: this should not happen. Fix it to use _writer_new_connection() instead. */
_writer_new_connection_reread (connection, ifcfg_dir, out_filename, &reread, &reread_same);
_writer_new_connection_reread (connection, ifcfg_dir, out_filename, NO_EXPECTED, &reread, &reread_same);
_assert_reread_same_FIXME (connection, reread);
g_assert (!reread_same);
}
@ -1678,8 +1797,9 @@ test_read_write_802_1X_subj_matches (void)
g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE,
"*missing IEEE_8021X_CA_CERT for EAP method 'peap'; this is insecure!");
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-System_test-wired-802-1X-subj-matches.cexpected",
&testfile);
g_test_assert_expected_messages ();
@ -1930,8 +2050,9 @@ test_clear_master (void)
g_assert_cmpstr (nm_setting_connection_get_slave_type (s_con), ==, "bridge");
/* 2. write the connection to a new file */
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-System_test-bridge-component-a.cexpected",
&testfile);
/* 3. clear master and slave-type */
@ -1948,7 +2069,8 @@ test_clear_master (void)
/* 4. update the connection on disk */
_writer_update_connection (connection,
TEST_SCRATCH_DIR "/network-scripts/",
testfile);
testfile,
TEST_IFCFG_DIR "/network-scripts/ifcfg-System_test-bridge-component-b.cexpected");
keyfile = utils_get_keys_path (testfile);
g_assert (!g_file_test (keyfile, G_FILE_TEST_EXISTS));
@ -3249,8 +3371,9 @@ test_write_wifi_hidden (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_WiFi_Hidden.cexpected",
&testfile);
f = _svOpenFile (testfile);
@ -3298,6 +3421,7 @@ test_write_wifi_mac_random (gconstpointer user_data)
const char *name, *write_expected;
gpointer value_p;
NMSettingMacRandomization value;
char cexpected[NM_STRLEN (TEST_IFCFG_DIR) + 100];
nmtst_test_data_unpack (user_data, &name, &value_p, &write_expected);
value = GPOINTER_TO_INT (value_p);
@ -3332,8 +3456,9 @@ test_write_wifi_mac_random (gconstpointer user_data)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
nm_sprintf_buf (cexpected, TEST_IFCFG_DIR"/network-scripts/ifcfg-Test_Write_WiFi_MAC_%s.cexpected", name),
&testfile);
f = _svOpenFile (testfile);
@ -3384,8 +3509,9 @@ test_write_wired_wake_on_lan (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Wired_Wake-on-LAN.cexpected",
&testfile);
f = _svOpenFile (testfile);
@ -3419,8 +3545,9 @@ test_write_wired_auto_negotiate_off (void)
NM_SETTING_WIRED_SPEED, 10,
NULL);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Wired_Auto-Negotiate.cexpected",
&testfile);
f = _svOpenFile (testfile);
@ -3532,8 +3659,9 @@ test_write_wifi_band_a (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_WiFi_Band_A.cexpected",
&testfile);
f = _svOpenFile (testfile);
@ -4282,8 +4410,9 @@ test_read_write_static_routes_legacy (void)
* we can clean up after the written connection in both the original
* source tree and for 'make distcheck'.
*/
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR_TMP,
TEST_IFCFG_DIR "/network-scripts/ifcfg-test-static-routes-legacy.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_ETHERNET, NULL);
@ -5398,8 +5527,9 @@ test_write_wifi_wep_104_ascii (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_SCRATCH_DIR "/network-scripts/ifcfg-Test_Write_Wifi_WEP_104_ASCII.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_WIRELESS, NULL);
@ -5482,8 +5612,9 @@ test_write_wifi_leap (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Wifi_LEAP.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_WIRELESS, NULL);
@ -6220,7 +6351,8 @@ test_write_wifi_wpa_then_open (void)
/* Write it back out */
_writer_update_connection (connection,
TEST_SCRATCH_DIR "/network-scripts/",
testfile);
testfile,
TEST_IFCFG_DIR "/network-scripts/ifcfg-random_wifi_connection.cexpected");
keyfile = utils_get_keys_path (testfile);
g_assert (!g_file_test (keyfile, G_FILE_TEST_EXISTS));
@ -6339,7 +6471,8 @@ test_write_wifi_wpa_then_wep_with_perms (void)
/* Write it back out */
_writer_update_connection (connection,
TEST_SCRATCH_DIR "/network-scripts/",
testfile);
testfile,
TEST_IFCFG_DIR "/network-scripts/ifcfg-random_wifi_connection_2.cexpected");
reread = _connection_from_file (testfile, NULL, TYPE_WIRELESS, NULL);
@ -6638,8 +6771,9 @@ test_write_permissions (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Permissions.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_ETHERNET, NULL);
@ -7093,8 +7227,9 @@ test_write_bridge_component (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Bridge_Component.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_ETHERNET, NULL);
@ -7338,8 +7473,9 @@ test_write_vlan (void)
connection = _connection_from_file (TEST_IFCFG_VLAN_INTERFACE,
NULL, TYPE_VLAN, NULL);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Vlan_test-vlan-interface.cexpected",
&testfile);
}
@ -7418,8 +7554,9 @@ test_write_vlan_reorder_hdr (void)
NM_SETTING_VLAN_FLAGS, 1,
NULL);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_VLAN_reorder_hdr.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_ETHERNET, NULL);
@ -7598,8 +7735,9 @@ test_write_bond_main (void)
nmtst_assert_connection_verifies_without_normalization (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Bond_Main.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_BOND, NULL);
@ -7992,8 +8130,9 @@ test_write_dcb_basic (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts//ifcfg-dcb-test.cexpected",
&testfile);
reread = _connection_from_file (testfile, NULL, TYPE_ETHERNET, NULL);
@ -8390,8 +8529,9 @@ test_write_team_port (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Team_Port.cexpected",
&testfile);
f = _svOpenFile (testfile);
@ -8480,6 +8620,7 @@ test_team_reread_slave (void)
_writer_new_connection_reread ((nmtst_get_rand_int () % 2) ? connection_1 : connection_2,
TEST_SCRATCH_DIR "/network-scripts/",
&testfile,
TEST_IFCFG_DIR "/network-scripts/ifcfg-team-slave-enp31s0f1-142.cexpected",
&reread,
&reread_same);
_assert_reread_same ((nmtst_get_rand_int () % 2) ? connection_1 : connection_2, reread);
@ -8551,8 +8692,9 @@ test_write_proxy_basic (void)
nmtst_assert_connection_verifies (connection);
_writer_new_connection (connection,
_writer_new_connec_exp (connection,
TEST_SCRATCH_DIR "/network-scripts/",
TEST_IFCFG_DIR "/network-scripts/ifcfg-Test_Write_Proxy_Basic.cexpected",
&testfile);
f = _svOpenFile (testfile);