|
Packit Service |
a1bd4f |
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
Packit |
5756e2 |
/*
|
|
Packit |
5756e2 |
* Copyright (C) 2010 Red Hat, Inc.
|
|
Packit |
5756e2 |
*/
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
#include "nm-default.h"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
#include "nm-core-internal.h"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
#include "settings/plugins/ifupdown/nms-ifupdown-interface-parser.h"
|
|
Packit |
5756e2 |
#include "settings/plugins/ifupdown/nms-ifupdown-parser.h"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
#include "nm-test-utils-core.h"
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
#define TEST_DIR NM_BUILD_SRCDIR "/src/settings/plugins/ifupdown/tests"
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
#define _connection_from_if_block(block) \
|
|
Packit Service |
a1bd4f |
({ \
|
|
Packit Service |
a1bd4f |
NMConnection *_con; \
|
|
Packit Service |
a1bd4f |
if_block * _block = (block); \
|
|
Packit Service |
a1bd4f |
GError * _local = NULL; \
|
|
Packit Service |
a1bd4f |
\
|
|
Packit Service |
a1bd4f |
g_assert(_block); \
|
|
Packit Service |
a1bd4f |
_con = ifupdown_new_connection_from_if_block(_block, FALSE, &_local); \
|
|
Packit Service |
a1bd4f |
nmtst_assert_success(NM_IS_CONNECTION(_con), _local); \
|
|
Packit Service |
a1bd4f |
nmtst_assert_connection_verifies_without_normalization(_con); \
|
|
Packit Service |
a1bd4f |
_con; \
|
|
Packit Service |
a1bd4f |
})
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
#define _connection_first_from_parser(parser) \
|
|
Packit Service |
a1bd4f |
({ \
|
|
Packit Service |
a1bd4f |
if_parser *_parser = (parser); \
|
|
Packit Service |
a1bd4f |
\
|
|
Packit Service |
a1bd4f |
g_assert(_parser); \
|
|
Packit Service |
a1bd4f |
_connection_from_if_block(ifparser_getfirst(_parser)); \
|
|
Packit Service |
a1bd4f |
})
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
typedef struct {
|
|
Packit Service |
a1bd4f |
char *key;
|
|
Packit Service |
a1bd4f |
char *data;
|
|
Packit |
5756e2 |
} ExpectedKey;
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
typedef struct {
|
|
Packit Service |
a1bd4f |
char * type;
|
|
Packit Service |
a1bd4f |
char * name;
|
|
Packit Service |
a1bd4f |
GSList *keys;
|
|
Packit |
5756e2 |
} ExpectedBlock;
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
typedef struct {
|
|
Packit Service |
a1bd4f |
GSList *blocks;
|
|
Packit |
5756e2 |
} Expected;
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static ExpectedKey *
|
|
Packit Service |
a1bd4f |
expected_key_new(const char *key, const char *data)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
ExpectedKey *k;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
k = g_malloc0(sizeof(ExpectedKey));
|
|
Packit Service |
a1bd4f |
k->key = g_strdup(key);
|
|
Packit Service |
a1bd4f |
k->data = g_strdup(data);
|
|
Packit Service |
a1bd4f |
return k;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
expected_key_free(gpointer ptr)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
ExpectedKey *k = ptr;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert(k);
|
|
Packit Service |
a1bd4f |
g_free(k->key);
|
|
Packit Service |
a1bd4f |
g_free(k->data);
|
|
Packit Service |
a1bd4f |
memset(k, 0, sizeof(ExpectedKey));
|
|
Packit Service |
a1bd4f |
g_free(k);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static ExpectedBlock *
|
|
Packit Service |
a1bd4f |
expected_block_new(const char *type, const char *name)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
ExpectedBlock *b;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert(type);
|
|
Packit Service |
a1bd4f |
g_assert(name);
|
|
Packit Service |
a1bd4f |
b = g_malloc0(sizeof(ExpectedBlock));
|
|
Packit Service |
a1bd4f |
g_assert(b);
|
|
Packit Service |
a1bd4f |
b->type = g_strdup(type);
|
|
Packit Service |
a1bd4f |
b->name = g_strdup(name);
|
|
Packit Service |
a1bd4f |
return b;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
expected_block_free(gpointer ptr)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
ExpectedBlock *b = ptr;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert(b);
|
|
Packit Service |
a1bd4f |
g_slist_free_full(b->keys, expected_key_free);
|
|
Packit Service |
a1bd4f |
g_free(b->type);
|
|
Packit Service |
a1bd4f |
g_free(b->name);
|
|
Packit Service |
a1bd4f |
memset(b, 0, sizeof(ExpectedBlock));
|
|
Packit Service |
a1bd4f |
g_free(b);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
expected_block_add_key(ExpectedBlock *b, ExpectedKey *k)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_assert(b);
|
|
Packit Service |
a1bd4f |
g_assert(k);
|
|
Packit Service |
a1bd4f |
b->keys = g_slist_append(b->keys, k);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static Expected *
|
|
Packit Service |
a1bd4f |
expected_new(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
return g_malloc0(sizeof(Expected));
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
expected_add_block(Expected *e, ExpectedBlock *b)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_assert(e);
|
|
Packit Service |
a1bd4f |
g_assert(b);
|
|
Packit Service |
a1bd4f |
e->blocks = g_slist_append(e->blocks, b);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
expected_free(Expected *e)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
g_assert(e);
|
|
Packit Service |
a1bd4f |
g_slist_free_full(e->blocks, expected_block_free);
|
|
Packit Service |
a1bd4f |
memset(e, 0, sizeof(Expected));
|
|
Packit Service |
a1bd4f |
g_free(e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
NM_AUTO_DEFINE_FCN_VOID0(Expected *, _nm_auto_free_expected, expected_free);
|
|
Packit |
5756e2 |
#define nm_auto_free_expected nm_auto(_nm_auto_free_expected)
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(if_parser *parser, Expected *e)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
if_block *n;
|
|
Packit Service |
a1bd4f |
GSList * biter, *kiter;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(g_slist_length(e->blocks), ==, ifparser_get_num_blocks(parser));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
biter = e->blocks;
|
|
Packit Service |
a1bd4f |
c_list_for_each_entry (n, &parser->block_lst_head, block_lst) {
|
|
Packit Service |
a1bd4f |
if_data * m;
|
|
Packit Service |
a1bd4f |
ExpectedBlock *b = biter->data;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert(b->type && n->type);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(b->type, ==, n->type);
|
|
Packit Service |
a1bd4f |
g_assert(b->name);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(b->name, ==, n->name);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(g_slist_length(b->keys), ==, ifparser_get_num_info(n));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
kiter = b->keys;
|
|
Packit Service |
a1bd4f |
c_list_for_each_entry (m, &n->data_lst_head, data_lst) {
|
|
Packit Service |
a1bd4f |
ExpectedKey *k = kiter->data;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert(k->key);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(k->key, ==, m->key);
|
|
Packit Service |
a1bd4f |
g_assert(k->data && m->data);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(k->data, ==, m->data);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
kiter = g_slist_next(kiter);
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
g_assert(!kiter);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
biter = g_slist_next(biter);
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
g_assert(!biter);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
dump_blocks(if_parser *parser)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
if_block *n;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_message("\n***************************************************");
|
|
Packit Service |
a1bd4f |
c_list_for_each_entry (n, &parser->block_lst_head, block_lst) {
|
|
Packit Service |
a1bd4f |
if_data *m;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
// each block start with its type & name
|
|
Packit Service |
a1bd4f |
// (single quotes used to show typ & name baoundaries)
|
|
Packit Service |
a1bd4f |
g_print("'%s' '%s'\n", n->type, n->name);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
// each key-value pair within a block is indented & separated by a tab
|
|
Packit Service |
a1bd4f |
// (single quotes used to show type & name boundaries)
|
|
Packit Service |
a1bd4f |
c_list_for_each_entry (m, &n->data_lst_head, data_lst)
|
|
Packit Service |
a1bd4f |
g_print("\t'%s'\t'%s'\n", m->key, m->data);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
// blocks are separated by an empty line
|
|
Packit Service |
a1bd4f |
g_print("\n");
|
|
Packit Service |
a1bd4f |
}
|
|
Packit Service |
a1bd4f |
g_message("##################################################\n");
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static if_parser *
|
|
Packit Service |
a1bd4f |
init_ifparser_with_file(const char *file)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
if_parser * parser;
|
|
Packit Service |
a1bd4f |
gs_free char *tmp = NULL;
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
tmp = g_strdup_printf("%s/%s", TEST_DIR, file);
|
|
Packit Service |
a1bd4f |
parser = ifparser_parse(tmp, 1);
|
|
Packit Service |
a1bd4f |
g_assert(parser);
|
|
Packit Service |
a1bd4f |
return parser;
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test1_ignore_line_before_first_block(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test1");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("auto", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "dhcp"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test2_wrapped_line(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test2");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("auto", "lo");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test3_wrapped_multiline_multiarg(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test3");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("allow-hotplug", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("allow-hotplug", "wlan0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("allow-hotplug", "bnep0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test4_allow_auto_is_auto(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test4");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("auto", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test5_allow_auto_multiarg(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test5");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("allow-hotplug", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("allow-hotplug", "wlan0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test6_mixed_whitespace(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test6");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "lo");
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "loopback"));
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test7_long_line(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test7");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(ifparser_get_num_blocks(parser), ==, 0);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test8_long_line_wrapped(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test8");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(ifparser_get_num_blocks(parser), ==, 0);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test9_wrapped_lines_in_block(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test9");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "static"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("address", "10.250.2.3"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("netmask", "255.255.255.192"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("broadcast", "10.250.2.63"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("gateway", "10.250.2.50"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test11_complex_wrap(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test11");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "pppoe");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "manual"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("pre-up", "/sbin/ifconfig eth0 up"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test12_complex_wrap_split_word(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test12");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "pppoe");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "manual"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("up", "ifup ppp0=dsl"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test13_more_mixed_whitespace(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test13");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "dsl");
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "ppp"));
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test14_mixed_whitespace_block_start(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test14");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "wlan0");
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "manual"));
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "wlan-adpm");
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "dhcp"));
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "wlan-default");
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "dhcp"));
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test15_trailing_space(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test15");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "bnep0");
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "static"));
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test16_missing_newline(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test16");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit Service |
a1bd4f |
expected_add_block(e, expected_block_new("mapping", "eth0"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test17_read_static_ipv4(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
gs_unref_object NMConnection *connection = NULL;
|
|
Packit Service |
a1bd4f |
NMSettingConnection * s_con;
|
|
Packit Service |
a1bd4f |
NMSettingIPConfig * s_ip4;
|
|
Packit Service |
a1bd4f |
NMSettingWired * s_wired;
|
|
Packit Service |
a1bd4f |
NMIPAddress * ip4_addr;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test17-wired-static-verify-ip4");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
connection = _connection_first_from_parser(parser);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
/* ===== CONNECTION SETTING ===== */
|
|
Packit Service |
a1bd4f |
s_con = nm_connection_get_setting_connection(connection);
|
|
Packit Service |
a1bd4f |
g_assert(s_con);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_connection_get_id(s_con), ==, "Ifupdown (eth0)");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
/* ===== WIRED SETTING ===== */
|
|
Packit Service |
a1bd4f |
s_wired = nm_connection_get_setting_wired(connection);
|
|
Packit Service |
a1bd4f |
g_assert(s_wired);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
/* ===== IPv4 SETTING ===== */
|
|
Packit Service |
a1bd4f |
s_ip4 = nm_connection_get_setting_ip4_config(connection);
|
|
Packit Service |
a1bd4f |
g_assert(s_ip4);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_method(s_ip4),
|
|
Packit Service |
a1bd4f |
==,
|
|
Packit Service |
a1bd4f |
NM_SETTING_IP4_CONFIG_METHOD_MANUAL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_setting_ip_config_get_num_addresses(s_ip4), ==, 1);
|
|
Packit Service |
a1bd4f |
ip4_addr = nm_setting_ip_config_get_address(s_ip4, 0);
|
|
Packit Service |
a1bd4f |
g_assert(ip4_addr != NULL);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_ip_address_get_address(ip4_addr), ==, "10.0.0.3");
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_ip_address_get_prefix(ip4_addr), ==, 8);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_setting_ip_config_get_num_dns(s_ip4), ==, 2);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip4, 0), ==, "10.0.0.1");
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip4, 1), ==, "10.0.0.2");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_setting_ip_config_get_num_dns_searches(s_ip4), ==, 2);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns_search(s_ip4, 0), ==, "example.com");
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns_search(s_ip4, 1), ==, "foo.example.com");
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test18_read_static_ipv6(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
gs_unref_object NMConnection *connection = NULL;
|
|
Packit Service |
a1bd4f |
NMSettingConnection * s_con;
|
|
Packit Service |
a1bd4f |
NMSettingIPConfig * s_ip6;
|
|
Packit Service |
a1bd4f |
NMSettingWired * s_wired;
|
|
Packit Service |
a1bd4f |
NMIPAddress * ip6_addr;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test18-wired-static-verify-ip6");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
connection = _connection_first_from_parser(parser);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
/* ===== CONNECTION SETTING ===== */
|
|
Packit Service |
a1bd4f |
s_con = nm_connection_get_setting_connection(connection);
|
|
Packit Service |
a1bd4f |
g_assert(s_con);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_connection_get_id(s_con), ==, "Ifupdown (myip6tunnel)");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
/* ===== WIRED SETTING ===== */
|
|
Packit Service |
a1bd4f |
s_wired = nm_connection_get_setting_wired(connection);
|
|
Packit Service |
a1bd4f |
g_assert(s_wired);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
/* ===== IPv6 SETTING ===== */
|
|
Packit Service |
a1bd4f |
s_ip6 = nm_connection_get_setting_ip6_config(connection);
|
|
Packit Service |
a1bd4f |
g_assert(s_ip6);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_method(s_ip6),
|
|
Packit Service |
a1bd4f |
==,
|
|
Packit Service |
a1bd4f |
NM_SETTING_IP6_CONFIG_METHOD_MANUAL);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_setting_ip_config_get_num_addresses(s_ip6), ==, 1);
|
|
Packit Service |
a1bd4f |
ip6_addr = nm_setting_ip_config_get_address(s_ip6, 0);
|
|
Packit Service |
a1bd4f |
g_assert(ip6_addr != NULL);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_ip_address_get_address(ip6_addr), ==, "fc00::1");
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_ip_address_get_prefix(ip6_addr), ==, 64);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_setting_ip_config_get_num_dns(s_ip6), ==, 2);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip6, 0), ==, "fc00::2");
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns(s_ip6, 1), ==, "fc00::3");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_setting_ip_config_get_num_dns_searches(s_ip6), ==, 2);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns_search(s_ip6, 0), ==, "example.com");
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_setting_ip_config_get_dns_search(s_ip6, 1), ==, "foo.example.com");
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test19_read_static_ipv4_plen(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
gs_unref_object NMConnection *connection = NULL;
|
|
Packit Service |
a1bd4f |
NMSettingIPConfig * s_ip4;
|
|
Packit Service |
a1bd4f |
NMIPAddress * ip4_addr;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser =
|
|
Packit Service |
a1bd4f |
init_ifparser_with_file("test19-wired-static-verify-ip4-plen");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
connection = _connection_first_from_parser(parser);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
/* ===== IPv4 SETTING ===== */
|
|
Packit Service |
a1bd4f |
s_ip4 = nm_connection_get_setting_ip4_config(connection);
|
|
Packit Service |
a1bd4f |
g_assert(s_ip4);
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_setting_ip_config_get_num_addresses(s_ip4), ==, 1);
|
|
Packit Service |
a1bd4f |
ip4_addr = nm_setting_ip_config_get_address(s_ip4, 0);
|
|
Packit Service |
a1bd4f |
g_assert(ip4_addr != NULL);
|
|
Packit Service |
a1bd4f |
g_assert_cmpstr(nm_ip_address_get_address(ip4_addr), ==, "10.0.0.3");
|
|
Packit Service |
a1bd4f |
g_assert_cmpint(nm_ip_address_get_prefix(ip4_addr), ==, 8);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test20_source_stanza(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test20-source-stanza");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
b = expected_block_new("auto", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "dhcp"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
b = expected_block_new("auto", "eth1");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "eth1");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "dhcp"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test21_source_dir_stanza(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test21-source-dir-stanza");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
b = expected_block_new("auto", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "eth0");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "dhcp"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
static void
|
|
Packit Service |
a1bd4f |
test22_duplicate_stanzas(void)
|
|
Packit |
5756e2 |
{
|
|
Packit Service |
a1bd4f |
nm_auto_free_expected Expected *e = NULL;
|
|
Packit Service |
a1bd4f |
ExpectedBlock * b;
|
|
Packit Service |
a1bd4f |
nm_auto_ifparser if_parser *parser = init_ifparser_with_file("test22-duplicate-stanzas");
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
e = expected_new();
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "br10");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "manual"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("bridge-ports", "enp6s0.15"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("bridge-stp", "off"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("bridge-maxwait", "0"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("bridge-fd", "0"));
|
|
Packit Service |
a1bd4f |
b = expected_block_new("iface", "br10");
|
|
Packit Service |
a1bd4f |
expected_add_block(e, b);
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("inet", "auto"));
|
|
Packit Service |
a1bd4f |
expected_block_add_key(b, expected_key_new("bridge-ports", "enp6s0.15"));
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
compare_expected_to_ifparser(parser, e);
|
|
Packit |
5756e2 |
}
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
/*****************************************************************************/
|
|
Packit |
5756e2 |
|
|
Packit Service |
a1bd4f |
NMTST_DEFINE();
|
|
Packit |
5756e2 |
|
|
Packit |
5756e2 |
int
|
|
Packit Service |
a1bd4f |
main(int argc, char **argv)
|
|
Packit Service |
a1bd4f |
{
|
|
Packit Service |
a1bd4f |
nmtst_init_assert_logging(&argc, &argv, "WARN", "DEFAULT");
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
(void) dump_blocks;
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/ignore_line_before_first_block",
|
|
Packit Service |
a1bd4f |
test1_ignore_line_before_first_block);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/wrapped_line", test2_wrapped_line);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/wrapped_multiline_multiarg", test3_wrapped_multiline_multiarg);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/allow_auto_is_auto", test4_allow_auto_is_auto);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/allow_auto_multiarg", test5_allow_auto_multiarg);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/mixed_whitespace", test6_mixed_whitespace);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/long_line", test7_long_line);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/long_line_wrapped", test8_long_line_wrapped);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/wrapped_lines_in_block", test9_wrapped_lines_in_block);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/complex_wrap", test11_complex_wrap);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/complex_wrap_split_word", test12_complex_wrap_split_word);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/more_mixed_whitespace", test13_more_mixed_whitespace);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/mixed_whitespace_block_start", test14_mixed_whitespace_block_start);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/trailing_space", test15_trailing_space);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/missing_newline", test16_missing_newline);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/read_static_ipv4", test17_read_static_ipv4);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/read_static_ipv6", test18_read_static_ipv6);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/read_static_ipv4_plen", test19_read_static_ipv4_plen);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/source_stanza", test20_source_stanza);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/source_dir_stanza", test21_source_dir_stanza);
|
|
Packit Service |
a1bd4f |
g_test_add_func("/ifupdate/test22-duplicate-stanzas", test22_duplicate_stanzas);
|
|
Packit Service |
a1bd4f |
|
|
Packit Service |
a1bd4f |
return g_test_run();
|
|
Packit |
5756e2 |
}
|