]>
git.proxmox.com Git - mirror_frr.git/blob - pceplib/test/pcep_utils_counters_test.c
2 * This file is part of the PCEPlib, a PCEP protocol library.
4 * Copyright (C) 2020 Volta Networks https://voltanet.io/
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 * Author : Brady Johnson <brady@voltanet.io>
31 #include <CUnit/CUnit.h>
33 #include "pcep_utils_counters.h"
34 #include "pcep_utils_counters_test.h"
37 void test_create_counters_group()
39 const char group_name
[] = "group";
40 uint16_t num_subgroups
= 10;
42 struct counters_group
*group
=
43 create_counters_group(NULL
, num_subgroups
);
44 CU_ASSERT_PTR_NULL(group
);
46 group
= create_counters_group(group_name
, MAX_COUNTER_GROUPS
+ 1);
47 CU_ASSERT_PTR_NULL(group
);
49 group
= create_counters_group(group_name
, num_subgroups
);
50 CU_ASSERT_PTR_NOT_NULL(group
);
51 assert(group
!= NULL
);
53 CU_ASSERT_EQUAL(group
->num_subgroups
, 0);
54 CU_ASSERT_EQUAL(group
->max_subgroups
, num_subgroups
);
55 CU_ASSERT_EQUAL(strcmp(group
->counters_group_name
, group_name
), 0);
57 delete_counters_group(group
);
60 void test_create_counters_subgroup()
62 const char subgroup_name
[] = "subgroup";
63 uint16_t subgroup_id
= 10;
64 uint16_t num_counters
= 20;
66 struct counters_subgroup
*subgroup
=
67 create_counters_subgroup(NULL
, subgroup_id
, num_counters
);
68 CU_ASSERT_PTR_NULL(subgroup
);
70 subgroup
= create_counters_subgroup(
71 subgroup_name
, MAX_COUNTER_GROUPS
+ 1, num_counters
);
72 CU_ASSERT_PTR_NULL(subgroup
);
74 subgroup
= create_counters_subgroup(subgroup_name
, subgroup_id
,
76 CU_ASSERT_PTR_NULL(subgroup
);
78 subgroup
= create_counters_subgroup(subgroup_name
, subgroup_id
,
80 CU_ASSERT_PTR_NOT_NULL(subgroup
);
81 assert(subgroup
!= NULL
);
83 CU_ASSERT_EQUAL(subgroup
->subgroup_id
, subgroup_id
);
84 CU_ASSERT_EQUAL(subgroup
->num_counters
, 0);
85 CU_ASSERT_EQUAL(subgroup
->max_counters
, num_counters
);
86 CU_ASSERT_EQUAL(strcmp(subgroup
->counters_subgroup_name
, subgroup_name
),
89 delete_counters_subgroup(subgroup
);
92 void test_add_counters_subgroup()
94 struct counters_group
*group
= create_counters_group("group", 1);
95 struct counters_subgroup
*subgroup1
=
96 create_counters_subgroup("subgroup", 0, 5);
97 struct counters_subgroup
*subgroup2
=
98 create_counters_subgroup("subgroup", 1, 5);
100 CU_ASSERT_FALSE(add_counters_subgroup(NULL
, NULL
));
101 CU_ASSERT_FALSE(add_counters_subgroup(NULL
, subgroup1
));
102 CU_ASSERT_FALSE(add_counters_subgroup(group
, NULL
));
104 CU_ASSERT_EQUAL(group
->num_subgroups
, 0);
105 CU_ASSERT_TRUE(add_counters_subgroup(group
, subgroup1
));
106 CU_ASSERT_EQUAL(group
->num_subgroups
, 1);
107 /* Cant add more than num_subgroups to the group */
108 CU_ASSERT_FALSE(add_counters_subgroup(group
, subgroup2
));
110 CU_ASSERT_PTR_NOT_NULL(find_subgroup(group
, 0));
111 CU_ASSERT_PTR_NULL(find_subgroup(group
, 1));
113 delete_counters_group(group
);
114 delete_counters_subgroup(subgroup2
);
117 void test_create_subgroup_counter()
119 uint16_t counter_id
= 1;
120 char counter_name
[] = "my counter";
121 struct counters_subgroup
*subgroup
=
122 create_counters_subgroup("subgroup", 1, 2);
125 create_subgroup_counter(NULL
, counter_id
, counter_name
));
126 CU_ASSERT_FALSE(create_subgroup_counter(subgroup
, counter_id
+ 1,
128 CU_ASSERT_FALSE(create_subgroup_counter(subgroup
, counter_id
, NULL
));
129 CU_ASSERT_EQUAL(subgroup
->num_counters
, 0);
131 create_subgroup_counter(subgroup
, counter_id
, counter_name
));
132 CU_ASSERT_EQUAL(subgroup
->num_counters
, 1);
134 delete_counters_subgroup(subgroup
);
137 void test_delete_counters_group()
139 struct counters_group
*group
= create_counters_group("group", 1);
141 CU_ASSERT_FALSE(delete_counters_group(NULL
));
142 CU_ASSERT_TRUE(delete_counters_group(group
));
145 void test_delete_counters_subgroup()
147 struct counters_subgroup
*subgroup
=
148 create_counters_subgroup("subgroup", 1, 1);
150 CU_ASSERT_FALSE(delete_counters_subgroup(NULL
));
151 CU_ASSERT_TRUE(delete_counters_subgroup(subgroup
));
154 void test_reset_group_counters()
156 uint16_t subgroup_id
= 1;
157 uint16_t counter_id
= 1;
158 struct counters_group
*group
= create_counters_group("group", 10);
159 struct counters_subgroup
*subgroup
=
160 create_counters_subgroup("subgroup", subgroup_id
, 10);
161 create_subgroup_counter(subgroup
, counter_id
, "counter");
162 add_counters_subgroup(group
, subgroup
);
164 struct counter
*counter
= subgroup
->counters
[counter_id
];
165 counter
->counter_value
= 100;
167 CU_ASSERT_FALSE(reset_group_counters(NULL
));
168 CU_ASSERT_TRUE(reset_group_counters(group
));
169 CU_ASSERT_EQUAL(counter
->counter_value
, 0);
171 delete_counters_group(group
);
174 void test_reset_subgroup_counters()
176 uint16_t counter_id
= 1;
177 struct counters_subgroup
*subgroup
=
178 create_counters_subgroup("subgroup", 1, 10);
179 create_subgroup_counter(subgroup
, counter_id
, "counter");
181 struct counter
*counter
= subgroup
->counters
[counter_id
];
182 counter
->counter_value
= 100;
184 CU_ASSERT_FALSE(reset_subgroup_counters(NULL
));
185 CU_ASSERT_TRUE(reset_subgroup_counters(subgroup
));
186 CU_ASSERT_EQUAL(counter
->counter_value
, 0);
188 delete_counters_subgroup(subgroup
);
191 void test_increment_counter()
193 uint16_t subgroup_id
= 1;
194 uint16_t counter_id
= 1;
195 struct counters_group
*group
= create_counters_group("group", 10);
196 struct counters_subgroup
*subgroup
=
197 create_counters_subgroup("subgroup", subgroup_id
, 10);
198 create_subgroup_counter(subgroup
, counter_id
, "counter");
199 add_counters_subgroup(group
, subgroup
);
201 struct counter
*counter
= subgroup
->counters
[counter_id
];
202 counter
->counter_value
= 100;
204 CU_ASSERT_FALSE(increment_counter(NULL
, subgroup_id
, counter_id
));
205 CU_ASSERT_FALSE(increment_counter(group
, 100, counter_id
));
206 CU_ASSERT_FALSE(increment_counter(group
, subgroup_id
, 123));
207 CU_ASSERT_TRUE(increment_counter(group
, subgroup_id
, counter_id
));
208 CU_ASSERT_EQUAL(counter
->counter_value
, 101);
209 CU_ASSERT_EQUAL(subgroup_counters_total(subgroup
), 101);
211 delete_counters_group(group
);
214 void test_increment_subgroup_counter()
217 uint32_t counter_value
= 100;
218 struct counters_subgroup
*subgroup
=
219 create_counters_subgroup("subgroup", 1, 10);
220 create_subgroup_counter(subgroup
, counter_id
, "counter");
222 struct counter
*counter
= subgroup
->counters
[counter_id
];
223 counter
->counter_value
= counter_value
;
225 CU_ASSERT_FALSE(increment_subgroup_counter(NULL
, counter_id
));
226 CU_ASSERT_FALSE(increment_subgroup_counter(subgroup
, counter_id
+ 1));
227 CU_ASSERT_TRUE(increment_subgroup_counter(subgroup
, counter_id
));
228 CU_ASSERT_EQUAL(counter
->counter_value
, counter_value
+ 1);
230 delete_counters_subgroup(subgroup
);
233 void test_dump_counters_group_to_log()
235 uint16_t subgroup_id
= 1;
236 uint16_t counter_id
= 1;
237 struct counters_group
*group
= create_counters_group("group", 10);
238 struct counters_subgroup
*subgroup
=
239 create_counters_subgroup("subgroup", subgroup_id
, 10);
240 create_subgroup_counter(subgroup
, counter_id
, "counter");
241 add_counters_subgroup(group
, subgroup
);
243 CU_ASSERT_FALSE(dump_counters_group_to_log(NULL
));
244 CU_ASSERT_TRUE(dump_counters_group_to_log(group
));
246 delete_counters_group(group
);
249 void test_dump_counters_subgroup_to_log()
251 uint16_t subgroup_id
= 1;
252 uint16_t counter_id
= 1;
253 struct counters_subgroup
*subgroup
=
254 create_counters_subgroup("subgroup", subgroup_id
, 10);
255 create_subgroup_counter(subgroup
, counter_id
, "counter");
257 CU_ASSERT_FALSE(dump_counters_subgroup_to_log(NULL
));
258 CU_ASSERT_TRUE(dump_counters_subgroup_to_log(subgroup
));
260 delete_counters_subgroup(subgroup
);