keyfile: test that the output is stable

We already check that a connection doesn't not change when it's
written and re-read from disk. Add another check to verify that the
generated keyfile matches a static one, so that we don't introduce
unwanted changes. The reference keyfiles can be generated by running
the test with "NM_TEST_REGENERATE=1".
This commit is contained in:
Beniamino Galvani 2024-11-26 17:49:01 +01:00 committed by Fernando Fernandez Mancera
parent dd9aca4bd9
commit 40b139bc65
12 changed files with 300 additions and 26 deletions

View file

@ -0,0 +1,24 @@
[connection]
id=T-Mobile Funkadelic
uuid=76c59c25-c27c-57a4-8357-1409491cea45
type=bluetooth
autoconnect=false
timestamp=305415219
[gsm]
apn=internet2.voicestream.com
password=parliament
username=george.clinton
[bluetooth]
bdaddr=AA:B9:A1:74:55:44
type=dun
[ipv4]
method=auto
[ipv6]
addr-gen-mode=default
method=auto
[proxy]

View file

@ -0,0 +1,14 @@
[connection]
id=Test Write Bridge Component
uuid=7c4e34eb-419f-531c-b6ca-486f51a08d1d
type=ethernet
controller=br0
port-type=bridge
[ethernet]
mac-address=99:88:77:66:55:44
mtu=1300
[bridge-port]
path-cost=99
priority=3

View file

@ -0,0 +1,19 @@
[connection]
id=Test Write Bridge Main
uuid=b23c15e0-815b-5e6e-a5f9-aea49237aa35
type=bridge
interface-name=br0
[ethernet]
[bridge]
[ipv4]
address1=1.2.3.4/24,1.1.1.1
method=manual
[ipv6]
addr-gen-mode=default
method=auto
[proxy]

View file

@ -0,0 +1,16 @@
[connection]
id=Test Write Enum Property
uuid=7e4cb57c-33ff-51fc-ae49-4ee414ef0b63
type=ethernet
[ethernet]
[ipv4]
method=auto
[ipv6]
addr-gen-mode=default
ip6-privacy=2
method=auto
[proxy]

View file

@ -0,0 +1,18 @@
[connection]
id=Test Write Flags Property
uuid=19febe12-db48-5661-94cc-16529548d772
type=gsm
[gsm]
apn=myapn
password-flags=6
username=adfasdfasdf
[ipv4]
method=auto
[ipv6]
addr-gen-mode=default
method=auto
[proxy]

View file

@ -0,0 +1,26 @@
[connection]
id=T-Mobile Funkadelic 2
uuid=952d369e-52c7-5686-ad8c-37ca7e47f8b2
type=gsm
autoconnect=false
timestamp=305415219
[gsm]
apn=internet2.voicestream.com
device-id=da812de91eec16620b06cd0ca5cbc7ea25245222
home-only=true
network-id=254098
password=parliament2
pin=123456
sim-id=89148000000060671234
sim-operator-id=310260
username=george.clinton.again
[ipv4]
method=auto
[ipv6]
addr-gen-mode=default
method=auto
[proxy]

View file

@ -0,0 +1,19 @@
[connection]
id=Work InfiniBand
uuid=c27325f5-9eff-517a-9d96-d7897785fa5b
type=infiniband
autoconnect=false
[infiniband]
mac-address=99:88:77:66:55:44:AB:BC:CD:DE:EF:F0:0A:1B:2C:3D:4E:5F:6F:BA
mtu=900
transport-mode=datagram
[ipv4]
method=auto
[ipv6]
addr-gen-mode=default
method=auto
[proxy]

View file

@ -0,0 +1,21 @@
[connection]
id=Test TC
uuid=ed1cb963-ff64-5129-99ca-e05ab3195ce4
type=ethernet
[ethernet]
[ipv4]
method=auto
[ipv6]
addr-gen-mode=default
method=auto
[proxy]
[tc]
qdisc.root=handle 1234: fq_codel
qdisc.ffff:fff1=ingress
tfilter.1234:=matchall action drop
tfilter.ffff:=matchall action simple sdata Hello

View file

@ -0,0 +1,35 @@
[connection]
id=Work Wired
uuid=9342d47a-1bab-5709-9869-c840b2eac501
type=ethernet
autoconnect=false
timestamp=305419896
[ethernet]
mac-address=99:88:77:66:55:44
mtu=900
[ipv4]
address1=192.168.0.5/24,192.168.0.1
address2=1.2.3.4/8
dns=4.2.2.1;4.2.2.2;
method=manual
route1=10.10.10.2/24,10.10.10.1,3
route2=1.1.1.1/8,1.2.1.1,1
route3=2.2.2.2/7
route4=3.3.3.3/6,0.0.0.0,4
route4_options=cwnd=10,mtu=1492,src=1.2.3.4,weight=5
[ipv6]
addr-gen-mode=default
address1=abcd::beef/64
address2=dcba::beef/56
dns=1::cafe;2::cafe;
dns-search=wallaceandgromit.com;
method=manual
route1=1:2:3:4:5:6:7:8/64,8:7:6:5:4:3:2:1,3
route2=2001::1000/56,2001::1111,1
route3=4:5:6:7:8:9:0:1/63,::,5
route4=5:6:7:8:9:0:1:2/62
[proxy]

View file

@ -0,0 +1,19 @@
[connection]
id=Work Wired IP6
uuid=0bef2d09-50a3-56b9-912a-5dc941284e3e
type=ethernet
autoconnect=false
[ethernet]
[ipv4]
method=disabled
[ipv6]
addr-gen-mode=default
address1=abcd::beef/64,dcba::beef
dns=1::cafe;
dns-search=wallaceandgromit.com;
method=manual
[proxy]

View file

@ -0,0 +1,20 @@
[connection]
id=Work Wireless
uuid=e9b337d3-6aa0-552a-822c-4b71c8ddec2e
type=wifi
autoconnect=false
timestamp=305415219
[wifi]
bssid=AA:B9:A1:74:55:44
mtu=1000
ssid=1337
[ipv4]
method=auto
[ipv6]
addr-gen-mode=default
method=auto
[proxy]

View file

@ -163,13 +163,48 @@ write_test_connection(NMConnection *connection, char **testfile)
}
static void
write_test_connection_and_reread(NMConnection *connection, gboolean normalize_connection)
write_test_connection_and_reread(NMConnection *connection,
gboolean normalize_connection,
const char *reference)
{
gs_free char *testfile = NULL;
g_assert(NM_IS_CONNECTION(connection));
write_test_connection(connection, &testfile);
if (reference) {
gs_free char *data1 = NULL;
gs_free char *data2 = NULL;
gsize len1;
gsize len2;
gs_free_error GError *error = NULL;
gboolean success;
success = g_file_get_contents(testfile, &data1, &len1, &error);
nmtst_assert_success(success, error);
if (nm_streq0(g_getenv("NM_TEST_REGENERATE"), "1")) {
success = g_file_set_contents(reference, data1, len1, &error);
nmtst_assert_success(success, error);
} else {
success = g_file_get_contents(reference, &data2, &len2, &error);
nmtst_assert_success(success, error);
if (len1 != len2 || !nm_streq0(data1, data2)) {
g_error("The content of \"%s\" (%zu) differs from \"%s\" (%zu). Set "
"NM_TEST_REGENERATE=1 to update the files "
"in place\n\n>>>%s<<<\n\n>>>%s<<<\n",
testfile,
len1,
reference,
len2,
data1,
data2);
}
}
}
assert_reread_and_unlink(connection, normalize_connection, testfile);
}
@ -408,13 +443,13 @@ add_one_ip_route(NMSettingIPConfig *s_ip,
static void
test_write_wired_connection(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6;
NMIPRoute *rt;
const char *uuid = "9342d47a-1bab-5709-9869-c840b2eac501";
const char *mac = "99:88:77:66:55:44";
const char *dns1 = "4.2.2.1";
const char *dns2 = "4.2.2.2";
@ -529,7 +564,7 @@ test_write_wired_connection(void)
/* DNS searches */
nm_setting_ip_config_add_dns_search(s_ip6, "wallaceandgromit.com");
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection, FALSE, TEST_KEYFILES_DIR "/Test_Write_Wired");
}
static void
@ -573,12 +608,12 @@ test_read_ip6_wired_connection(void)
static void
test_write_ip6_wired_connection(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6;
const char *uuid = "0bef2d09-50a3-56b9-912a-5dc941284e3e";
const char *dns = "1::cafe";
const char *address = "abcd::beef";
const char *gw = "dcba::beef";
@ -634,7 +669,7 @@ test_write_ip6_wired_connection(void)
/* DNS searches */
nm_setting_ip_config_add_dns_search(s_ip6, "wallaceandgromit.com");
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection, FALSE, TEST_KEYFILES_DIR "/Test_Write_Wired_IP6");
}
static void
@ -746,12 +781,12 @@ test_read_valid_wireless_connection(void)
static void
test_write_wireless_connection(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingWireless *s_wireless;
NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6;
const char *uuid = "e9b337d3-6aa0-552a-822c-4b71c8ddec2e";
const char *bssid = "aa:b9:a1:74:55:44";
GBytes *ssid;
unsigned char tmpssid[] = {0x31, 0x33, 0x33, 0x37};
@ -809,7 +844,7 @@ test_write_wireless_connection(void)
g_object_set(s_ip6, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL);
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection, FALSE, TEST_KEYFILES_DIR "/Test_Write_Wireless");
}
static void
@ -1181,12 +1216,12 @@ test_read_bt_dun_connection(void)
static void
test_write_bt_dun_connection(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingBluetooth *s_bt;
NMSettingIPConfig *s_ip4;
NMSettingGsm *s_gsm;
const char *uuid = "76c59c25-c27c-57a4-8357-1409491cea45";
const char *bdaddr = "aa:b9:a1:74:55:44";
guint64 timestamp = 0x12344433L;
@ -1242,7 +1277,9 @@ test_write_bt_dun_connection(void)
"parliament",
NULL);
write_test_connection_and_reread(connection, TRUE);
write_test_connection_and_reread(connection,
TRUE,
TEST_KEYFILES_DIR "/Test_Write_Bluetooth_DUN");
}
static void
@ -1286,12 +1323,12 @@ test_read_gsm_connection(void)
static void
test_write_gsm_connection(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingIPConfig *s_ip4;
NMSettingGsm *s_gsm;
guint64 timestamp = 0x12344433L;
const char *uuid = "952d369e-52c7-5686-ad8c-37ca7e47f8b2";
connection = nm_simple_connection_new();
@ -1345,7 +1382,7 @@ test_write_gsm_connection(void)
"310260",
NULL);
write_test_connection_and_reread(connection, TRUE);
write_test_connection_and_reread(connection, TRUE, TEST_KEYFILES_DIR "/Test_Write_GSM");
}
static void
@ -1830,12 +1867,12 @@ test_read_infiniband_connection(void)
static void
test_write_infiniband_connection(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingInfiniband *s_ib;
NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6;
const char *uuid = "c27325f5-9eff-517a-9d96-d7897785fa5b";
const char *mac = "99:88:77:66:55:44:ab:bc:cd:de:ef:f0:0a:1b:2c:3d:4e:5f:6f:ba";
connection = nm_simple_connection_new();
@ -1883,7 +1920,7 @@ test_write_infiniband_connection(void)
nm_connection_add_setting(connection, NM_SETTING(s_ip6));
g_object_set(s_ip6, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL);
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection, FALSE, TEST_KEYFILES_DIR "/Test_Write_Infiniband");
}
static void
@ -1922,13 +1959,13 @@ test_read_bridge_main(void)
static void
test_write_bridge_main(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingBridge *s_bridge;
NMSettingWired *s_wired;
NMSettingIPConfig *s_ip4;
NMSettingIPConfig *s_ip6;
const char *uuid = "b23c15e0-815b-5e6e-a5f9-aea49237aa35";
connection = nm_simple_connection_new();
g_assert(connection);
@ -1982,7 +2019,9 @@ test_write_bridge_main(void)
nm_connection_add_setting(connection, NM_SETTING(s_ip6));
g_object_set(s_ip6, NM_SETTING_IP_CONFIG_METHOD, NM_SETTING_IP6_CONFIG_METHOD_AUTO, NULL);
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection,
FALSE,
TEST_KEYFILES_DIR "/Test_Write_Bridge_Main");
}
static void
@ -2022,12 +2061,12 @@ test_read_bridge_component(void)
static void
test_write_bridge_component(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingBridgePort *s_port;
NMSettingWired *s_wired;
const char *mac = "99:88:77:66:55:44";
const char *mac = "99:88:77:66:55:44";
const char *uuid = "7c4e34eb-419f-531c-b6ca-486f51a08d1d";
connection = nm_simple_connection_new();
g_assert(connection);
@ -2071,7 +2110,9 @@ test_write_bridge_component(void)
99,
NULL);
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection,
FALSE,
TEST_KEYFILES_DIR "/Test_Write_Bridge_Component");
}
static void
@ -2423,11 +2464,11 @@ test_read_enum_property(void)
static void
test_write_enum_property(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSettingWired *s_wired;
NMSettingIPConfig *s_ip6;
const char *uuid = "7e4cb57c-33ff-51fc-ae49-4ee414ef0b63";
connection = nm_simple_connection_new();
@ -2461,7 +2502,7 @@ test_write_enum_property(void)
nmtst_connection_normalize(connection);
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection, FALSE, TEST_KEYFILES_DIR "/Test_Write_Enum");
}
static void
@ -2482,10 +2523,10 @@ test_read_flags_property(void)
static void
test_write_flags_property(void)
{
NMTST_UUID_INIT(uuid);
gs_unref_object NMConnection *connection = NULL;
NMSettingConnection *s_con;
NMSetting *s_gsm;
const char *uuid = "19febe12-db48-5661-94cc-16529548d772";
connection = nm_simple_connection_new();
@ -2517,7 +2558,7 @@ test_write_flags_property(void)
nmtst_connection_normalize(connection);
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection, FALSE, TEST_KEYFILES_DIR "/Test_Write_Flags");
}
/*****************************************************************************/
@ -2586,9 +2627,11 @@ test_write_tc_config(void)
NMTCAction *action;
GError *error = NULL;
connection =
nmtst_create_minimal_connection("Test TC", NULL, NM_SETTING_WIRED_SETTING_NAME, NULL);
s_tc = nm_setting_tc_config_new();
connection = nmtst_create_minimal_connection("Test TC",
"ed1cb963-ff64-5129-99ca-e05ab3195ce4",
NM_SETTING_WIRED_SETTING_NAME,
NULL);
s_tc = nm_setting_tc_config_new();
qdisc1 = nm_tc_qdisc_new("fq_codel", TC_H_ROOT, &error);
nmtst_assert_success(qdisc1, error);
@ -2622,7 +2665,7 @@ test_write_tc_config(void)
nm_connection_add_setting(connection, s_tc);
nmtst_connection_normalize(connection);
write_test_connection_and_reread(connection, FALSE);
write_test_connection_and_reread(connection, FALSE, TEST_KEYFILES_DIR "/Test_Write_TC");
nm_tc_qdisc_unref(qdisc1);
nm_tc_qdisc_unref(qdisc2);