diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-11-09 15:04:48 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-11-09 15:04:48 +0000 |
commit | cfc2b1c9a67588980324a1dacd2ef7a7ab45935b (patch) | |
tree | d4932da720c0ffa35e75048ec4d84d131e919395 /src/testbed/test_testbed_api_2peers_1controller.c | |
parent | 13cc8c20c16caf78ca802495289094411b7606c5 (diff) | |
download | gnunet-cfc2b1c9a67588980324a1dacd2ef7a7ab45935b.tar.gz gnunet-cfc2b1c9a67588980324a1dacd2ef7a7ab45935b.zip |
save tests from crashing
Diffstat (limited to 'src/testbed/test_testbed_api_2peers_1controller.c')
-rw-r--r-- | src/testbed/test_testbed_api_2peers_1controller.c | 90 |
1 files changed, 51 insertions, 39 deletions
diff --git a/src/testbed/test_testbed_api_2peers_1controller.c b/src/testbed/test_testbed_api_2peers_1controller.c index 9aa306a4b..99e83f8ee 100644 --- a/src/testbed/test_testbed_api_2peers_1controller.c +++ b/src/testbed/test_testbed_api_2peers_1controller.c | |||
@@ -43,7 +43,6 @@ | |||
43 | #define TIME_REL_SECS(sec) \ | 43 | #define TIME_REL_SECS(sec) \ |
44 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, sec) | 44 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, sec) |
45 | 45 | ||
46 | |||
47 | /** | 46 | /** |
48 | * Peer context | 47 | * Peer context |
49 | */ | 48 | */ |
@@ -167,6 +166,19 @@ enum Stage | |||
167 | */ | 166 | */ |
168 | static enum Stage result; | 167 | static enum Stage result; |
169 | 168 | ||
169 | /** | ||
170 | * shortcut to exit during failure | ||
171 | */ | ||
172 | #define FAIL_TEST(cond) do { \ | ||
173 | if (!(cond)) { \ | ||
174 | GNUNET_break(0); \ | ||
175 | if (GNUNET_SCHEDULER_NO_TASK != abort_task) \ | ||
176 | GNUNET_SCHEDULER_cancel (abort_task); \ | ||
177 | abort_task = GNUNET_SCHEDULER_NO_TASK; \ | ||
178 | GNUNET_SCHEDULER_add_now (do_shutdown, NULL); \ | ||
179 | return; \ | ||
180 | } \ | ||
181 | } while (0) | ||
170 | 182 | ||
171 | /** | 183 | /** |
172 | * Shutdown nicely | 184 | * Shutdown nicely |
@@ -179,7 +191,8 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
179 | { | 191 | { |
180 | if (GNUNET_SCHEDULER_NO_TASK != abort_task) | 192 | if (GNUNET_SCHEDULER_NO_TASK != abort_task) |
181 | GNUNET_SCHEDULER_cancel (abort_task); | 193 | GNUNET_SCHEDULER_cancel (abort_task); |
182 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == delayed_connect_task); | 194 | if (GNUNET_SCHEDULER_NO_TASK != delayed_connect_task) |
195 | GNUNET_SCHEDULER_cancel (delayed_connect_task); | ||
183 | if (NULL != reg_handle) | 196 | if (NULL != reg_handle) |
184 | GNUNET_TESTBED_cancel_registration (reg_handle); | 197 | GNUNET_TESTBED_cancel_registration (reg_handle); |
185 | GNUNET_TESTBED_controller_disconnect (controller); | 198 | GNUNET_TESTBED_controller_disconnect (controller); |
@@ -202,7 +215,6 @@ do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
202 | { | 215 | { |
203 | LOG (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n"); | 216 | LOG (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n"); |
204 | abort_task = GNUNET_SCHEDULER_NO_TASK; | 217 | abort_task = GNUNET_SCHEDULER_NO_TASK; |
205 | GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == delayed_connect_task); | ||
206 | do_shutdown (cls, tc); | 218 | do_shutdown (cls, tc); |
207 | } | 219 | } |
208 | 220 | ||
@@ -229,7 +241,7 @@ static void | |||
229 | do_delayed_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 241 | do_delayed_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
230 | { | 242 | { |
231 | delayed_connect_task = GNUNET_SCHEDULER_NO_TASK; | 243 | delayed_connect_task = GNUNET_SCHEDULER_NO_TASK; |
232 | GNUNET_assert (NULL == common_operation); | 244 | FAIL_TEST (NULL == common_operation); |
233 | common_operation = GNUNET_TESTBED_overlay_connect (NULL, &op_comp_cb, NULL, | 245 | common_operation = GNUNET_TESTBED_overlay_connect (NULL, &op_comp_cb, NULL, |
234 | peer1.peer, peer2.peer); | 246 | peer1.peer, peer2.peer); |
235 | } | 247 | } |
@@ -246,13 +258,13 @@ do_delayed_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
246 | static void | 258 | static void |
247 | op_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) | 259 | op_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) |
248 | { | 260 | { |
249 | GNUNET_assert (common_operation == op); | 261 | FAIL_TEST (common_operation == op); |
250 | switch(result) | 262 | switch(result) |
251 | { | 263 | { |
252 | case PEERS_STARTED: | 264 | case PEERS_STARTED: |
253 | GNUNET_assert (NULL == peer1.operation); | 265 | FAIL_TEST (NULL == peer1.operation); |
254 | GNUNET_assert (NULL == peer2.operation); | 266 | FAIL_TEST (NULL == peer2.operation); |
255 | GNUNET_assert (NULL != common_operation); | 267 | FAIL_TEST (NULL != common_operation); |
256 | GNUNET_TESTBED_operation_done (common_operation); | 268 | GNUNET_TESTBED_operation_done (common_operation); |
257 | common_operation = NULL; | 269 | common_operation = NULL; |
258 | result = PEERS_CONNECTED; | 270 | result = PEERS_CONNECTED; |
@@ -262,9 +274,9 @@ op_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) | |||
262 | &do_delayed_connect, NULL); | 274 | &do_delayed_connect, NULL); |
263 | break; | 275 | break; |
264 | case PEERS_CONNECTED: | 276 | case PEERS_CONNECTED: |
265 | GNUNET_assert (NULL == peer1.operation); | 277 | FAIL_TEST (NULL == peer1.operation); |
266 | GNUNET_assert (NULL == peer2.operation); | 278 | FAIL_TEST (NULL == peer2.operation); |
267 | GNUNET_assert (NULL != common_operation); | 279 | FAIL_TEST (NULL != common_operation); |
268 | GNUNET_TESTBED_operation_done (common_operation); | 280 | GNUNET_TESTBED_operation_done (common_operation); |
269 | common_operation = NULL; | 281 | common_operation = NULL; |
270 | result = PEERS_CONNECTED_2; | 282 | result = PEERS_CONNECTED_2; |
@@ -273,7 +285,7 @@ op_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) | |||
273 | peer2.operation = GNUNET_TESTBED_peer_stop (peer2.peer, NULL, NULL); | 285 | peer2.operation = GNUNET_TESTBED_peer_stop (peer2.peer, NULL, NULL); |
274 | break; | 286 | break; |
275 | default: | 287 | default: |
276 | GNUNET_assert (0); | 288 | FAIL_TEST (0); |
277 | } | 289 | } |
278 | } | 290 | } |
279 | 291 | ||
@@ -291,10 +303,10 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
291 | switch (event->type) | 303 | switch (event->type) |
292 | { | 304 | { |
293 | case GNUNET_TESTBED_ET_OPERATION_FINISHED: /* Will be reached when we destroy peers */ | 305 | case GNUNET_TESTBED_ET_OPERATION_FINISHED: /* Will be reached when we destroy peers */ |
294 | GNUNET_assert (PEERS_STOPPED == result); | 306 | FAIL_TEST (PEERS_STOPPED == result); |
295 | GNUNET_assert (NULL == event->details.operation_finished.op_cls); | 307 | FAIL_TEST (NULL == event->details.operation_finished.op_cls); |
296 | GNUNET_assert (NULL == event->details.operation_finished.emsg); | 308 | FAIL_TEST (NULL == event->details.operation_finished.emsg); |
297 | GNUNET_assert (NULL == event->details.operation_finished.generic); | 309 | FAIL_TEST (NULL == event->details.operation_finished.generic); |
298 | if (event->details.operation_finished.operation == peer1.operation) | 310 | if (event->details.operation_finished.operation == peer1.operation) |
299 | { | 311 | { |
300 | GNUNET_TESTBED_operation_done (peer1.operation); | 312 | GNUNET_TESTBED_operation_done (peer1.operation); |
@@ -308,7 +320,7 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
308 | peer2.peer = NULL; | 320 | peer2.peer = NULL; |
309 | } | 321 | } |
310 | else | 322 | else |
311 | GNUNET_assert (0); | 323 | FAIL_TEST (0); |
312 | if ((NULL == peer1.peer) && (NULL == peer2.peer)) | 324 | if ((NULL == peer1.peer) && (NULL == peer2.peer)) |
313 | { | 325 | { |
314 | result = SUCCESS; | 326 | result = SUCCESS; |
@@ -316,8 +328,8 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
316 | } | 328 | } |
317 | break; | 329 | break; |
318 | case GNUNET_TESTBED_ET_PEER_START: | 330 | case GNUNET_TESTBED_ET_PEER_START: |
319 | GNUNET_assert (INIT == result); | 331 | FAIL_TEST (INIT == result); |
320 | GNUNET_assert (event->details.peer_start.host == host); | 332 | FAIL_TEST (event->details.peer_start.host == host); |
321 | if (event->details.peer_start.peer == peer1.peer) | 333 | if (event->details.peer_start.peer == peer1.peer) |
322 | { | 334 | { |
323 | peer1.is_running = GNUNET_YES; | 335 | peer1.is_running = GNUNET_YES; |
@@ -331,7 +343,7 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
331 | peer2.operation = NULL; | 343 | peer2.operation = NULL; |
332 | } | 344 | } |
333 | else | 345 | else |
334 | GNUNET_assert (0); | 346 | FAIL_TEST (0); |
335 | if ((GNUNET_YES == peer1.is_running) && (GNUNET_YES == peer2.is_running)) | 347 | if ((GNUNET_YES == peer1.is_running) && (GNUNET_YES == peer2.is_running)) |
336 | { | 348 | { |
337 | result = PEERS_STARTED; | 349 | result = PEERS_STARTED; |
@@ -341,7 +353,7 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
341 | } | 353 | } |
342 | break; | 354 | break; |
343 | case GNUNET_TESTBED_ET_PEER_STOP: | 355 | case GNUNET_TESTBED_ET_PEER_STOP: |
344 | GNUNET_assert (PEERS_CONNECTED_2 == result); | 356 | FAIL_TEST (PEERS_CONNECTED_2 == result); |
345 | if (event->details.peer_stop.peer == peer1.peer) | 357 | if (event->details.peer_stop.peer == peer1.peer) |
346 | { | 358 | { |
347 | peer1.is_running = GNUNET_NO; | 359 | peer1.is_running = GNUNET_NO; |
@@ -355,7 +367,7 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
355 | peer2.operation = GNUNET_TESTBED_peer_destroy (peer2.peer); | 367 | peer2.operation = GNUNET_TESTBED_peer_destroy (peer2.peer); |
356 | } | 368 | } |
357 | else | 369 | else |
358 | GNUNET_assert (0); | 370 | FAIL_TEST (0); |
359 | if ((GNUNET_NO == peer1.is_running) && (GNUNET_NO == peer2.is_running)) | 371 | if ((GNUNET_NO == peer1.is_running) && (GNUNET_NO == peer2.is_running)) |
360 | result = PEERS_STOPPED; | 372 | result = PEERS_STOPPED; |
361 | break; | 373 | break; |
@@ -364,18 +376,18 @@ controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
364 | { | 376 | { |
365 | case PEERS_STARTED: | 377 | case PEERS_STARTED: |
366 | case PEERS_CONNECTED: | 378 | case PEERS_CONNECTED: |
367 | GNUNET_assert (NULL == peer1.operation); | 379 | FAIL_TEST (NULL == peer1.operation); |
368 | GNUNET_assert (NULL == peer2.operation); | 380 | FAIL_TEST (NULL == peer2.operation); |
369 | GNUNET_assert (NULL != common_operation); | 381 | FAIL_TEST (NULL != common_operation); |
370 | GNUNET_assert ((event->details.peer_connect.peer1 == peer1.peer) && | 382 | FAIL_TEST ((event->details.peer_connect.peer1 == peer1.peer) && |
371 | (event->details.peer_connect.peer2 == peer2.peer)); | 383 | (event->details.peer_connect.peer2 == peer2.peer)); |
372 | break; | 384 | break; |
373 | default: | 385 | default: |
374 | GNUNET_assert (0); | 386 | FAIL_TEST (0); |
375 | } | 387 | } |
376 | break; | 388 | break; |
377 | default: | 389 | default: |
378 | GNUNET_assert (0); | 390 | FAIL_TEST (0); |
379 | }; | 391 | }; |
380 | } | 392 | } |
381 | 393 | ||
@@ -394,9 +406,9 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg) | |||
394 | { | 406 | { |
395 | struct PeerContext *pc = cls; | 407 | struct PeerContext *pc = cls; |
396 | 408 | ||
397 | GNUNET_assert (NULL != pc->operation); | 409 | FAIL_TEST (NULL != pc->operation); |
398 | GNUNET_assert (NULL != peer); | 410 | FAIL_TEST (NULL != peer); |
399 | GNUNET_assert (NULL == pc->peer); | 411 | FAIL_TEST (NULL == pc->peer); |
400 | pc->peer = peer; | 412 | pc->peer = peer; |
401 | GNUNET_TESTBED_operation_done (pc->operation); | 413 | GNUNET_TESTBED_operation_done (pc->operation); |
402 | pc->operation = GNUNET_TESTBED_peer_start (NULL, pc->peer, NULL, NULL); | 414 | pc->operation = GNUNET_TESTBED_peer_start (NULL, pc->peer, NULL, NULL); |
@@ -412,7 +424,7 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg) | |||
412 | static void | 424 | static void |
413 | registration_comp (void *cls, const char *emsg) | 425 | registration_comp (void *cls, const char *emsg) |
414 | { | 426 | { |
415 | GNUNET_assert (cls == neighbour); | 427 | FAIL_TEST (cls == neighbour); |
416 | reg_handle = NULL; | 428 | reg_handle = NULL; |
417 | peer1.operation = | 429 | peer1.operation = |
418 | GNUNET_TESTBED_peer_create (controller, host, cfg, &peer_create_cb, | 430 | GNUNET_TESTBED_peer_create (controller, host, cfg, &peer_create_cb, |
@@ -420,8 +432,8 @@ registration_comp (void *cls, const char *emsg) | |||
420 | peer2.operation = | 432 | peer2.operation = |
421 | GNUNET_TESTBED_peer_create (controller, host, cfg, &peer_create_cb, | 433 | GNUNET_TESTBED_peer_create (controller, host, cfg, &peer_create_cb, |
422 | &peer2); | 434 | &peer2); |
423 | GNUNET_assert (NULL != peer1.operation); | 435 | FAIL_TEST (NULL != peer1.operation); |
424 | GNUNET_assert (NULL != peer2.operation); | 436 | FAIL_TEST (NULL != peer2.operation); |
425 | } | 437 | } |
426 | 438 | ||
427 | 439 | ||
@@ -439,7 +451,7 @@ status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg, int status) | |||
439 | { | 451 | { |
440 | uint64_t event_mask; | 452 | uint64_t event_mask; |
441 | 453 | ||
442 | GNUNET_assert (GNUNET_OK == status); | 454 | FAIL_TEST (GNUNET_OK == status); |
443 | event_mask = 0; | 455 | event_mask = 0; |
444 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_START); | 456 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_START); |
445 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_STOP); | 457 | event_mask |= (1L << GNUNET_TESTBED_ET_PEER_STOP); |
@@ -448,13 +460,13 @@ status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg, int status) | |||
448 | controller = | 460 | controller = |
449 | GNUNET_TESTBED_controller_connect (cfg, host, event_mask, &controller_cb, | 461 | GNUNET_TESTBED_controller_connect (cfg, host, event_mask, &controller_cb, |
450 | NULL); | 462 | NULL); |
451 | GNUNET_assert (NULL != controller); | 463 | FAIL_TEST (NULL != controller); |
452 | neighbour = GNUNET_TESTBED_host_create ("localhost", NULL, 0); | 464 | neighbour = GNUNET_TESTBED_host_create ("localhost", NULL, 0); |
453 | GNUNET_assert (NULL != neighbour); | 465 | FAIL_TEST (NULL != neighbour); |
454 | reg_handle = | 466 | reg_handle = |
455 | GNUNET_TESTBED_register_host (controller, neighbour, ®istration_comp, | 467 | GNUNET_TESTBED_register_host (controller, neighbour, ®istration_comp, |
456 | neighbour); | 468 | neighbour); |
457 | GNUNET_assert (NULL != reg_handle); | 469 | FAIL_TEST (NULL != reg_handle); |
458 | } | 470 | } |
459 | 471 | ||
460 | 472 | ||
@@ -472,7 +484,7 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
472 | const struct GNUNET_CONFIGURATION_Handle *config) | 484 | const struct GNUNET_CONFIGURATION_Handle *config) |
473 | { | 485 | { |
474 | host = GNUNET_TESTBED_host_create (NULL, NULL, 0); | 486 | host = GNUNET_TESTBED_host_create (NULL, NULL, 0); |
475 | GNUNET_assert (NULL != host); | 487 | FAIL_TEST (NULL != host); |
476 | cfg = GNUNET_CONFIGURATION_dup (config); | 488 | cfg = GNUNET_CONFIGURATION_dup (config); |
477 | cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, cfg, status_cb, | 489 | cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, cfg, status_cb, |
478 | NULL); | 490 | NULL); |