3 #include "isisd/isis_spf.c"
5 struct thread_master
*master
;
6 int isis_sock_init(struct isis_circuit
*circuit
);
7 int isis_sock_init(struct isis_circuit
*circuit
)
12 struct zebra_privs_t isisd_privs
;
14 static struct isis_vertex
**vertices
;
15 static size_t vertex_count
;
17 static void setup_test_vertices(void)
19 struct isis_spftree t
= {
21 struct prefix_pair p
= {
25 vertices
= XMALLOC(MTYPE_TMP
, sizeof(*vertices
) * 16);
27 p
.dest
.family
= AF_INET
;
28 p
.dest
.prefixlen
= 24;
29 inet_pton(AF_INET
, "192.168.1.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 p
.dest
.family
= AF_INET
;
35 p
.dest
.prefixlen
= 24;
36 inet_pton(AF_INET
, "192.168.2.0", &p
.dest
.u
.prefix4
);
37 vertices
[vertex_count
] = isis_vertex_new(&t
, &p
, VTYPE_IPREACH_TE
);
38 vertices
[vertex_count
]->d_N
= 20;
41 memset(node_id
, 0, sizeof(node_id
));
43 vertices
[vertex_count
] = isis_vertex_new(&t
, node_id
,
45 vertices
[vertex_count
]->d_N
= 15;
48 memset(node_id
, 0, sizeof(node_id
));
50 vertices
[vertex_count
] = isis_vertex_new(&t
, node_id
,
51 VTYPE_NONPSEUDO_TE_IS
);
52 vertices
[vertex_count
]->d_N
= 15;
55 p
.dest
.family
= AF_INET
;
56 p
.dest
.prefixlen
= 24;
57 inet_pton(AF_INET
, "192.168.3.0", &p
.dest
.u
.prefix4
);
58 vertices
[vertex_count
] = isis_vertex_new(&t
, &p
, VTYPE_IPREACH_TE
);
59 vertices
[vertex_count
]->d_N
= 20;
63 static void cleanup_test_vertices(void)
65 for (size_t i
= 0; i
< vertex_count
; i
++)
66 isis_vertex_del(vertices
[i
]);
67 XFREE(MTYPE_TMP
, vertices
);
71 static void test_ordered(void)
73 struct isis_vertex_queue q
;
75 isis_vertex_queue_init(&q
, NULL
, true);
76 for (size_t i
= 0; i
< vertex_count
; i
++)
77 isis_vertex_queue_insert(&q
, vertices
[i
]);
79 assert(isis_vertex_queue_count(&q
) == vertex_count
);
81 for (size_t i
= 0; i
< vertex_count
; i
++) {
82 assert(isis_find_vertex(&q
, &vertices
[i
]->N
, vertices
[i
]->type
) == vertices
[i
]);
85 assert(isis_vertex_queue_pop(&q
) == vertices
[2]);
86 assert(isis_find_vertex(&q
, &vertices
[2]->N
, vertices
[2]->type
) == NULL
);
88 assert(isis_vertex_queue_pop(&q
) == vertices
[3]);
89 assert(isis_find_vertex(&q
, &vertices
[3]->N
, vertices
[3]->type
) == NULL
);
91 assert(isis_vertex_queue_pop(&q
) == vertices
[0]);
92 assert(isis_find_vertex(&q
, &vertices
[0]->N
, vertices
[0]->type
) == NULL
);
94 assert(isis_vertex_queue_pop(&q
) == vertices
[1]);
95 assert(isis_find_vertex(&q
, &vertices
[1]->N
, vertices
[1]->type
) == NULL
);
97 isis_vertex_queue_delete(&q
, vertices
[4]);
98 assert(isis_find_vertex(&q
, &vertices
[4]->N
, vertices
[4]->type
) == NULL
);
100 assert(isis_vertex_queue_count(&q
) == 0);
101 assert(isis_vertex_queue_pop(&q
) == NULL
);
103 isis_vertex_queue_free(&q
);
106 int main(int argc
, char **argv
)
108 setup_test_vertices();
110 cleanup_test_vertices();