about summary refs log tree commit diff
path: root/dispatcher/tests
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2021-10-01 23:05:04 +0200
committerMichael Biebl <biebl@debian.org>2021-10-01 23:05:04 +0200
commite74c568b07b50b97873fb4ee1d776dedefbd54d6 (patch)
tree3469f17ea9af91f7ff169b890633bda68b0cf76e /dispatcher/tests
parentbfe522304da217296e2a61040f58e35ec5d6f3f2 (diff)
New upstream version 1.32.12 upstream/1.32.12
Diffstat (limited to 'dispatcher/tests')
-rw-r--r--dispatcher/tests/dispatcher-connectivity-full17
-rw-r--r--dispatcher/tests/dispatcher-connectivity-unknown16
-rw-r--r--dispatcher/tests/dispatcher-down23
-rw-r--r--dispatcher/tests/dispatcher-external40
-rw-r--r--dispatcher/tests/dispatcher-up66
-rw-r--r--dispatcher/tests/dispatcher-vpn-down65
-rw-r--r--dispatcher/tests/dispatcher-vpn-up65
-rw-r--r--dispatcher/tests/meson.build24
-rw-r--r--dispatcher/tests/test-dispatcher-envp.c637
9 files changed, 0 insertions, 953 deletions
diff --git a/dispatcher/tests/dispatcher-connectivity-full b/dispatcher/tests/dispatcher-connectivity-full
deleted file mode 100644
index 937e79d7..00000000
--- a/dispatcher/tests/dispatcher-connectivity-full
+++ /dev/null
@@ -1,17 +0,0 @@
-[main]
-action=connectivity-change
-uuid=3fd2a33a-d81b-423f-ae99-e6baba742311
-id=Random Connection
-connectivity-state=FULL
-
-[device]
-state=30
-ip-interface=wlan0
-type=2
-interface=wlan0
-path=/org/freedesktop/NetworkManager/Devices/0
-
-[env]
-PATH=
-NM_DISPATCHER_ACTION=connectivity-change
-CONNECTIVITY_STATE=FULL
diff --git a/dispatcher/tests/dispatcher-connectivity-unknown b/dispatcher/tests/dispatcher-connectivity-unknown
deleted file mode 100644
index 9aa48e4a..00000000
--- a/dispatcher/tests/dispatcher-connectivity-unknown
+++ /dev/null
@@ -1,16 +0,0 @@
-[main]
-action=connectivity-change
-uuid=3fd2a33a-d81b-423f-ae99-e6baba742311
-id=Random Connection
-connectivity-state=UNKNOWN
-
-[device]
-state=30
-ip-interface=wlan0
-type=2
-interface=wlan0
-path=/org/freedesktop/NetworkManager/Devices/0
-
-[env]
-PATH=
-NM_DISPATCHER_ACTION=connectivity-change
diff --git a/dispatcher/tests/dispatcher-down b/dispatcher/tests/dispatcher-down
deleted file mode 100644
index 8e2a2818..00000000
--- a/dispatcher/tests/dispatcher-down
+++ /dev/null
@@ -1,23 +0,0 @@
-[main]
-action=down
-expected-iface=wlan0
-uuid=3fd2a33a-d81b-423f-ae99-e6baba742311
-id=Random Connection
-
-[device]
-state=30
-ip-interface=wlan0
-type=2
-interface=wlan0
-path=/org/freedesktop/NetworkManager/Devices/0
-
-[env]
-PATH=
-NM_DISPATCHER_ACTION=down
-CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311
-CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5
-CONNECTION_ID=Random Connection
-CONNECTION_FILENAME=/dispatcher/tests/dispatcher-down
-DEVICE_IFACE=wlan0
-DEVICE_IP_IFACE=wlan0
-
diff --git a/dispatcher/tests/dispatcher-external b/dispatcher/tests/dispatcher-external
deleted file mode 100644
index 46d6c797..00000000
--- a/dispatcher/tests/dispatcher-external
+++ /dev/null
@@ -1,40 +0,0 @@
-[main]
-action=up
-expected-iface=virbr0
-uuid=92bbc2fb-7304-46be-8ebb-6093dbe19a6a
-id=virbr0
-external=1
-
-[device]
-state=100
-ip-interface=virbr0
-type=13
-interface=virbr0
-path=/org/freedesktop/NetworkManager/Devices/0
-
-[proxy]
-pac-url=http://networkmanager.com/proxy.pac
-pac-script="function FindProxyForURL (url, host) {}"
-
-[ip4]
-addresses=192.168.122.1/24 0.0.0.0
-domains=
-gateway=0.0.0.0
-
-[env]
-PATH=
-NM_DISPATCHER_ACTION=up
-CONNECTION_UUID=92bbc2fb-7304-46be-8ebb-6093dbe19a6a
-CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5
-CONNECTION_FILENAME=/dispatcher/tests/dispatcher-external
-CONNECTION_ID=virbr0
-CONNECTION_EXTERNAL=1
-DEVICE_IFACE=virbr0
-DEVICE_IP_IFACE=virbr0
-PROXY_PAC_URL=http://networkmanager.com/proxy.pac
-PROXY_PAC_SCRIPT="function FindProxyForURL (url, host) {}"
-IP4_NUM_ADDRESSES=1
-IP4_ADDRESS_0=192.168.122.1/24 0.0.0.0
-IP4_GATEWAY=0.0.0.0
-IP4_NUM_ROUTES=0
-
diff --git a/dispatcher/tests/dispatcher-up b/dispatcher/tests/dispatcher-up
deleted file mode 100644
index 0a27e3de..00000000
--- a/dispatcher/tests/dispatcher-up
+++ /dev/null
@@ -1,66 +0,0 @@
-[main]
-action=up
-expected-iface=wlan0
-uuid=3fd2a33a-d81b-423f-ae99-e6baba742311
-id=Random Connection
-
-[device]
-state=100
-ip-interface=wlan0
-type=2
-interface=wlan0
-path=/org/freedesktop/NetworkManager/Devices/0
-
-[dhcp4]
-netbios_name_servers=0.0.0.0
-domain_name_servers=68.87.77.134 68.87.72.134 192.168.1.1
-dhcp_lease_time=86400
-network_number=192.168.1.0
-domain_name=hsd1.mn.comcast.net.
-ip_address=192.168.1.119
-dhcp_message_type=5
-dhcp_server_identifier=192.168.1.1
-routers=192.168.1.1
-broadcast_address=192.168.1.255
-subnet_mask=255.255.255.0
-expiry=1304300446
-
-[proxy]
-pac-url=http://networkmanager.com/proxy.pac
-pac-script="function FindProxyForURL (url, host) {}"
-
-[ip4]
-addresses=192.168.1.119/24 192.168.1.1
-nameservers=68.87.77.134 68.87.72.134 192.168.1.1
-domains=hsd1.mn.comcast.net.
-
-[env]
-PATH=
-NM_DISPATCHER_ACTION=up
-CONNECTION_UUID=3fd2a33a-d81b-423f-ae99-e6baba742311
-CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5
-CONNECTION_ID=Random Connection
-CONNECTION_FILENAME=/dispatcher/tests/dispatcher-up
-DEVICE_IFACE=wlan0
-DEVICE_IP_IFACE=wlan0
-PROXY_PAC_URL=http://networkmanager.com/proxy.pac
-PROXY_PAC_SCRIPT="function FindProxyForURL (url, host) {}"
-IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1
-IP4_NUM_ADDRESSES=1
-IP4_NAMESERVERS=68.87.77.134 68.87.72.134 192.168.1.1
-IP4_GATEWAY=192.168.1.1
-IP4_DOMAINS=hsd1.mn.comcast.net.
-IP4_NUM_ROUTES=0
-DHCP4_NETBIOS_NAME_SERVERS=0.0.0.0
-DHCP4_DOMAIN_NAME_SERVERS=68.87.77.134 68.87.72.134 192.168.1.1
-DHCP4_DHCP_LEASE_TIME=86400
-DHCP4_NETWORK_NUMBER=192.168.1.0
-DHCP4_DOMAIN_NAME=hsd1.mn.comcast.net.
-DHCP4_IP_ADDRESS=192.168.1.119
-DHCP4_DHCP_MESSAGE_TYPE=5
-DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1
-DHCP4_ROUTERS=192.168.1.1
-DHCP4_BROADCAST_ADDRESS=192.168.1.255
-DHCP4_SUBNET_MASK=255.255.255.0
-DHCP4_EXPIRY=1304300446
-
diff --git a/dispatcher/tests/dispatcher-vpn-down b/dispatcher/tests/dispatcher-vpn-down
deleted file mode 100644
index e439668f..00000000
--- a/dispatcher/tests/dispatcher-vpn-down
+++ /dev/null
@@ -1,65 +0,0 @@
-[main]
-action=vpn-down
-expected-iface=tun0
-uuid=355653c0-34d3-4777-ad25-f9a498b7ef8e
-id=Random Connection
-
-[device]
-state=100
-ip-interface=tun0
-type=2
-interface=wlan0
-path=/org/freedesktop/NetworkManager/Devices/0
-
-[dhcp4]
-netbios_name_servers=0.0.0.0
-domain_name_servers=68.87.77.134 68.87.72.134 192.168.1.1
-dhcp_lease_time=86400
-network_number=192.168.1.0
-domain_name=hsd1.mn.comcast.net.
-ip_address=192.168.1.119
-dhcp_message_type=5
-dhcp_server_identifier=192.168.1.1
-routers=192.168.1.1
-broadcast_address=192.168.1.255
-subnet_mask=255.255.255.0
-expiry=1304349405
-
-[proxy]
-pac-url=http://networkmanager.com/proxy.pac
-pac-script="function FindProxyForURL (url, host) {}"
-
-[ip4]
-addresses=192.168.1.119/24 192.168.1.1
-nameservers=68.87.77.134 68.87.72.134 192.168.1.1
-domains=hsd1.mn.comcast.net.
-
-[env]
-PATH=
-NM_DISPATCHER_ACTION=vpn-down
-CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e
-CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5
-CONNECTION_ID=Random Connection
-CONNECTION_FILENAME=/dispatcher/tests/dispatcher-vpn-down
-DEVICE_IFACE=wlan0
-DEVICE_IP_IFACE=tun0
-PROXY_PAC_URL=http://networkmanager.com/proxy.pac
-PROXY_PAC_SCRIPT="function FindProxyForURL (url, host) {}"
-IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1
-IP4_NUM_ADDRESSES=1
-IP4_NAMESERVERS=68.87.77.134 68.87.72.134 192.168.1.1
-IP4_GATEWAY=192.168.1.1
-IP4_DOMAINS=hsd1.mn.comcast.net.
-IP4_NUM_ROUTES=0
-DHCP4_NETBIOS_NAME_SERVERS=0.0.0.0
-DHCP4_DOMAIN_NAME_SERVERS=68.87.77.134 68.87.72.134 192.168.1.1
-DHCP4_DHCP_LEASE_TIME=86400
-DHCP4_NETWORK_NUMBER=192.168.1.0
-DHCP4_DOMAIN_NAME=hsd1.mn.comcast.net.
-DHCP4_IP_ADDRESS=192.168.1.119
-DHCP4_DHCP_MESSAGE_TYPE=5
-DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1
-DHCP4_ROUTERS=192.168.1.1
-DHCP4_BROADCAST_ADDRESS=192.168.1.255
-DHCP4_SUBNET_MASK=255.255.255.0
-DHCP4_EXPIRY=1304349405
diff --git a/dispatcher/tests/dispatcher-vpn-up b/dispatcher/tests/dispatcher-vpn-up
deleted file mode 100644
index 09c94c1c..00000000
--- a/dispatcher/tests/dispatcher-vpn-up
+++ /dev/null
@@ -1,65 +0,0 @@
-[main]
-action=vpn-up
-expected-iface=tun0
-uuid=355653c0-34d3-4777-ad25-f9a498b7ef8e
-id=Random Connection
-
-[device]
-state=100
-ip-interface=tun0
-type=2
-interface=wlan0
-path=/org/freedesktop/NetworkManager/Devices/0
-
-[dhcp4]
-netbios_name_servers=0.0.0.0
-domain_name_servers=68.87.77.134 68.87.72.134 192.168.1.1
-dhcp_lease_time=86400
-network_number=192.168.1.0
-domain_name=hsd1.mn.comcast.net.
-ip_address=192.168.1.119
-dhcp_message_type=5
-dhcp_server_identifier=192.168.1.1
-routers=192.168.1.1
-broadcast_address=192.168.1.255
-subnet_mask=255.255.255.0
-expiry=1304349405
-
-[proxy]
-pac-url=http://networkmanager.com/proxy.pac
-pac-script="function FindProxyForURL (url, host) {}"
-
-[ip4]
-addresses=192.168.1.119/24 192.168.1.1
-nameservers=68.87.77.134 68.87.72.134 192.168.1.1
-domains=hsd1.mn.comcast.net.
-
-[env]
-PATH=
-NM_DISPATCHER_ACTION=vpn-up
-CONNECTION_UUID=355653c0-34d3-4777-ad25-f9a498b7ef8e
-CONNECTION_DBUS_PATH=/org/freedesktop/NetworkManager/Connections/5
-CONNECTION_ID=Random Connection
-CONNECTION_FILENAME=/dispatcher/tests/dispatcher-vpn-up
-DEVICE_IFACE=wlan0
-DEVICE_IP_IFACE=tun0
-PROXY_PAC_URL=http://networkmanager.com/proxy.pac
-PROXY_PAC_SCRIPT="function FindProxyForURL (url, host) {}"
-IP4_ADDRESS_0=192.168.1.119/24 192.168.1.1
-IP4_NUM_ADDRESSES=1
-IP4_NAMESERVERS=68.87.77.134 68.87.72.134 192.168.1.1
-IP4_GATEWAY=192.168.1.1
-IP4_DOMAINS=hsd1.mn.comcast.net.
-IP4_NUM_ROUTES=0
-DHCP4_NETBIOS_NAME_SERVERS=0.0.0.0
-DHCP4_DOMAIN_NAME_SERVERS=68.87.77.134 68.87.72.134 192.168.1.1
-DHCP4_DHCP_LEASE_TIME=86400
-DHCP4_NETWORK_NUMBER=192.168.1.0
-DHCP4_DOMAIN_NAME=hsd1.mn.comcast.net.
-DHCP4_IP_ADDRESS=192.168.1.119
-DHCP4_DHCP_MESSAGE_TYPE=5
-DHCP4_DHCP_SERVER_IDENTIFIER=192.168.1.1
-DHCP4_ROUTERS=192.168.1.1
-DHCP4_BROADCAST_ADDRESS=192.168.1.255
-DHCP4_SUBNET_MASK=255.255.255.0
-DHCP4_EXPIRY=1304349405
diff --git a/dispatcher/tests/meson.build b/dispatcher/tests/meson.build
deleted file mode 100644
index 84b4b61c..00000000
--- a/dispatcher/tests/meson.build
+++ /dev/null
@@ -1,24 +0,0 @@
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-exe = executable(
-  'test-dispatcher-envp',
-  [
-    'test-dispatcher-envp.c',
-    nmdbus_dispatcher_sources,
-  ],
-  include_directories: dispatcher_inc,
-  dependencies: [
-    libnm_nm_default_dep,
-    libnm_glib_aux_dep,
-  ],
-  c_args: [
-    '-DG_LOG_DOMAIN="test"',
-  ] + introspection_extra_cflags,
-  link_with: libnm_dispatcher_core,
-)
-
-test(
-  'dispatcher/test-dispatcher-envp',
-  test_script,
-  args: test_args + [exe.full_path()],
-)
diff --git a/dispatcher/tests/test-dispatcher-envp.c b/dispatcher/tests/test-dispatcher-envp.c
deleted file mode 100644
index 4c37dd6c..00000000
--- a/dispatcher/tests/test-dispatcher-envp.c
+++ /dev/null
@@ -1,637 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (C) 2011 Red Hat, Inc.
- */
-
-#include "libnm/nm-default-client.h"
-
-#include <arpa/inet.h>
-#include <stdlib.h>
-
-#include "nm-dispatcher-utils.h"
-#include "nm-libnm-core-aux/nm-dispatcher-api.h"
-
-#include "nm-utils/nm-test-utils.h"
-
-#include "nmdbus-dispatcher.h"
-
-#define TEST_DIR NM_BUILD_SRCDIR "/dispatcher/tests"
-
-/*****************************************************************************/
-
-static void
-_print_env(const char *const *denv, GHashTable *expected_env)
-{
-    const char *const *iter;
-    GHashTableIter     k;
-    const char *       key;
-
-    g_print("\n******* Generated environment:\n");
-    for (iter = denv; iter && *iter; iter++)
-        g_print("   %s\n", *iter);
-
-    g_print("\n******* Expected environment:\n");
-    g_hash_table_iter_init(&k, expected_env);
-    while (g_hash_table_iter_next(&k, (gpointer) &key, NULL))
-        g_print("   %s\n", key);
-}
-
-static gboolean
-parse_main(GKeyFile *  kf,
-           const char *filename,
-           GVariant ** out_con_dict,
-           GVariant ** out_con_props,
-           char **     out_expected_iface,
-           char **     out_action,
-           char **     out_connectivity_state,
-           char **     out_vpn_ip_iface,
-           GError **   error)
-{
-    nm_auto_clear_variant_builder GVariantBuilder props = {};
-    gs_free char *                                uuid  = NULL;
-    gs_free char *                                id    = NULL;
-    gs_unref_object NMConnection *connection            = NULL;
-    NMSettingConnection *         s_con;
-
-    *out_expected_iface = g_key_file_get_string(kf, "main", "expected-iface", NULL);
-
-    *out_connectivity_state = g_key_file_get_string(kf, "main", "connectivity-state", NULL);
-    *out_vpn_ip_iface       = g_key_file_get_string(kf, "main", "vpn-ip-iface", NULL);
-
-    *out_action = g_key_file_get_string(kf, "main", "action", error);
-    if (*out_action == NULL)
-        return FALSE;
-
-    uuid = g_key_file_get_string(kf, "main", "uuid", error);
-    if (uuid == NULL)
-        return FALSE;
-    id = g_key_file_get_string(kf, "main", "id", error);
-    if (id == NULL)
-        return FALSE;
-
-    connection = nm_simple_connection_new();
-    s_con      = (NMSettingConnection *) nm_setting_connection_new();
-    g_object_set(s_con, NM_SETTING_CONNECTION_UUID, uuid, NM_SETTING_CONNECTION_ID, id, NULL);
-    nm_connection_add_setting(connection, NM_SETTING(s_con));
-
-    *out_con_dict = nm_connection_to_dbus(connection, NM_CONNECTION_SERIALIZE_ALL);
-
-    g_variant_builder_init(&props, G_VARIANT_TYPE("a{sv}"));
-    g_variant_builder_add(
-        &props,
-        "{sv}",
-        NMD_CONNECTION_PROPS_PATH,
-        g_variant_new_object_path("/org/freedesktop/NetworkManager/Connections/5"));
-
-    /* Strip out the non-fixed portion of the filename */
-    filename = strstr(filename, "/dispatcher");
-    g_variant_builder_add(&props, "{sv}", "filename", g_variant_new_string(filename));
-
-    if (g_key_file_get_boolean(kf, "main", "external", NULL)) {
-        g_variant_builder_add(&props, "{sv}", "external", g_variant_new_boolean(TRUE));
-    }
-
-    *out_con_props = g_variant_builder_end(&props);
-
-    return TRUE;
-}
-
-static gboolean
-parse_device(GKeyFile *kf, GVariant **out_device_props, GError **error)
-{
-    nm_auto_clear_variant_builder GVariantBuilder props = {};
-    gs_free char *                                tmp   = NULL;
-    int                                           i;
-
-    g_variant_builder_init(&props, G_VARIANT_TYPE("a{sv}"));
-
-    i = g_key_file_get_integer(kf, "device", "state", error);
-    if (i == 0)
-        return FALSE;
-    g_variant_builder_add(&props, "{sv}", NMD_DEVICE_PROPS_STATE, g_variant_new_uint32(i));
-
-    i = g_key_file_get_integer(kf, "device", "type", error);
-    if (i == 0)
-        return FALSE;
-    g_variant_builder_add(&props, "{sv}", NMD_DEVICE_PROPS_TYPE, g_variant_new_uint32(i));
-
-    tmp = g_key_file_get_string(kf, "device", "interface", error);
-    if (tmp == NULL)
-        return FALSE;
-    g_variant_builder_add(&props, "{sv}", NMD_DEVICE_PROPS_INTERFACE, g_variant_new_string(tmp));
-
-    nm_clear_g_free(&tmp);
-    tmp = g_key_file_get_string(kf, "device", "ip-interface", error);
-    if (tmp == NULL)
-        return FALSE;
-    g_variant_builder_add(&props, "{sv}", NMD_DEVICE_PROPS_IP_INTERFACE, g_variant_new_string(tmp));
-
-    nm_clear_g_free(&tmp);
-    tmp = g_key_file_get_string(kf, "device", "path", error);
-    if (tmp == NULL)
-        return FALSE;
-    g_variant_builder_add(&props, "{sv}", NMD_DEVICE_PROPS_PATH, g_variant_new_object_path(tmp));
-
-    *out_device_props = g_variant_builder_end(&props);
-    return TRUE;
-}
-
-static gboolean
-add_uint_array(GKeyFile *       kf,
-               GVariantBuilder *props,
-               const char *     section,
-               const char *     key,
-               GError **        error)
-{
-    gs_free char *       tmp   = NULL;
-    gs_free const char **split = NULL;
-    gsize                i;
-
-    tmp = g_key_file_get_string(kf, section, key, NULL);
-    if (tmp == NULL)
-        return TRUE;
-
-    split = nm_utils_strsplit_set_with_empty(tmp, " ");
-    if (split) {
-        gs_unref_array GArray *items = NULL;
-
-        items = g_array_sized_new(FALSE, TRUE, sizeof(guint32), NM_PTRARRAY_LEN(split));
-        for (i = 0; split[i]; i++) {
-            const char *s;
-
-            s = split[i];
-            g_strstrip((char *) s);
-            if (s[0]) {
-                guint32 addr;
-
-                if (inet_pton(AF_INET, s, &addr) != 1)
-                    g_assert_not_reached();
-                g_array_append_val(items, addr);
-            }
-        }
-        g_variant_builder_add(props,
-                              "{sv}",
-                              key,
-                              g_variant_new_fixed_array(G_VARIANT_TYPE_UINT32,
-                                                        items->data,
-                                                        items->len,
-                                                        sizeof(guint32)));
-    }
-
-    return TRUE;
-}
-
-static gboolean
-parse_proxy(GKeyFile *kf, GVariant **out_props, const char *section, GError **error)
-{
-    nm_auto_clear_variant_builder GVariantBuilder props = {};
-    gs_free char *                                tmp   = NULL;
-
-    g_variant_builder_init(&props, G_VARIANT_TYPE("a{sv}"));
-
-    tmp = g_key_file_get_string(kf, section, "pac-url", error);
-    if (tmp == NULL)
-        return FALSE;
-    g_variant_builder_add(&props, "{sv}", "pac-url", g_variant_new_string(tmp));
-
-    nm_clear_g_free(&tmp);
-    tmp = g_key_file_get_string(kf, section, "pac-script", error);
-    if (tmp == NULL)
-        return FALSE;
-    g_variant_builder_add(&props, "{sv}", "pac-script", g_variant_new_string(tmp));
-
-    *out_props = g_variant_builder_end(&props);
-    return TRUE;
-}
-
-static gboolean
-parse_ip4(GKeyFile *kf, GVariant **out_props, const char *section, GError **error)
-{
-    nm_auto_clear_variant_builder GVariantBuilder props = {};
-    gs_free char *                                tmp   = NULL;
-    gs_free const char **                         split = NULL;
-    const char **                                 iter;
-
-    g_variant_builder_init(&props, G_VARIANT_TYPE("a{sv}"));
-
-    /* search domains */
-    /* Use char** for domains. (DBUS_TYPE_G_ARRAY_OF_STRING of NMIP4Config
-     * becomes G_TYPE_STRV when sending the value over D-Bus)
-     */
-    tmp = g_key_file_get_string(kf, section, "domains", error);
-    if (tmp == NULL)
-        return FALSE;
-    split = nm_utils_strsplit_set_with_empty(tmp, " ");
-    if (split) {
-        for (iter = split; *iter; iter++)
-            g_strstrip((char *) *iter);
-        g_variant_builder_add(&props, "{sv}", "domains", g_variant_new_strv((gpointer) split, -1));
-    }
-    nm_clear_g_free(&split);
-
-    if (!add_uint_array(kf, &props, "ip4", "nameservers", error))
-        return FALSE;
-
-    if (!add_uint_array(kf, &props, "ip4", "wins-servers", error))
-        return FALSE;
-
-    nm_clear_g_free(&tmp);
-    tmp = g_key_file_get_string(kf, section, "addresses", error);
-    if (tmp == NULL)
-        return FALSE;
-    split = nm_utils_strsplit_set_with_empty(tmp, ",");
-    if (split) {
-        gs_unref_ptrarray GPtrArray *addresses = NULL;
-        const char *                 gateway   = NULL;
-
-        addresses = g_ptr_array_new_with_free_func((GDestroyNotify) nm_ip_address_unref);
-        for (iter = split; *iter; iter++) {
-            const char * s = *iter;
-            NMIPAddress *addr;
-            const char * ip;
-            const char * prefix;
-
-            g_strstrip((char *) s);
-            if (s[0] == '\0')
-                continue;
-
-            ip = *iter;
-
-            prefix = strchr(ip, '/');
-            g_assert(prefix);
-            ((char *) (prefix++))[0] = '\0';
-
-            if (addresses->len == 0) {
-                gateway = strchr(prefix, ' ');
-                g_assert(gateway);
-                gateway++;
-            }
-
-            addr = nm_ip_address_new(AF_INET, ip, (guint) atoi(prefix), error);
-            if (!addr)
-                return FALSE;
-
-            g_ptr_array_add(addresses, addr);
-        }
-
-        g_variant_builder_add(&props,
-                              "{sv}",
-                              "addresses",
-                              nm_utils_ip4_addresses_to_variant(addresses, gateway));
-    }
-    nm_clear_g_free(&split);
-
-    nm_clear_g_free(&tmp);
-    tmp   = g_key_file_get_string(kf, section, "routes", NULL);
-    split = nm_utils_strsplit_set_with_empty(tmp, ",");
-    if (split) {
-        gs_unref_ptrarray GPtrArray *routes = NULL;
-
-        routes = g_ptr_array_new_with_free_func((GDestroyNotify) nm_ip_route_unref);
-        for (iter = split; *iter; iter++) {
-            const char *s = *iter;
-            NMIPRoute * route;
-            const char *dest;
-            const char *prefix;
-            const char *next_hop;
-            const char *metric;
-
-            g_strstrip((char *) s);
-            if (s[0] == '\0')
-                continue;
-
-            dest = s;
-
-            prefix = strchr(dest, '/');
-            g_assert(prefix);
-            ((char *) (prefix++))[0] = '\0';
-
-            next_hop = strchr(prefix, ' ');
-            g_assert(next_hop);
-            ((char *) (next_hop++))[0] = '\0';
-
-            metric = strchr(next_hop, ' ');
-            g_assert(metric);
-            ((char *) (metric++))[0] = '\0';
-
-            route = nm_ip_route_new(AF_INET,
-                                    dest,
-                                    _nm_utils_ascii_str_to_int64(prefix, 10, 0, 32, 255),
-                                    next_hop,
-                                    (guint) atoi(metric),
-                                    error);
-            if (!route)
-                return FALSE;
-            g_ptr_array_add(routes, route);
-        }
-
-        g_variant_builder_add(&props, "{sv}", "routes", nm_utils_ip4_routes_to_variant(routes));
-    }
-
-    *out_props = g_variant_builder_end(&props);
-    return TRUE;
-}
-
-static gboolean
-parse_dhcp(GKeyFile *kf, const char *group_name, GVariant **out_props, GError **error)
-{
-    nm_auto_clear_variant_builder GVariantBuilder props = {};
-    gs_strfreev char **                           keys  = NULL;
-    char **                                       iter;
-
-    keys = g_key_file_get_keys(kf, group_name, NULL, error);
-    if (!keys)
-        return FALSE;
-
-    g_variant_builder_init(&props, G_VARIANT_TYPE("a{sv}"));
-    for (iter = keys; iter && *iter; iter++) {
-        gs_free char *val = NULL;
-
-        val = g_key_file_get_string(kf, group_name, *iter, error);
-        if (!val)
-            return FALSE;
-        g_variant_builder_add(&props, "{sv}", *iter, g_variant_new_string(val));
-    }
-
-    *out_props = g_variant_builder_end(&props);
-    return TRUE;
-}
-
-static gboolean
-get_dispatcher_file(const char * file,
-                    GVariant **  out_con_dict,
-                    GVariant **  out_con_props,
-                    GVariant **  out_device_props,
-                    GVariant **  out_device_proxy_props,
-                    GVariant **  out_device_ip4_props,
-                    GVariant **  out_device_ip6_props,
-                    GVariant **  out_device_dhcp4_props,
-                    GVariant **  out_device_dhcp6_props,
-                    char **      out_connectivity_state,
-                    char **      out_vpn_ip_iface,
-                    GVariant **  out_vpn_proxy_props,
-                    GVariant **  out_vpn_ip4_props,
-                    GVariant **  out_vpn_ip6_props,
-                    char **      out_expected_iface,
-                    char **      out_action,
-                    GHashTable **out_env,
-                    GError **    error)
-{
-    nm_auto_unref_keyfile GKeyFile *kf   = NULL;
-    gs_strfreev char **             keys = NULL;
-    char **                         iter;
-
-    g_assert(!error || !*error);
-    g_assert(out_con_dict && !*out_con_dict);
-    g_assert(out_con_props && !*out_con_props);
-    g_assert(out_device_props && !*out_device_props);
-    g_assert(out_device_proxy_props && !*out_device_proxy_props);
-    g_assert(out_device_ip4_props && !*out_device_ip4_props);
-    g_assert(out_device_ip6_props && !*out_device_ip6_props);
-    g_assert(out_device_dhcp4_props && !*out_device_dhcp4_props);
-    g_assert(out_device_dhcp6_props && !*out_device_dhcp6_props);
-    g_assert(out_connectivity_state && !*out_connectivity_state);
-    g_assert(out_vpn_ip_iface && !*out_vpn_ip_iface);
-    g_assert(out_vpn_proxy_props && !*out_vpn_proxy_props);
-    g_assert(out_vpn_ip4_props && !*out_vpn_ip4_props);
-    g_assert(out_vpn_ip6_props && !*out_vpn_ip6_props);
-    g_assert(out_expected_iface && !*out_expected_iface);
-    g_assert(out_action && !*out_action);
-    g_assert(out_env && !*out_env);
-
-    kf = g_key_file_new();
-    if (!g_key_file_load_from_file(kf, file, G_KEY_FILE_NONE, error))
-        return FALSE;
-
-    if (!parse_main(kf,
-                    file,
-                    out_con_dict,
-                    out_con_props,
-                    out_expected_iface,
-                    out_action,
-                    out_connectivity_state,
-                    out_vpn_ip_iface,
-                    error))
-        return FALSE;
-
-    if (!parse_device(kf, out_device_props, error))
-        return FALSE;
-
-    if (g_key_file_has_group(kf, "proxy")) {
-        if (!parse_proxy(kf, out_device_proxy_props, "proxy", error))
-            return FALSE;
-    }
-
-    if (g_key_file_has_group(kf, "ip4")) {
-        if (!parse_ip4(kf, out_device_ip4_props, "ip4", error))
-            return FALSE;
-    }
-
-    if (g_key_file_has_group(kf, "dhcp4")) {
-        if (!parse_dhcp(kf, "dhcp4", out_device_dhcp4_props, error))
-            return FALSE;
-    }
-
-    if (g_key_file_has_group(kf, "dhcp6")) {
-        if (!parse_dhcp(kf, "dhcp6", out_device_dhcp6_props, error))
-            return FALSE;
-    }
-
-    g_assert(g_key_file_has_group(kf, "env"));
-    keys     = g_key_file_get_keys(kf, "env", NULL, error);
-    *out_env = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
-    for (iter = keys; iter && *iter; iter++) {
-        gs_free char *val = NULL;
-
-        val = g_key_file_get_string(kf, "env", *iter, error);
-        if (!val)
-            return FALSE;
-        g_hash_table_insert(*out_env, g_strdup_printf("%s=%s", *iter, val), GUINT_TO_POINTER(1));
-    }
-
-    return TRUE;
-}
-
-/*****************************************************************************/
-
-static void
-test_generic(const char *file, const char *override_vpn_ip_iface)
-{
-    gs_unref_variant GVariant *con_dict            = NULL;
-    gs_unref_variant GVariant *con_props           = NULL;
-    gs_unref_variant GVariant *device_props        = NULL;
-    gs_unref_variant GVariant *device_proxy_props  = NULL;
-    gs_unref_variant GVariant *device_ip4_props    = NULL;
-    gs_unref_variant GVariant *device_ip6_props    = NULL;
-    gs_unref_variant GVariant *device_dhcp4_props  = NULL;
-    gs_unref_variant GVariant *device_dhcp6_props  = NULL;
-    gs_free char *             connectivity_change = NULL;
-    gs_free char *             vpn_ip_iface        = NULL;
-    gs_unref_variant GVariant *vpn_proxy_props     = NULL;
-    gs_unref_variant GVariant *vpn_ip4_props       = NULL;
-    gs_unref_variant GVariant *vpn_ip6_props       = NULL;
-    gs_free char *             expected_iface      = NULL;
-    gs_free char *             action              = NULL;
-    gs_free char *             out_iface           = NULL;
-    const char *               error_message       = NULL;
-    gs_unref_hashtable GHashTable *expected_env    = NULL;
-    GError *                       error           = NULL;
-    gboolean                       success;
-    gs_free char *                 filename = NULL;
-    gs_strfreev char **            denv     = NULL;
-    char **                        iter;
-
-    filename = g_build_filename(TEST_DIR, file, NULL);
-    success  = get_dispatcher_file(filename,
-                                  &con_dict,
-                                  &con_props,
-                                  &device_props,
-                                  &device_proxy_props,
-                                  &device_ip4_props,
-                                  &device_ip6_props,
-                                  &device_dhcp4_props,
-                                  &device_dhcp6_props,
-                                  &connectivity_change,
-                                  &vpn_ip_iface,
-                                  &vpn_proxy_props,
-                                  &vpn_ip4_props,
-                                  &vpn_ip6_props,
-                                  &expected_iface,
-                                  &action,
-                                  &expected_env,
-                                  &error);
-    nmtst_assert_success(success, error);
-
-    /* Get the environment from the dispatcher code */
-    denv = nm_dispatcher_utils_construct_envp(action,
-                                              con_dict,
-                                              con_props,
-                                              device_props,
-                                              device_proxy_props,
-                                              device_ip4_props,
-                                              device_ip6_props,
-                                              device_dhcp4_props,
-                                              device_dhcp6_props,
-                                              connectivity_change,
-                                              override_vpn_ip_iface ?: vpn_ip_iface,
-                                              vpn_proxy_props,
-                                              vpn_ip4_props,
-                                              vpn_ip6_props,
-                                              &out_iface,
-                                              &error_message);
-
-    g_assert((!denv && error_message) || (denv && !error_message));
-
-    if (error_message)
-        g_error("FAILED: %s", error_message);
-
-    if (g_strv_length(denv) != g_hash_table_size(expected_env)) {
-        _print_env(NM_CAST_STRV_CC(denv), expected_env);
-        g_assert_cmpint(g_strv_length(denv), ==, g_hash_table_size(expected_env));
-    }
-
-    /* Compare dispatcher generated env and expected env */
-    for (iter = denv; iter && *iter; iter++) {
-        gpointer    foo;
-        const char *i_value = *iter;
-
-        if (strstr(i_value, "PATH=") == i_value) {
-            g_assert_cmpstr(&i_value[strlen("PATH=")], ==, g_getenv("PATH"));
-
-            /* The path is constructed dynamically. Ignore the actual value. */
-            i_value = "PATH=";
-        }
-
-        foo = g_hash_table_lookup(expected_env, i_value);
-        if (!foo) {
-            _print_env(NM_CAST_STRV_CC(denv), expected_env);
-            g_error("Failed to find %s in environment", i_value);
-        }
-    }
-
-    g_assert_cmpstr(expected_iface, ==, out_iface);
-}
-
-/*****************************************************************************/
-
-static void
-test_up(void)
-{
-    test_generic("dispatcher-up", NULL);
-}
-
-static void
-test_down(void)
-{
-    test_generic("dispatcher-down", NULL);
-}
-
-static void
-test_vpn_up(void)
-{
-    test_generic("dispatcher-vpn-up", NULL);
-}
-
-static void
-test_vpn_down(void)
-{
-    test_generic("dispatcher-vpn-down", NULL);
-}
-
-static void
-test_external(void)
-{
-    test_generic("dispatcher-external", NULL);
-}
-
-static void
-test_connectivity_changed(void)
-{
-    /* These tests will check that the CONNECTIVITY_STATE environment
-     * variable is only defined for known states, such as 'full'. */
-    test_generic("dispatcher-connectivity-unknown", NULL);
-    test_generic("dispatcher-connectivity-full", NULL);
-}
-
-static void
-test_up_empty_vpn_iface(void)
-{
-    /* Test that an empty VPN iface variable, like is passed through D-Bus
-     * from NM, is ignored by the dispatcher environment construction code.
-     */
-    test_generic("dispatcher-up", "");
-}
-
-/*****************************************************************************/
-
-static void
-test_gdbus_codegen(void)
-{
-    gs_unref_object NMDBusDispatcher *dbus_dispatcher = NULL;
-
-    dbus_dispatcher = nmdbus_dispatcher_skeleton_new();
-    g_assert(NMDBUS_IS_DISPATCHER_SKELETON(dbus_dispatcher));
-}
-
-/*****************************************************************************/
-
-NMTST_DEFINE();
-
-int
-main(int argc, char **argv)
-{
-    nmtst_init(&argc, &argv, TRUE);
-
-    g_test_add_func("/dispatcher/up", test_up);
-    g_test_add_func("/dispatcher/down", test_down);
-    g_test_add_func("/dispatcher/vpn_up", test_vpn_up);
-    g_test_add_func("/dispatcher/vpn_down", test_vpn_down);
-    g_test_add_func("/dispatcher/external", test_external);
-    g_test_add_func("/dispatcher/connectivity_changed", test_connectivity_changed);
-
-    g_test_add_func("/dispatcher/up_empty_vpn_iface", test_up_empty_vpn_iface);
-
-    g_test_add_func("/dispatcher/gdbus-codegen", test_gdbus_codegen);
-
-    return g_test_run();
-}