]>
git.proxmox.com Git - mirror_frr.git/blob - tests/isisd/test_isis_vertex_queue.c
3 #include "isisd/isis_spf.c"
5 #include "test_common.h"
7 static struct isis_vertex
**vertices
;
8 static size_t vertex_count
;
10 static void setup_test_vertices(void)
12 struct isis_spftree t
= {
14 struct prefix_pair p
= {
18 vertices
= XMALLOC(MTYPE_TMP
, sizeof(*vertices
) * 16);
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
);
24 vertices
[vertex_count
]->d_N
= 20;
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
);
31 vertices
[vertex_count
]->d_N
= 20;
34 memset(node_id
, 0, sizeof(node_id
));
36 vertices
[vertex_count
] = isis_vertex_new(&t
, node_id
,
38 vertices
[vertex_count
]->d_N
= 15;
41 memset(node_id
, 0, sizeof(node_id
));
43 vertices
[vertex_count
] = isis_vertex_new(&t
, node_id
,
44 VTYPE_NONPSEUDO_TE_IS
);
45 vertices
[vertex_count
]->d_N
= 15;
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
);
52 vertices
[vertex_count
]->d_N
= 20;
56 static void cleanup_test_vertices(void)
58 for (size_t i
= 0; i
< vertex_count
; i
++)
59 isis_vertex_del(vertices
[i
]);
60 XFREE(MTYPE_TMP
, vertices
);
64 static void test_ordered(void)
66 struct isis_vertex_queue q
;
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
]);
72 assert(isis_vertex_queue_count(&q
) == vertex_count
);
74 for (size_t i
= 0; i
< vertex_count
; i
++) {
75 assert(isis_find_vertex(&q
, &vertices
[i
]->N
, vertices
[i
]->type
) == vertices
[i
]);
78 assert(isis_vertex_queue_pop(&q
) == vertices
[2]);
79 assert(isis_find_vertex(&q
, &vertices
[2]->N
, vertices
[2]->type
) == NULL
);
81 assert(isis_vertex_queue_pop(&q
) == vertices
[3]);
82 assert(isis_find_vertex(&q
, &vertices
[3]->N
, vertices
[3]->type
) == NULL
);
84 assert(isis_vertex_queue_pop(&q
) == vertices
[0]);
85 assert(isis_find_vertex(&q
, &vertices
[0]->N
, vertices
[0]->type
) == NULL
);
87 assert(isis_vertex_queue_pop(&q
) == vertices
[1]);
88 assert(isis_find_vertex(&q
, &vertices
[1]->N
, vertices
[1]->type
) == NULL
);
90 isis_vertex_queue_delete(&q
, vertices
[4]);
91 assert(isis_find_vertex(&q
, &vertices
[4]->N
, vertices
[4]->type
) == NULL
);
93 assert(isis_vertex_queue_count(&q
) == 0);
94 assert(isis_vertex_queue_pop(&q
) == NULL
);
96 isis_vertex_queue_free(&q
);
99 int main(int argc
, char **argv
)
101 setup_test_vertices();
103 cleanup_test_vertices();