mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-06-20 05:58:30 +02:00
cloud-setup/tests: add test for nmcs_setting_ip_replace_ipv4_addresses()
This commit is contained in:
parent
7e8809a9c5
commit
d0552e00d0
1 changed files with 100 additions and 0 deletions
|
|
@ -2,10 +2,108 @@
|
|||
|
||||
#include "libnm/nm-default-client.h"
|
||||
|
||||
#include "nm-cloud-setup-utils.h"
|
||||
#include "nm-libnm-core-intern/nm-libnm-core-utils.h"
|
||||
|
||||
#include "nm-utils/nm-test-utils.h"
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static NMSettingIPConfig *
|
||||
_ri4a_new_s_ip(const char *const *addrs)
|
||||
{
|
||||
NMSettingIPConfig *s_ip;
|
||||
|
||||
s_ip = NM_SETTING_IP_CONFIG(nm_setting_ip4_config_new());
|
||||
|
||||
for (; addrs && addrs[0]; addrs++) {
|
||||
nm_auto_unref_ip_address NMIPAddress *a = nmtst_ip_address_new(AF_INET, addrs[0]);
|
||||
|
||||
nm_setting_ip_config_add_address(s_ip, a);
|
||||
}
|
||||
return s_ip;
|
||||
}
|
||||
|
||||
static GPtrArray *
|
||||
_ri4a_new_arr(const char *const *addrs)
|
||||
{
|
||||
GPtrArray *arr;
|
||||
|
||||
arr = g_ptr_array_new_with_free_func((GDestroyNotify) nm_ip_address_unref);
|
||||
|
||||
for (; addrs && addrs[0]; addrs++)
|
||||
g_ptr_array_add(arr, nmtst_ip_address_new(AF_INET, addrs[0]));
|
||||
|
||||
return arr;
|
||||
}
|
||||
|
||||
static void
|
||||
_test_ri4a(const char *const *addrs_before, const char *const *addrs_new)
|
||||
{
|
||||
gs_unref_object NMSettingIPConfig *s_ip = NULL;
|
||||
gs_unref_ptrarray GPtrArray *arr = NULL;
|
||||
const gsize n = NM_PTRARRAY_LEN(addrs_new);
|
||||
gboolean changed;
|
||||
gsize i;
|
||||
|
||||
s_ip = _ri4a_new_s_ip(addrs_before);
|
||||
arr = _ri4a_new_arr(addrs_new);
|
||||
|
||||
g_assert_cmpint(nm_setting_ip_config_get_num_addresses(s_ip),
|
||||
==,
|
||||
NM_PTRARRAY_LEN(addrs_before));
|
||||
g_assert_cmpint(arr->len, ==, n);
|
||||
|
||||
changed = nmcs_setting_ip_replace_ipv4_addresses(s_ip, (NMIPAddress **) arr->pdata, arr->len);
|
||||
|
||||
g_assert_cmpint(changed, !=, nm_utils_strv_equal(addrs_before, addrs_new));
|
||||
g_assert_cmpint(nm_setting_ip_config_get_num_addresses(s_ip), ==, n);
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
NMIPAddress *a = arr->pdata[i];
|
||||
NMIPAddress *b = nm_setting_ip_config_get_address(s_ip, i);
|
||||
|
||||
if (nmtst_get_rand_bool())
|
||||
NM_SWAP(&a, &b);
|
||||
|
||||
g_assert(nm_ip_address_cmp_full(a, b, NM_IP_ADDRESS_CMP_FLAGS_WITH_ATTRS) == 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
test_replace_ipv4_addresses(void)
|
||||
{
|
||||
const char *const *const LISTS[] = {
|
||||
NM_MAKE_STRV(),
|
||||
NM_MAKE_STRV("192.168.5.1/24"),
|
||||
NM_MAKE_STRV("192.168.5.1/24", "192.168.5.2/24"),
|
||||
NM_MAKE_STRV("192.168.5.1/24", "192.168.5.2/24", "192.168.5.3/24"),
|
||||
NM_MAKE_STRV("192.168.5.1/24", "192.168.5.2/24", "192.168.5.3/24", "192.168.5.4/24"),
|
||||
};
|
||||
int i_run;
|
||||
|
||||
for (i_run = 0; i_run < 20; i_run++) {
|
||||
gs_free const char **addrs_before = NULL;
|
||||
gs_free const char **addrs_new = NULL;
|
||||
|
||||
addrs_before = nmtst_rand_perm_strv(LISTS[nmtst_get_rand_uint32() % G_N_ELEMENTS(LISTS)]);
|
||||
addrs_new = nmtst_rand_perm_strv(LISTS[nmtst_get_rand_uint32() % G_N_ELEMENTS(LISTS)]);
|
||||
|
||||
_test_ri4a(addrs_before, addrs_new);
|
||||
}
|
||||
|
||||
_test_ri4a(NM_MAKE_STRV(), NM_MAKE_STRV());
|
||||
_test_ri4a(NM_MAKE_STRV(), NM_MAKE_STRV("192.168.5.1/24"));
|
||||
_test_ri4a(NM_MAKE_STRV(), NM_MAKE_STRV("192.168.5.1/24", "192.168.5.2/24"));
|
||||
_test_ri4a(NM_MAKE_STRV("192.168.5.1/24"), NM_MAKE_STRV());
|
||||
_test_ri4a(NM_MAKE_STRV("192.168.5.1/24"), NM_MAKE_STRV("192.168.5.1/24"));
|
||||
_test_ri4a(NM_MAKE_STRV("192.168.5.1/24", "192.168.5.2/24"), NM_MAKE_STRV());
|
||||
_test_ri4a(NM_MAKE_STRV("192.168.5.1/24", "192.168.5.2/24"), NM_MAKE_STRV("192.168.5.1/24"));
|
||||
_test_ri4a(NM_MAKE_STRV("192.168.5.1/24", "192.168.5.2/24"), NM_MAKE_STRV("192.168.5.2/24"));
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
NMTST_DEFINE();
|
||||
|
||||
int
|
||||
|
|
@ -13,5 +111,7 @@ main(int argc, char **argv)
|
|||
{
|
||||
nmtst_init(&argc, &argv, TRUE);
|
||||
|
||||
g_test_add_func("/cloud-setup/general/replace-ipv4-addresses", test_replace_ipv4_addresses);
|
||||
|
||||
return g_test_run();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue