diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2013-02-15 10:36:49 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2013-02-15 10:36:49 +0000 |
commit | 483b0fe362a11e531f36600101b29e7983960c3b (patch) | |
tree | a537cd91640506cd8349f5c3facb3ff94dcec82a /src/testbed/test_testbed_api.c | |
parent | 5129b1844b72310d697e363bef7aa3cc67de0489 (diff) | |
download | gnunet-483b0fe362a11e531f36600101b29e7983960c3b.tar.gz gnunet-483b0fe362a11e531f36600101b29e7983960c3b.zip |
- fix crashing testcases
Diffstat (limited to 'src/testbed/test_testbed_api.c')
-rw-r--r-- | src/testbed/test_testbed_api.c | 122 |
1 files changed, 73 insertions, 49 deletions
diff --git a/src/testbed/test_testbed_api.c b/src/testbed/test_testbed_api.c index c5c448669..fabe956ca 100644 --- a/src/testbed/test_testbed_api.c +++ b/src/testbed/test_testbed_api.c | |||
@@ -143,16 +143,35 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
143 | GNUNET_SCHEDULER_cancel (abort_task); | 143 | GNUNET_SCHEDULER_cancel (abort_task); |
144 | if (NULL != reg_handle) | 144 | if (NULL != reg_handle) |
145 | GNUNET_TESTBED_cancel_registration (reg_handle); | 145 | GNUNET_TESTBED_cancel_registration (reg_handle); |
146 | GNUNET_TESTBED_controller_disconnect (controller); | 146 | if (NULL != controller) |
147 | GNUNET_CONFIGURATION_destroy (cfg); | 147 | GNUNET_TESTBED_controller_disconnect (controller); |
148 | if (NULL != cfg) | ||
149 | GNUNET_CONFIGURATION_destroy (cfg); | ||
148 | if (NULL != cp) | 150 | if (NULL != cp) |
149 | GNUNET_TESTBED_controller_stop (cp); | 151 | GNUNET_TESTBED_controller_stop (cp); |
150 | GNUNET_TESTBED_host_destroy (neighbour); | 152 | if (NULL != neighbour) |
153 | GNUNET_TESTBED_host_destroy (neighbour); | ||
154 | if (NULL != host) | ||
151 | GNUNET_TESTBED_host_destroy (host); | 155 | GNUNET_TESTBED_host_destroy (host); |
152 | } | 156 | } |
153 | 157 | ||
154 | 158 | ||
155 | /** | 159 | /** |
160 | * shortcut to exit during failure | ||
161 | */ | ||
162 | #define FAIL_TEST(cond, ret) do { \ | ||
163 | if (!(cond)) { \ | ||
164 | GNUNET_break(0); \ | ||
165 | if (GNUNET_SCHEDULER_NO_TASK != abort_task) \ | ||
166 | GNUNET_SCHEDULER_cancel (abort_task); \ | ||
167 | abort_task = GNUNET_SCHEDULER_NO_TASK; \ | ||
168 | GNUNET_SCHEDULER_add_now (do_shutdown, NULL); \ | ||
169 | ret; \ | ||
170 | } \ | ||
171 | } while (0) | ||
172 | |||
173 | |||
174 | /** | ||
156 | * abort task to run on test timed out | 175 | * abort task to run on test timed out |
157 | * | 176 | * |
158 | * @param cls NULL | 177 | * @param cls NULL |
@@ -180,8 +199,8 @@ do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
180 | static void * | 199 | static void * |
181 | dht_connect_adapter (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) | 200 | dht_connect_adapter (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) |
182 | { | 201 | { |
183 | GNUNET_assert (NULL == cls); | 202 | FAIL_TEST (NULL == cls, return NULL); |
184 | GNUNET_assert (OTHER == sub_test); | 203 | FAIL_TEST (OTHER == sub_test, return NULL); |
185 | sub_test = PEER_SERVICE_CONNECT; | 204 | sub_test = PEER_SERVICE_CONNECT; |
186 | dht_handle = GNUNET_DHT_connect (cfg, 10); | 205 | dht_handle = GNUNET_DHT_connect (cfg, 10); |
187 | return dht_handle; | 206 | return dht_handle; |
@@ -198,14 +217,14 @@ dht_connect_adapter (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) | |||
198 | static void | 217 | static void |
199 | dht_disconnect_adapter (void *cls, void *op_result) | 218 | dht_disconnect_adapter (void *cls, void *op_result) |
200 | { | 219 | { |
201 | GNUNET_assert (NULL != op_result); | 220 | FAIL_TEST (NULL != op_result, return); |
202 | GNUNET_assert (op_result == dht_handle); | 221 | FAIL_TEST (op_result == dht_handle, return); |
203 | GNUNET_DHT_disconnect (dht_handle); | 222 | GNUNET_DHT_disconnect (dht_handle); |
204 | dht_handle = NULL; | 223 | dht_handle = NULL; |
205 | GNUNET_assert (PEER_SERVICE_CONNECT == sub_test); | 224 | FAIL_TEST (PEER_SERVICE_CONNECT == sub_test, return); |
206 | GNUNET_assert (NULL != operation); | 225 | FAIL_TEST (NULL != operation, return); |
207 | operation = GNUNET_TESTBED_peer_stop (peer, NULL, NULL); | 226 | operation = GNUNET_TESTBED_peer_stop (peer, NULL, NULL); |
208 | GNUNET_assert (NULL != operation); | 227 | FAIL_TEST (NULL != operation, return); |
209 | } | 228 | } |
210 | 229 | ||
211 | 230 | ||
@@ -225,15 +244,15 @@ service_connect_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, | |||
225 | switch (sub_test) | 244 | switch (sub_test) |
226 | { | 245 | { |
227 | case PEER_SERVICE_CONNECT: | 246 | case PEER_SERVICE_CONNECT: |
228 | GNUNET_assert (operation == op); | 247 | FAIL_TEST (operation == op, return); |
229 | GNUNET_assert (NULL == emsg); | 248 | FAIL_TEST (NULL == emsg, return); |
230 | GNUNET_assert (NULL == cls); | 249 | FAIL_TEST (NULL == cls, return); |
231 | GNUNET_assert (ca_result == dht_handle); | 250 | FAIL_TEST (ca_result == dht_handle, return); |
232 | GNUNET_TESTBED_operation_done (operation); /* This results in call to | 251 | GNUNET_TESTBED_operation_done (operation); /* This results in call to |
233 | * disconnect adapter */ | 252 | * disconnect adapter */ |
234 | break; | 253 | break; |
235 | default: | 254 | default: |
236 | GNUNET_assert (0); | 255 | FAIL_TEST (0, return); |
237 | } | 256 | } |
238 | } | 257 | } |
239 | 258 | ||
@@ -256,18 +275,18 @@ peerinfo_cb (void *cb_cls, struct GNUNET_TESTBED_Operation *op, | |||
256 | switch (sub_test) | 275 | switch (sub_test) |
257 | { | 276 | { |
258 | case PEER_GETCONFIG: | 277 | case PEER_GETCONFIG: |
259 | GNUNET_assert (NULL != pinfo); | 278 | FAIL_TEST (NULL != pinfo, return); |
260 | GNUNET_assert (NULL == emsg); | 279 | FAIL_TEST (NULL == emsg, return); |
261 | GNUNET_assert (NULL == cb_cls); | 280 | FAIL_TEST (NULL == cb_cls, return); |
262 | GNUNET_assert (operation == op); | 281 | FAIL_TEST (operation == op, return); |
263 | GNUNET_assert (GNUNET_TESTBED_PIT_CONFIGURATION == pinfo->pit); | 282 | FAIL_TEST (GNUNET_TESTBED_PIT_CONFIGURATION == pinfo->pit, return); |
264 | GNUNET_assert (NULL != pinfo->result.cfg); | 283 | FAIL_TEST (NULL != pinfo->result.cfg, return); |
265 | sub_test = PEER_DESTROY; | 284 | sub_test = PEER_DESTROY; |
266 | GNUNET_TESTBED_operation_done (operation); | 285 | GNUNET_TESTBED_operation_done (operation); |
267 | operation = GNUNET_TESTBED_peer_destroy (peer); | 286 | operation = GNUNET_TESTBED_peer_destroy (peer); |
268 | break; | 287 | break; |
269 | default: | 288 | default: |
270 | GNUNET_assert (0); | 289 | FAIL_TEST (0, return); |
271 | } | 290 | } |
272 | } | 291 | } |
273 | 292 | ||
@@ -288,40 +307,40 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
288 | switch (sub_test) | 307 | switch (sub_test) |
289 | { | 308 | { |
290 | case PEER_DESTROY: | 309 | case PEER_DESTROY: |
291 | GNUNET_assert (event->details.operation_finished.operation == operation); | 310 | FAIL_TEST (event->details.operation_finished.operation == operation, return); |
292 | GNUNET_assert (NULL == event->details.operation_finished.op_cls); | 311 | FAIL_TEST (NULL == event->details.operation_finished.op_cls, return); |
293 | GNUNET_assert (NULL == event->details.operation_finished.emsg); | 312 | FAIL_TEST (NULL == event->details.operation_finished.emsg, return); |
294 | GNUNET_assert (NULL == event->details.operation_finished.generic); | 313 | FAIL_TEST (NULL == event->details.operation_finished.generic, return); |
295 | GNUNET_TESTBED_operation_done (operation); | 314 | GNUNET_TESTBED_operation_done (operation); |
296 | GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); | 315 | GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); |
297 | break; | 316 | break; |
298 | case PEER_SERVICE_CONNECT: | 317 | case PEER_SERVICE_CONNECT: |
299 | GNUNET_assert (event->details.operation_finished.operation == operation); | 318 | FAIL_TEST (event->details.operation_finished.operation == operation, return); |
300 | GNUNET_assert (NULL == event->details.operation_finished.op_cls); | 319 | FAIL_TEST (NULL == event->details.operation_finished.op_cls, return); |
301 | GNUNET_assert (NULL == event->details.operation_finished.emsg); | 320 | FAIL_TEST (NULL == event->details.operation_finished.emsg, return); |
302 | GNUNET_assert (NULL != dht_handle); | 321 | FAIL_TEST (NULL != dht_handle, return); |
303 | GNUNET_assert (event->details.operation_finished.generic == dht_handle); | 322 | FAIL_TEST (event->details.operation_finished.generic == dht_handle, return); |
304 | break; | 323 | break; |
305 | default: | 324 | default: |
306 | GNUNET_assert (0); | 325 | FAIL_TEST (0, return); |
307 | break; | 326 | break; |
308 | } | 327 | } |
309 | break; | 328 | break; |
310 | case GNUNET_TESTBED_ET_PEER_START: | 329 | case GNUNET_TESTBED_ET_PEER_START: |
311 | GNUNET_assert (event->details.peer_start.host == host); | 330 | FAIL_TEST (event->details.peer_start.host == host, return); |
312 | GNUNET_assert (event->details.peer_start.peer == peer); | 331 | FAIL_TEST (event->details.peer_start.peer == peer, return); |
313 | GNUNET_assert (OTHER == sub_test); | 332 | FAIL_TEST (OTHER == sub_test, return); |
314 | GNUNET_TESTBED_operation_done (operation); | 333 | GNUNET_TESTBED_operation_done (operation); |
315 | operation = | 334 | operation = |
316 | GNUNET_TESTBED_service_connect (NULL, peer, "dht", | 335 | GNUNET_TESTBED_service_connect (NULL, peer, "dht", |
317 | &service_connect_comp_cb, NULL, | 336 | &service_connect_comp_cb, NULL, |
318 | &dht_connect_adapter, | 337 | &dht_connect_adapter, |
319 | &dht_disconnect_adapter, NULL); | 338 | &dht_disconnect_adapter, NULL); |
320 | GNUNET_assert (NULL != operation); | 339 | FAIL_TEST (NULL != operation, return); |
321 | break; | 340 | break; |
322 | case GNUNET_TESTBED_ET_PEER_STOP: | 341 | case GNUNET_TESTBED_ET_PEER_STOP: |
323 | GNUNET_assert (event->details.peer_stop.peer == peer); | 342 | FAIL_TEST (event->details.peer_stop.peer == peer, return); |
324 | GNUNET_assert (PEER_SERVICE_CONNECT == sub_test); | 343 | FAIL_TEST (PEER_SERVICE_CONNECT == sub_test, return); |
325 | result = GNUNET_YES; | 344 | result = GNUNET_YES; |
326 | sub_test = PEER_GETCONFIG; | 345 | sub_test = PEER_GETCONFIG; |
327 | GNUNET_TESTBED_operation_done (operation); | 346 | GNUNET_TESTBED_operation_done (operation); |
@@ -331,7 +350,7 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
331 | &peerinfo_cb, NULL); | 350 | &peerinfo_cb, NULL); |
332 | break; | 351 | break; |
333 | default: | 352 | default: |
334 | GNUNET_assert (0); /* We should never reach this state */ | 353 | FAIL_TEST (0, return); /* We should never reach this state */ |
335 | } | 354 | } |
336 | } | 355 | } |
337 | 356 | ||
@@ -351,12 +370,12 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg) | |||
351 | struct GNUNET_TESTBED_Peer **peer_ptr; | 370 | struct GNUNET_TESTBED_Peer **peer_ptr; |
352 | 371 | ||
353 | peer_ptr = cls; | 372 | peer_ptr = cls; |
354 | GNUNET_assert (NULL != peer); | 373 | FAIL_TEST (NULL != peer, return); |
355 | GNUNET_assert (NULL != peer_ptr); | 374 | FAIL_TEST (NULL != peer_ptr, return); |
356 | *peer_ptr = peer; | 375 | *peer_ptr = peer; |
357 | GNUNET_TESTBED_operation_done (operation); | 376 | GNUNET_TESTBED_operation_done (operation); |
358 | operation = GNUNET_TESTBED_peer_start (NULL, peer, NULL, NULL); | 377 | operation = GNUNET_TESTBED_peer_start (NULL, peer, NULL, NULL); |
359 | GNUNET_assert (NULL != operation); | 378 | FAIL_TEST (NULL != operation, return); |
360 | } | 379 | } |
361 | 380 | ||
362 | 381 | ||
@@ -369,12 +388,12 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg) | |||
369 | static void | 388 | static void |
370 | registration_comp (void *cls, const char *emsg) | 389 | registration_comp (void *cls, const char *emsg) |
371 | { | 390 | { |
372 | GNUNET_assert (cls == neighbour); | 391 | FAIL_TEST (cls == neighbour, return); |
373 | reg_handle = NULL; | 392 | reg_handle = NULL; |
374 | operation = | 393 | operation = |
375 | GNUNET_TESTBED_peer_create (controller, host, cfg, &peer_create_cb, | 394 | GNUNET_TESTBED_peer_create (controller, host, cfg, &peer_create_cb, |
376 | &peer); | 395 | &peer); |
377 | GNUNET_assert (NULL != operation); | 396 | FAIL_TEST (NULL != operation, return); |
378 | } | 397 | } |
379 | 398 | ||
380 | 399 | ||
@@ -392,7 +411,12 @@ status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg, int status) | |||
392 | { | 411 | { |
393 | uint64_t event_mask; | 412 | uint64_t event_mask; |
394 | 413 | ||
395 | GNUNET_assert (GNUNET_OK == status); | 414 | if (GNUNET_OK != status) |
415 | { | ||
416 | cp = NULL; | ||
417 | FAIL_TEST (0, return); | ||
418 | return; | ||
419 | } | ||
396 | event_mask = 0; | 420 | event_mask = 0; |
397 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_START); | 421 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_START); |
398 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_STOP); | 422 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_STOP); |
@@ -401,13 +425,13 @@ status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg, int status) | |||
401 | controller = | 425 | controller = |
402 | GNUNET_TESTBED_controller_connect (cfg, host, event_mask, &controller_cb, | 426 | GNUNET_TESTBED_controller_connect (cfg, host, event_mask, &controller_cb, |
403 | NULL); | 427 | NULL); |
404 | GNUNET_assert (NULL != controller); | 428 | FAIL_TEST (NULL != controller, return); |
405 | neighbour = GNUNET_TESTBED_host_create ("localhost", NULL, 0); | 429 | neighbour = GNUNET_TESTBED_host_create ("localhost", NULL, 0); |
406 | GNUNET_assert (NULL != neighbour); | 430 | FAIL_TEST (NULL != neighbour, return); |
407 | reg_handle = | 431 | reg_handle = |
408 | GNUNET_TESTBED_register_host (controller, neighbour, ®istration_comp, | 432 | GNUNET_TESTBED_register_host (controller, neighbour, ®istration_comp, |
409 | neighbour); | 433 | neighbour); |
410 | GNUNET_assert (NULL != reg_handle); | 434 | FAIL_TEST (NULL != reg_handle, return); |
411 | } | 435 | } |
412 | 436 | ||
413 | 437 | ||
@@ -425,7 +449,7 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
425 | const struct GNUNET_CONFIGURATION_Handle *config) | 449 | const struct GNUNET_CONFIGURATION_Handle *config) |
426 | { | 450 | { |
427 | host = GNUNET_TESTBED_host_create (NULL, NULL, 0); | 451 | host = GNUNET_TESTBED_host_create (NULL, NULL, 0); |
428 | GNUNET_assert (NULL != host); | 452 | FAIL_TEST (NULL != host, return); |
429 | cfg = GNUNET_CONFIGURATION_dup (config); | 453 | cfg = GNUNET_CONFIGURATION_dup (config); |
430 | cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, cfg, status_cb, | 454 | cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, cfg, status_cb, |
431 | NULL); | 455 | NULL); |