Skip to content

Commit b572fcd

Browse files
committed
sysrepo-plugin-interfaces: add unit tests
1 parent abd6f2f commit b572fcd

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

src/interfaces/tests/interfaces_utest.c

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,23 @@
22
#include <setjmp.h>
33
#include <stddef.h>
44
#include <cmocka.h>
5+
#include <stdint.h>
56
#include <string.h>
67
#include <errno.h>
8+
#include <sys/types.h>
79
#include <unistd.h>
810

911
/* load api */
1012
#include "plugin/api/interfaces/load.h"
1113

1214
/* interfaces hash table state */
15+
#include "plugin/data/interfaces/interface/ipv4/address.h"
16+
#include "plugin/data/interfaces/interface/ipv6/address.h"
1317
#include "plugin/data/interfaces/interface_state.h"
1418

1519
/* interfaces interface linked list */
1620
#include "plugin/data/interfaces/interface/linked_list.h"
21+
#include "plugin/types.h"
1722

1823
/* init functionality */
1924
static int setup(void **state);
@@ -43,12 +48,22 @@ static void test_interface_list_element_new_ipv4_neighbor_correct(void **state);
4348
static void test_interface_ipv4_address_netmask2prefix_correct(void **state);
4449
static void test_interface_ipv4_address_netmask2prefix_incorrect(void **state);
4550

51+
static void test_interface_ipv4_address_set_ip_correct(void **state);
52+
static void test_interface_ipv4_address_set_prefix_length_correct(void **state);
53+
static void test_interface_ipv4_address_set_netmask_correct(void **state);
54+
4655
/*** ipv6 ***/
4756
static void test_interface_list_new_ipv6_address_correct(void **state);
4857
static void test_interface_list_new_ipv6_neighbor_correct(void **state);
4958
static void test_interface_list_element_new_ipv6_address_correct(void **state);
5059
static void test_interface_list_element_new_ipv6_neighbor_correct(void **state);
5160

61+
static void test_interface_ipv6_address_set_ip_correct(void **state);
62+
static void test_interface_ipv6_address_set_prefix_length_correct(void **state);
63+
static void test_interface_ipv6_address_element_set_correct(void **state);
64+
65+
66+
5267
/** load **/
5368
static void test_correct_load_interface(void **state);
5469

@@ -75,11 +90,17 @@ int main(void)
7590
cmocka_unit_test(test_interface_list_element_new_ipv4_neighbor_correct),
7691
cmocka_unit_test(test_interface_ipv4_address_netmask2prefix_correct),
7792
cmocka_unit_test(test_interface_ipv4_address_netmask2prefix_incorrect),
93+
cmocka_unit_test(test_interface_ipv4_address_set_ip_correct),
94+
cmocka_unit_test(test_interface_ipv4_address_set_prefix_length_correct),
95+
cmocka_unit_test(test_interface_ipv4_address_set_netmask_correct),
7896
/*** ipv6 ***/
7997
cmocka_unit_test(test_interface_list_new_ipv6_address_correct),
8098
cmocka_unit_test(test_interface_list_new_ipv6_neighbor_correct),
8199
cmocka_unit_test(test_interface_list_element_new_ipv6_address_correct),
82100
cmocka_unit_test(test_interface_list_element_new_ipv6_neighbor_correct),
101+
cmocka_unit_test(test_interface_ipv6_address_set_ip_correct),
102+
cmocka_unit_test(test_interface_ipv6_address_set_prefix_length_correct),
103+
cmocka_unit_test(test_interface_ipv6_address_element_set_correct)
83104
};
84105

85106
return cmocka_run_group_tests(tests, setup, teardown);
@@ -436,6 +457,63 @@ static void test_interface_ipv4_address_netmask2prefix_incorrect(void **state)
436457
assert_int_not_equal(rc, 0);
437458
}
438459

460+
static void test_interface_ipv4_address_set_ip_correct(void **state)
461+
{
462+
(void) state;
463+
const char *ip = "127.0.0.1";
464+
465+
interfaces_interface_ipv4_address_element_t *address;
466+
467+
address = interfaces_interface_ipv4_address_new();
468+
assert_null(address);
469+
470+
address = interfaces_interface_ipv4_address_element_new();
471+
assert_non_null(address);
472+
473+
interfaces_interface_ipv4_address_element_set_ip(&address, ip);
474+
assert_string_equal(address->address.ip, ip);
475+
}
476+
477+
static void test_interface_ipv4_address_set_prefix_length_correct(void **state)
478+
{
479+
(void) state;
480+
uint8_t prefix_length = 16;
481+
482+
interfaces_interface_ipv4_address_element_t *address;
483+
484+
address = interfaces_interface_ipv4_address_new();
485+
assert_null(address);
486+
487+
address = interfaces_interface_ipv4_address_element_new();
488+
assert_non_null(address);
489+
490+
interfaces_interface_ipv4_address_element_set_prefix_length(&address, prefix_length);
491+
assert_int_equal(address->address.subnet.prefix_length, prefix_length);
492+
assert_int_equal(address->address.subnet_type, interfaces_interface_ipv4_address_subnet_prefix_length);
493+
494+
}
495+
496+
static void test_interface_ipv4_address_set_netmask_correct(void **state)
497+
{
498+
(void) state;
499+
int rc = 0;
500+
const char *netmask = "255.255.0.0";
501+
502+
interfaces_interface_ipv4_address_element_t *address;
503+
504+
address = interfaces_interface_ipv4_address_new();
505+
assert_null(address);
506+
507+
address = interfaces_interface_ipv4_address_element_new();
508+
assert_non_null(address);
509+
510+
rc = interfaces_interface_ipv4_address_element_set_netmask(&address, netmask);
511+
assert_int_equal(rc, 0);
512+
assert_string_equal(address->address.subnet.netmask, netmask);
513+
assert_int_equal(address->address.subnet_type, interfaces_interface_ipv4_address_subnet_netmask);
514+
}
515+
516+
439517
static void test_interface_list_new_ipv6_address_correct(void **state)
440518
{
441519
(void) state;
@@ -487,3 +565,60 @@ static void test_interface_list_element_new_ipv6_neighbor_correct(void **state)
487565
interfaces_interface_ipv6_neighbor_element_free(&neighbor);
488566
assert_null(neighbor);
489567
}
568+
569+
static void test_interface_ipv6_address_set_ip_correct(void **state)
570+
{
571+
(void) state;
572+
const char* ip = "0:0:0:0:0:0:0:1";
573+
574+
interfaces_interface_ipv6_address_element_t *address;
575+
576+
address = interfaces_interface_ipv6_address_new();
577+
assert_null(address);
578+
579+
address = interfaces_interface_ipv6_address_element_new();
580+
assert_non_null(address);
581+
582+
interfaces_interface_ipv6_address_element_set_ip(&address, ip);
583+
assert_string_equal(address->address.ip, ip);
584+
}
585+
586+
static void test_interface_ipv6_address_set_prefix_length_correct(void **state)
587+
{
588+
(void) state;
589+
uint8_t prefix_length = 64;
590+
591+
interfaces_interface_ipv6_address_element_t *address;
592+
593+
address = interfaces_interface_ipv6_address_new();
594+
assert_null(address);
595+
596+
address = interfaces_interface_ipv6_address_element_new();
597+
assert_non_null(address);
598+
599+
interfaces_interface_ipv6_address_element_set_prefix_length(&address, prefix_length);
600+
assert_int_equal(address->address.prefix_length, prefix_length);
601+
}
602+
603+
static void test_interface_ipv6_address_element_set_correct(void **state)
604+
{
605+
(void) state;
606+
int rc = 0;
607+
608+
interfaces_interface_ipv6_address_element_t *address_src;
609+
interfaces_interface_ipv6_address_element_t *address_dst;
610+
611+
address_src = interfaces_interface_ipv6_address_new();
612+
assert_null(address_src);
613+
address_dst = interfaces_interface_ipv6_address_new();
614+
assert_null(address_dst);
615+
616+
617+
address_src = interfaces_interface_ipv6_address_element_new();
618+
assert_non_null(address_src);
619+
address_dst = interfaces_interface_ipv6_address_element_new();
620+
assert_non_null(address_dst);
621+
622+
rc = interfaces_interface_ipv6_address_element_set(&address_src, &address_dst);
623+
assert_int_equal(rc, 0);
624+
}

0 commit comments

Comments
 (0)