Skip to content

Commit e14676d

Browse files
sedmichaLukas Hutak
authored andcommitted
Iemgr: Add tests for aliases and mappings
1 parent 25437c4 commit e14676d

25 files changed

Lines changed: 781 additions & 0 deletions

tests/unit_tests/iemgr/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ unit_tests_register_test(iemgr_read.cpp iemgr_common.h)
99
unit_tests_register_test(iemgr_find.cpp iemgr_common.h)
1010
unit_tests_register_test(iemgr_err.cpp iemgr_common.h)
1111
unit_tests_register_test(iemgr_add.cpp iemgr_common.h)
12+
unit_tests_register_test(iemgr_alias.cpp iemgr_common.h)
13+
unit_tests_register_test(iemgr_mapping.cpp iemgr_common.h)
1214

1315
file(COPY test_files DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
#include <gtest/gtest.h>
2+
#include <libfds.h>
3+
#include "iemgr_common.h"
4+
5+
TEST_F(Fill, alias_valid)
6+
{
7+
EXPECT_EQ(fds_iemgr_alias_read_file(mgr, FILES_VALID "aliases.xml"), FDS_OK);
8+
EXPECT_NO_ERROR;
9+
10+
EXPECT_NE(fds_iemgr_alias_find(mgr, "ac"), nullptr);
11+
EXPECT_NE(fds_iemgr_alias_find(mgr, "ca"), nullptr);
12+
EXPECT_NE(fds_iemgr_alias_find(mgr, "d"), nullptr);
13+
EXPECT_EQ(fds_iemgr_alias_find(mgr, "a"), nullptr);
14+
EXPECT_EQ(fds_iemgr_alias_find(mgr, "b"), nullptr);
15+
EXPECT_EQ(fds_iemgr_alias_find(mgr, "c"), nullptr);
16+
17+
auto *alias_ac = fds_iemgr_alias_find(mgr, "ac");
18+
ASSERT_NE(alias_ac, nullptr);
19+
auto *elem_a = fds_iemgr_elem_find_name(mgr, "iana:a");
20+
ASSERT_NE(elem_a, nullptr);
21+
auto *elem_c = fds_iemgr_elem_find_name(mgr, "iana:c");
22+
ASSERT_NE(elem_c, nullptr);
23+
auto *alias_d = fds_iemgr_alias_find(mgr, "d");
24+
ASSERT_NE(alias_d, nullptr);
25+
auto *elem_d = fds_iemgr_elem_find_name(mgr, "iana:d");
26+
ASSERT_NE(elem_d, nullptr);
27+
28+
EXPECT_EQ(alias_ac->sources_cnt, 2);
29+
EXPECT_EQ(alias_ac->sources[0], elem_a);
30+
EXPECT_EQ(alias_ac->sources[1], elem_c);
31+
32+
EXPECT_EQ(alias_d->sources_cnt, 1);
33+
EXPECT_EQ(alias_d->sources[0], elem_d);
34+
35+
EXPECT_EQ(elem_a->aliases_cnt, 1);
36+
EXPECT_EQ(elem_a->aliases[0], alias_ac);
37+
EXPECT_EQ(elem_c->aliases_cnt, 1);
38+
EXPECT_EQ(elem_c->aliases[0], alias_ac);
39+
40+
EXPECT_EQ(elem_d->aliases_cnt, 1);
41+
EXPECT_EQ(elem_d->aliases[0], alias_d);
42+
43+
auto *elem_e = fds_iemgr_elem_find_name(mgr, "iana:e");
44+
ASSERT_NE(elem_e, nullptr);
45+
EXPECT_EQ(elem_e->aliases_cnt, 0);
46+
}
47+
48+
TEST_F(Fill, alias_duplicate)
49+
{
50+
EXPECT_NE(fds_iemgr_alias_read_file(mgr, FILES_INVALID "alias_duplicate.xml"), FDS_OK);
51+
EXPECT_ERROR;
52+
}
53+
54+
TEST_F(Fill, alias_invalid_name_chars)
55+
{
56+
EXPECT_NE(fds_iemgr_alias_read_file(mgr, FILES_INVALID "alias_invalid_name_chars.xml"), FDS_OK);
57+
EXPECT_ERROR;
58+
}
59+
60+
TEST_F(Fill, alias_invalid_name_spaces)
61+
{
62+
EXPECT_NE(fds_iemgr_alias_read_file(mgr, FILES_INVALID "alias_invalid_name_spaces.xml"), FDS_OK);
63+
EXPECT_ERROR;
64+
}
65+
66+
TEST_F(Fill, alias_empty_name)
67+
{
68+
EXPECT_NE(fds_iemgr_alias_read_file(mgr, FILES_INVALID "alias_empty_name.xml"), FDS_OK);
69+
EXPECT_ERROR;
70+
}
71+
72+
TEST_F(Fill, alias_empty_sources)
73+
{
74+
EXPECT_NE(fds_iemgr_alias_read_file(mgr, FILES_INVALID "alias_empty_sources.xml"), FDS_OK);
75+
EXPECT_ERROR;
76+
}

tests/unit_tests/iemgr/iemgr_common.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,21 @@ class Fill: public ::testing::Test
5757
fds_iemgr_destroy(mgr);
5858
}
5959
};
60+
61+
/**
62+
* \brief Manager is created and filled with individual scope and aliases
63+
*/
64+
class FillAndAlias: public ::testing::Test
65+
{
66+
protected:
67+
fds_iemgr_t* mgr = nullptr;
68+
void SetUp() override {
69+
mgr = fds_iemgr_create();
70+
fds_iemgr_read_file(mgr, FILES_VALID "individual.xml", true);
71+
fds_iemgr_alias_read_file(mgr, FILES_VALID "aliases.xml");
72+
}
73+
74+
void TearDown() override {
75+
fds_iemgr_destroy(mgr);
76+
}
77+
};
Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
#include <gtest/gtest.h>
2+
#include <libfds.h>
3+
#include "iemgr_common.h"
4+
5+
TEST_F(FillAndAlias, mapping_valid)
6+
{
7+
EXPECT_EQ(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings.xml"), FDS_OK);
8+
EXPECT_NO_ERROR;
9+
10+
auto *elem_e = fds_iemgr_elem_find_name(mgr, "iana:e");
11+
ASSERT_NE(elem_e, nullptr);
12+
auto *elem_a = fds_iemgr_elem_find_name(mgr, "iana:a");
13+
ASSERT_NE(elem_a, nullptr);
14+
auto *elem_c = fds_iemgr_elem_find_name(mgr, "iana:c");
15+
ASSERT_NE(elem_c, nullptr);
16+
17+
EXPECT_EQ(elem_e->mappings_cnt, 1);
18+
EXPECT_EQ(elem_e->mappings[0]->items_cnt, 2);
19+
EXPECT_EQ(elem_e->mappings[0]->items[0].value.i, 1);
20+
EXPECT_EQ(elem_e->mappings[0]->items[1].value.i, 2);
21+
22+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "val1"), nullptr);
23+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "val1"), nullptr);
24+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "Val1"), nullptr);
25+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "VAL1"), nullptr);
26+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "VAL2"), nullptr);
27+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "Val2"), nullptr);
28+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "val2"), nullptr);
29+
30+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "iana:e", "val1")->value.i, 1);
31+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "iana:e", "val2")->value.i, 2);
32+
33+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "ac", "val3"), nullptr);
34+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "ca", "val3"), nullptr);
35+
36+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "aca", "val3"), nullptr);
37+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "caca", "val3"), nullptr);
38+
39+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "val1"), nullptr);
40+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "val2"), nullptr);
41+
42+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ca", "val1"), nullptr);
43+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ca", "val2"), nullptr);
44+
45+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "Val3"), nullptr);
46+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "VAL3"), nullptr);
47+
48+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "val3")->value.i, 3);
49+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ca", "val3")->value.i, 3);
50+
51+
EXPECT_EQ(elem_a->mappings_cnt, 1);
52+
EXPECT_EQ(elem_a->mappings[0]->items_cnt, 1);
53+
EXPECT_EQ(elem_a->mappings[0]->items[0].value.i, 3);
54+
EXPECT_EQ(elem_c->mappings_cnt, 1);
55+
EXPECT_EQ(elem_c->mappings[0]->items_cnt, 1);
56+
EXPECT_EQ(elem_c->mappings[0]->items[0].value.i, 3);
57+
}
58+
59+
TEST_F(FillAndAlias, mappings_blank_match)
60+
{
61+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_blank_match.xml"), FDS_OK);
62+
EXPECT_ERROR;
63+
}
64+
65+
TEST_F(FillAndAlias, mappings_invalid_key_blank)
66+
{
67+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_invalid_key_blank.xml"), FDS_OK);
68+
EXPECT_ERROR;
69+
}
70+
71+
TEST_F(FillAndAlias, mappings_invalid_key_chars)
72+
{
73+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_invalid_key_chars.xml"), FDS_OK);
74+
EXPECT_ERROR;
75+
}
76+
77+
TEST_F(FillAndAlias, mappings_invalid_key_space)
78+
{
79+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_invalid_key_space.xml"), FDS_OK);
80+
EXPECT_ERROR;
81+
}
82+
83+
TEST_F(FillAndAlias, mappings_invalid_match)
84+
{
85+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_invalid_match.xml"), FDS_OK);
86+
EXPECT_ERROR;
87+
}
88+
89+
TEST_F(FillAndAlias, mappings_invalid_value)
90+
{
91+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_invalid_value.xml"), FDS_OK);
92+
EXPECT_ERROR;
93+
}
94+
95+
TEST_F(FillAndAlias, mappings_no_match)
96+
{
97+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_no_match.xml"), FDS_OK);
98+
EXPECT_ERROR;
99+
}
100+
101+
TEST_F(FillAndAlias, mappings_nonexistent)
102+
{
103+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_nonexistent.xml"), FDS_OK);
104+
EXPECT_ERROR;
105+
}
106+
107+
TEST_F(FillAndAlias, mappings_duplicate)
108+
{
109+
EXPECT_NE(fds_iemgr_mapping_read_file(mgr, FILES_VALID "mappings_duplicate.xml"), FDS_OK);
110+
EXPECT_ERROR;
111+
}

tests/unit_tests/iemgr/iemgr_read.cpp

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,3 +462,87 @@ TEST_F(Mgr, dir_double)
462462
EXPECT_NE(fds_iemgr_read_dir(mgr, FILES_INVALID "multiple_user"), FDS_OK);
463463
EXPECT_ERROR;
464464
}
465+
466+
TEST_F(Mgr, dir_alias_mapping)
467+
{
468+
EXPECT_EQ(fds_iemgr_read_dir(mgr, FILES_VALID "readdir_alias_mapping"), FDS_OK);
469+
EXPECT_NO_ERROR;
470+
471+
EXPECT_NE(fds_iemgr_alias_find(mgr, "ac"), nullptr);
472+
EXPECT_NE(fds_iemgr_alias_find(mgr, "ca"), nullptr);
473+
EXPECT_NE(fds_iemgr_alias_find(mgr, "d"), nullptr);
474+
EXPECT_EQ(fds_iemgr_alias_find(mgr, "a"), nullptr);
475+
EXPECT_EQ(fds_iemgr_alias_find(mgr, "b"), nullptr);
476+
EXPECT_EQ(fds_iemgr_alias_find(mgr, "c"), nullptr);
477+
478+
auto *alias_ac = fds_iemgr_alias_find(mgr, "ac");
479+
ASSERT_NE(alias_ac, nullptr);
480+
auto *alias_d = fds_iemgr_alias_find(mgr, "d");
481+
ASSERT_NE(alias_d, nullptr);
482+
auto *elem_a = fds_iemgr_elem_find_name(mgr, "iana:a");
483+
ASSERT_NE(elem_a, nullptr);
484+
auto *elem_c = fds_iemgr_elem_find_name(mgr, "iana:c");
485+
ASSERT_NE(elem_c, nullptr);
486+
auto *elem_d = fds_iemgr_elem_find_name(mgr, "iana:d");
487+
ASSERT_NE(elem_d, nullptr);
488+
auto *elem_e = fds_iemgr_elem_find_name(mgr, "iana:e");
489+
ASSERT_NE(elem_e, nullptr);
490+
491+
EXPECT_EQ(alias_ac->sources_cnt, 2);
492+
EXPECT_EQ(alias_ac->sources[0], elem_a);
493+
EXPECT_EQ(alias_ac->sources[1], elem_c);
494+
495+
EXPECT_EQ(alias_d->sources_cnt, 1);
496+
EXPECT_EQ(alias_d->sources[0], elem_d);
497+
498+
EXPECT_EQ(elem_a->aliases_cnt, 1);
499+
EXPECT_EQ(elem_a->aliases[0], alias_ac);
500+
EXPECT_EQ(elem_c->aliases_cnt, 1);
501+
EXPECT_EQ(elem_c->aliases[0], alias_ac);
502+
503+
EXPECT_EQ(elem_d->aliases_cnt, 1);
504+
EXPECT_EQ(elem_d->aliases[0], alias_d);
505+
506+
EXPECT_EQ(elem_e->aliases_cnt, 0);
507+
508+
EXPECT_EQ(elem_e->mappings_cnt, 1);
509+
EXPECT_EQ(elem_e->mappings[0]->items_cnt, 2);
510+
EXPECT_EQ(elem_e->mappings[0]->items[0].value.i, 1);
511+
EXPECT_EQ(elem_e->mappings[0]->items[1].value.i, 2);
512+
513+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "val1"), nullptr);
514+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "val1"), nullptr);
515+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "Val1"), nullptr);
516+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "VAL1"), nullptr);
517+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "VAL2"), nullptr);
518+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "Val2"), nullptr);
519+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "iana:e", "val2"), nullptr);
520+
521+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "iana:e", "val1")->value.i, 1);
522+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "iana:e", "val2")->value.i, 2);
523+
524+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "ac", "val3"), nullptr);
525+
EXPECT_NE(fds_iemgr_mapping_find(mgr, "ca", "val3"), nullptr);
526+
527+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "aca", "val3"), nullptr);
528+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "caca", "val3"), nullptr);
529+
530+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "val1"), nullptr);
531+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "val2"), nullptr);
532+
533+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ca", "val1"), nullptr);
534+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ca", "val2"), nullptr);
535+
536+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "Val3"), nullptr);
537+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "VAL3"), nullptr);
538+
539+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ac", "val3")->value.i, 3);
540+
EXPECT_EQ(fds_iemgr_mapping_find(mgr, "ca", "val3")->value.i, 3);
541+
542+
EXPECT_EQ(elem_a->mappings_cnt, 1);
543+
EXPECT_EQ(elem_a->mappings[0]->items_cnt, 1);
544+
EXPECT_EQ(elem_a->mappings[0]->items[0].value.i, 3);
545+
EXPECT_EQ(elem_c->mappings_cnt, 1);
546+
EXPECT_EQ(elem_c->mappings[0]->items_cnt, 1);
547+
EXPECT_EQ(elem_c->mappings[0]->items[0].value.i, 3);
548+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ipfix-aliases>
3+
<element>
4+
<name>AC</name>
5+
6+
<alias>ac</alias>
7+
<alias>ca</alias>
8+
9+
<source>
10+
<id>iana:a</id>
11+
<id>iana:c</id>
12+
</source>
13+
</element>
14+
15+
<element>
16+
<name>AC</name>
17+
18+
<alias>ac</alias>
19+
<alias>ca</alias>
20+
21+
<source>
22+
<id>iana:a</id>
23+
<id>iana:c</id>
24+
</source>
25+
</element>
26+
27+
</ipfix-aliases>
28+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ipfix-aliases>
3+
<element>
4+
<name>AC</name>
5+
6+
<alias></alias>
7+
8+
<source>
9+
<id>iana:a</id>
10+
<id>iana:c</id>
11+
</source>
12+
</element>
13+
</ipfix-aliases>
14+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ipfix-aliases>
3+
<element>
4+
<name>AC</name>
5+
6+
<alias>ac</alias>
7+
8+
<source>
9+
</source>
10+
</element>
11+
</ipfix-aliases>
12+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ipfix-aliases>
3+
<element>
4+
<name>AC</name>
5+
6+
<alias>a@c:</alias>
7+
8+
<source>
9+
<id>iana:a</id>
10+
<id>iana:c</id>
11+
</source>
12+
</element>
13+
</ipfix-aliases>
14+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ipfix-aliases>
3+
<element>
4+
<name>AC</name>
5+
6+
<alias>a c</alias>
7+
8+
<source>
9+
<id>iana:a</id>
10+
<id>iana:c</id>
11+
</source>
12+
</element>
13+
</ipfix-aliases>
14+

0 commit comments

Comments
 (0)