]> git.proxmox.com Git - mirror_frr.git/blame - tests/isisd/test_isis_vertex_queue.c
Merge pull request #12654 from Pdoijode/evpn-evi-detail-json-changes
[mirror_frr.git] / tests / isisd / test_isis_vertex_queue.c
CommitLineData
5d30de83
CF
1#include <zebra.h>
2
3#include "isisd/isis_spf.c"
4
52a7c25e 5#include "test_common.h"
76e292f9 6
5d30de83
CF
7static struct isis_vertex **vertices;
8static size_t vertex_count;
9
10static void setup_test_vertices(void)
11{
686afe9f
CF
12 struct isis_spftree t = {
13 };
f6ae63ca 14 struct prefix_pair p = {
5d30de83 15 };
f6ae63ca 16 uint8_t node_id[7];
5d30de83
CF
17
18 vertices = XMALLOC(MTYPE_TMP, sizeof(*vertices) * 16);
19
f6ae63ca
CF
20 p.dest.family = AF_INET;
21 p.dest.prefixlen = 24;
22 inet_pton(AF_INET, "192.168.1.0", &p.dest.u.prefix4);
23 vertices[vertex_count] = isis_vertex_new(&t, &p, VTYPE_IPREACH_TE);
5d30de83
CF
24 vertices[vertex_count]->d_N = 20;
25 vertex_count++;
26
f6ae63ca
CF
27 p.dest.family = AF_INET;
28 p.dest.prefixlen = 24;
29 inet_pton(AF_INET, "192.168.2.0", &p.dest.u.prefix4);
30 vertices[vertex_count] = isis_vertex_new(&t, &p, VTYPE_IPREACH_TE);
5d30de83
CF
31 vertices[vertex_count]->d_N = 20;
32 vertex_count++;
33
f6ae63ca
CF
34 memset(node_id, 0, sizeof(node_id));
35 node_id[6] = 1;
36 vertices[vertex_count] = isis_vertex_new(&t, node_id,
686afe9f 37 VTYPE_PSEUDO_TE_IS);
5d30de83
CF
38 vertices[vertex_count]->d_N = 15;
39 vertex_count++;
40
f6ae63ca
CF
41 memset(node_id, 0, sizeof(node_id));
42 node_id[5] = 2;
43 vertices[vertex_count] = isis_vertex_new(&t, node_id,
686afe9f 44 VTYPE_NONPSEUDO_TE_IS);
5d30de83
CF
45 vertices[vertex_count]->d_N = 15;
46 vertex_count++;
47
f6ae63ca
CF
48 p.dest.family = AF_INET;
49 p.dest.prefixlen = 24;
50 inet_pton(AF_INET, "192.168.3.0", &p.dest.u.prefix4);
51 vertices[vertex_count] = isis_vertex_new(&t, &p, VTYPE_IPREACH_TE);
5d30de83
CF
52 vertices[vertex_count]->d_N = 20;
53 vertex_count++;
54};
55
56static void cleanup_test_vertices(void)
57{
58 for (size_t i = 0; i < vertex_count; i++)
59 isis_vertex_del(vertices[i]);
60 XFREE(MTYPE_TMP, vertices);
61 vertex_count = 0;
62}
63
64static void test_ordered(void)
65{
66 struct isis_vertex_queue q;
67
68 isis_vertex_queue_init(&q, NULL, true);
69 for (size_t i = 0; i < vertex_count; i++)
70 isis_vertex_queue_insert(&q, vertices[i]);
71
72 assert(isis_vertex_queue_count(&q) == vertex_count);
73
74 for (size_t i = 0; i < vertex_count; i++) {
a2ddc2a6 75 assert(isis_find_vertex(&q, &vertices[i]->N, vertices[i]->type) == vertices[i]);
5d30de83
CF
76 }
77
78 assert(isis_vertex_queue_pop(&q) == vertices[2]);
a2ddc2a6 79 assert(isis_find_vertex(&q, &vertices[2]->N, vertices[2]->type) == NULL);
5d30de83
CF
80
81 assert(isis_vertex_queue_pop(&q) == vertices[3]);
a2ddc2a6 82 assert(isis_find_vertex(&q, &vertices[3]->N, vertices[3]->type) == NULL);
5d30de83
CF
83
84 assert(isis_vertex_queue_pop(&q) == vertices[0]);
a2ddc2a6 85 assert(isis_find_vertex(&q, &vertices[0]->N, vertices[0]->type) == NULL);
5d30de83
CF
86
87 assert(isis_vertex_queue_pop(&q) == vertices[1]);
a2ddc2a6 88 assert(isis_find_vertex(&q, &vertices[1]->N, vertices[1]->type) == NULL);
5d30de83 89
60d39142 90 isis_vertex_queue_delete(&q, vertices[4]);
a2ddc2a6 91 assert(isis_find_vertex(&q, &vertices[4]->N, vertices[4]->type) == NULL);
5d30de83
CF
92
93 assert(isis_vertex_queue_count(&q) == 0);
94 assert(isis_vertex_queue_pop(&q) == NULL);
95
96 isis_vertex_queue_free(&q);
97}
98
99int main(int argc, char **argv)
100{
101 setup_test_vertices();
102 test_ordered();
103 cleanup_test_vertices();
104
105 return 0;
106}