aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/test_testbed_api_2peers_1controller.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2012-11-09 15:04:48 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2012-11-09 15:04:48 +0000
commitcfc2b1c9a67588980324a1dacd2ef7a7ab45935b (patch)
treed4932da720c0ffa35e75048ec4d84d131e919395 /src/testbed/test_testbed_api_2peers_1controller.c
parent13cc8c20c16caf78ca802495289094411b7606c5 (diff)
downloadgnunet-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.c90
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 */
168static enum Stage result; 167static 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
229do_delayed_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 241do_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)
246static void 258static void
247op_comp_cb (void *cls, struct GNUNET_TESTBED_Operation *op, const char *emsg) 259op_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)
412static void 424static void
413registration_comp (void *cls, const char *emsg) 425registration_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, &registration_comp, 467 GNUNET_TESTBED_register_host (controller, neighbour, &registration_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);