aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/test_testbed_api_controllerlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/testbed/test_testbed_api_controllerlink.c')
-rw-r--r--src/testbed/test_testbed_api_controllerlink.c135
1 files changed, 67 insertions, 68 deletions
diff --git a/src/testbed/test_testbed_api_controllerlink.c b/src/testbed/test_testbed_api_controllerlink.c
index 181d7d86d..6c1a24f9c 100644
--- a/src/testbed/test_testbed_api_controllerlink.c
+++ b/src/testbed/test_testbed_api_controllerlink.c
@@ -45,14 +45,12 @@
45/** 45/**
46 * Generic logging shortcut 46 * Generic logging shortcut
47 */ 47 */
48#define LOG(kind,...) \ 48#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__)
49 GNUNET_log (kind, __VA_ARGS__)
50 49
51/** 50/**
52 * Debug logging shorthand 51 * Debug logging shorthand
53 */ 52 */
54#define LOG_DEBUG(...) \ 53#define LOG_DEBUG(...) LOG (GNUNET_ERROR_TYPE_DEBUG, __VA_ARGS__)
55 LOG(GNUNET_ERROR_TYPE_DEBUG, __VA_ARGS__)
56 54
57/** 55/**
58 * Different stages in testing 56 * Different stages in testing
@@ -294,15 +292,18 @@ static enum Stage result;
294/** 292/**
295 * shortcut to exit during failure 293 * shortcut to exit during failure
296 */ 294 */
297#define FAIL_TEST(cond) do { \ 295#define FAIL_TEST(cond) \
298 if (!(cond)) { \ 296 do \
299 GNUNET_break(0); \ 297 { \
300 if (NULL != abort_task) \ 298 if (! (cond)) \
301 GNUNET_SCHEDULER_cancel (abort_task); \ 299 { \
302 abort_task = NULL; \ 300 GNUNET_break (0); \
303 GNUNET_SCHEDULER_shutdown (); \ 301 if (NULL != abort_task) \
304 return; \ 302 GNUNET_SCHEDULER_cancel (abort_task); \
305 } \ 303 abort_task = NULL; \
304 GNUNET_SCHEDULER_shutdown (); \
305 return; \
306 } \
306 } while (0) 307 } while (0)
307 308
308 309
@@ -357,9 +358,7 @@ do_shutdown (void *cls)
357static void 358static void
358do_abort (void *cls) 359do_abort (void *cls)
359{ 360{
360 LOG (GNUNET_ERROR_TYPE_WARNING, 361 LOG (GNUNET_ERROR_TYPE_WARNING, "Aborting in stage %d\n", result);
361 "Aborting in stage %d\n",
362 result);
363 abort_task = NULL; 362 abort_task = NULL;
364 GNUNET_SCHEDULER_shutdown (); 363 GNUNET_SCHEDULER_shutdown ();
365} 364}
@@ -430,9 +429,7 @@ delay_task (void *cls)
430 * @param emsg NULL if peer is not NULL; else MAY contain the error description 429 * @param emsg NULL if peer is not NULL; else MAY contain the error description
431 */ 430 */
432static void 431static void
433peer_create_cb (void *cls, 432peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg)
434 struct GNUNET_TESTBED_Peer *peer,
435 const char *emsg)
436{ 433{
437 FAIL_TEST (NULL != peer); 434 FAIL_TEST (NULL != peer);
438 FAIL_TEST (NULL == emsg); 435 FAIL_TEST (NULL == emsg);
@@ -455,11 +452,10 @@ peer_create_cb (void *cls,
455 slave2_peer = peer; 452 slave2_peer = peer;
456 GNUNET_TESTBED_operation_done (op); 453 GNUNET_TESTBED_operation_done (op);
457 op = NULL; 454 op = NULL;
458 delay_task_id = 455 delay_task_id = GNUNET_SCHEDULER_add_delayed (
459 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 456 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1),
460 (GNUNET_TIME_UNIT_SECONDS, 1), 457 &delay_task,
461 &delay_task, 458 NULL);
462 NULL);
463 return; 459 return;
464 case SLAVE3_STARTED: 460 case SLAVE3_STARTED:
465 result = SLAVE3_PEER_CREATE_SUCCESS; 461 result = SLAVE3_PEER_CREATE_SUCCESS;
@@ -500,8 +496,7 @@ check_operation_success (const struct GNUNET_TESTBED_EventInformation *event)
500 * @param event information about the event 496 * @param event information about the event
501 */ 497 */
502static void 498static void
503controller_cb (void *cls, 499controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event)
504 const struct GNUNET_TESTBED_EventInformation *event)
505{ 500{
506 switch (result) 501 switch (result)
507 { 502 {
@@ -558,8 +553,8 @@ controller_cb (void *cls,
558 result = SLAVE3_PEER_START_SUCCESS; 553 result = SLAVE3_PEER_START_SUCCESS;
559 sleep (1); 554 sleep (1);
560 LOG_DEBUG ("**************************************\n"); 555 LOG_DEBUG ("**************************************\n");
561 op = GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, slave2_peer, 556 op =
562 slave3_peer); 557 GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, slave2_peer, slave3_peer);
563 FAIL_TEST (NULL != op); 558 FAIL_TEST (NULL != op);
564 break; 559 break;
565 case SLAVE3_PEER_START_SUCCESS: 560 case SLAVE3_PEER_START_SUCCESS:
@@ -570,10 +565,10 @@ controller_cb (void *cls,
570 result = SLAVE2_SLAVE3_PEERS_CONNECTED; 565 result = SLAVE2_SLAVE3_PEERS_CONNECTED;
571 GNUNET_TESTBED_operation_done (op); 566 GNUNET_TESTBED_operation_done (op);
572 op = NULL; 567 op = NULL;
573 delay_task_id = 568 delay_task_id = GNUNET_SCHEDULER_add_delayed (
574 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 569 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1),
575 (GNUNET_TIME_UNIT_SECONDS, 1), &delay_task, 570 &delay_task,
576 NULL); 571 NULL);
577 break; 572 break;
578 case SLAVE1_PEER_STOP_SUCCESS: 573 case SLAVE1_PEER_STOP_SUCCESS:
579 FAIL_TEST (GNUNET_TESTBED_ET_PEER_START == event->type); 574 FAIL_TEST (GNUNET_TESTBED_ET_PEER_START == event->type);
@@ -581,8 +576,8 @@ controller_cb (void *cls,
581 FAIL_TEST (event->details.peer_start.peer == slave2_peer); 576 FAIL_TEST (event->details.peer_start.peer == slave2_peer);
582 GNUNET_TESTBED_operation_done (op); 577 GNUNET_TESTBED_operation_done (op);
583 result = SLAVE2_PEER_START_SUCCESS; 578 result = SLAVE2_PEER_START_SUCCESS;
584 op = GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, master_peer, 579 op =
585 slave2_peer); 580 GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, master_peer, slave2_peer);
586 break; 581 break;
587 case SLAVE2_PEER_START_SUCCESS: 582 case SLAVE2_PEER_START_SUCCESS:
588 FAIL_TEST (NULL != event); 583 FAIL_TEST (NULL != event);
@@ -592,10 +587,10 @@ controller_cb (void *cls,
592 result = MASTER_SLAVE2_PEERS_CONNECTED; 587 result = MASTER_SLAVE2_PEERS_CONNECTED;
593 GNUNET_TESTBED_operation_done (op); 588 GNUNET_TESTBED_operation_done (op);
594 op = NULL; 589 op = NULL;
595 delay_task_id = 590 delay_task_id = GNUNET_SCHEDULER_add_delayed (
596 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 591 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1),
597 (GNUNET_TIME_UNIT_SECONDS, 1), &delay_task, 592 &delay_task,
598 NULL); 593 NULL);
599 break; 594 break;
600 case SLAVE2_SLAVE3_PEERS_CONNECTED: 595 case SLAVE2_SLAVE3_PEERS_CONNECTED:
601 FAIL_TEST (GNUNET_TESTBED_ET_PEER_STOP == event->type); 596 FAIL_TEST (GNUNET_TESTBED_ET_PEER_STOP == event->type);
@@ -714,7 +709,8 @@ registration_cont (void *cls, const char *emsg)
714 * GNUNET_TESTBED_controller_stop() shouldn't be called in this case 709 * GNUNET_TESTBED_controller_stop() shouldn't be called in this case
715 */ 710 */
716static void 711static void
717status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *config, 712status_cb (void *cls,
713 const struct GNUNET_CONFIGURATION_Handle *config,
718 int status) 714 int status)
719{ 715{
720 switch (result) 716 switch (result)
@@ -726,8 +722,10 @@ status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *config,
726 event_mask |= (1L << GNUNET_TESTBED_ET_PEER_STOP); 722 event_mask |= (1L << GNUNET_TESTBED_ET_PEER_STOP);
727 event_mask |= (1L << GNUNET_TESTBED_ET_CONNECT); 723 event_mask |= (1L << GNUNET_TESTBED_ET_CONNECT);
728 event_mask |= (1L << GNUNET_TESTBED_ET_OPERATION_FINISHED); 724 event_mask |= (1L << GNUNET_TESTBED_ET_OPERATION_FINISHED);
729 mc = GNUNET_TESTBED_controller_connect (host, event_mask, 725 mc = GNUNET_TESTBED_controller_connect (host,
730 &controller_cb, NULL); 726 event_mask,
727 &controller_cb,
728 NULL);
731 FAIL_TEST (NULL != mc); 729 FAIL_TEST (NULL != mc);
732 result = MASTER_STARTED; 730 result = MASTER_STARTED;
733 op = GNUNET_TESTBED_peer_create (mc, host, cfg, peer_create_cb, NULL); 731 op = GNUNET_TESTBED_peer_create (mc, host, cfg, peer_create_cb, NULL);
@@ -759,7 +757,7 @@ host_habitable_cb (void *cls,
759 hc_handle = NULL; 757 hc_handle = NULL;
760 if (GNUNET_NO == status) 758 if (GNUNET_NO == status)
761 { 759 {
762 (void) PRINTF ("%s", 760 (void) printf ("%s",
763 "Unable to run the test as this system is not configured " 761 "Unable to run the test as this system is not configured "
764 "to use password less SSH logins to localhost.\n" 762 "to use password less SSH logins to localhost.\n"
765 "Skipping test\n"); 763 "Skipping test\n");
@@ -769,8 +767,7 @@ host_habitable_cb (void *cls,
769 result = SKIP; 767 result = SKIP;
770 return; 768 return;
771 } 769 }
772 cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, status_cb, 770 cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, status_cb, NULL);
773 NULL);
774} 771}
775 772
776 773
@@ -783,34 +780,35 @@ host_habitable_cb (void *cls,
783 * @param cfg the configuration file handle 780 * @param cfg the configuration file handle
784 */ 781 */
785static void 782static void
786run (void *cls, char *const *args, const char *cfgfile, 783run (void *cls,
784 char *const *args,
785 const char *cfgfile,
787 const struct GNUNET_CONFIGURATION_Handle *config) 786 const struct GNUNET_CONFIGURATION_Handle *config)
788{ 787{
789 cfg = GNUNET_CONFIGURATION_dup (config); 788 cfg = GNUNET_CONFIGURATION_dup (config);
790 host = GNUNET_TESTBED_host_create (NULL, NULL, cfg, 0); 789 host = GNUNET_TESTBED_host_create (NULL, NULL, cfg, 0);
791 FAIL_TEST (NULL != host); 790 FAIL_TEST (NULL != host);
792 if (NULL == 791 if (NULL == (hc_handle = GNUNET_TESTBED_is_host_habitable (host,
793 (hc_handle = 792 config,
794 GNUNET_TESTBED_is_host_habitable (host, config, &host_habitable_cb, 793 &host_habitable_cb,
795 NULL))) 794 NULL)))
796 { 795 {
797 GNUNET_TESTBED_host_destroy (host); 796 GNUNET_TESTBED_host_destroy (host);
798 GNUNET_CONFIGURATION_destroy (cfg); 797 GNUNET_CONFIGURATION_destroy (cfg);
799 cfg = NULL; 798 cfg = NULL;
800 host = NULL; 799 host = NULL;
801 (void) PRINTF ("%s", 800 (void) printf ("%s",
802 "Unable to run the test as this system is not configured " 801 "Unable to run the test as this system is not configured "
803 "to use password less SSH logins to localhost.\n" 802 "to use password less SSH logins to localhost.\n"
804 "Marking test as successful\n"); 803 "Marking test as successful\n");
805 result = SKIP; 804 result = SKIP;
806 return; 805 return;
807 } 806 }
808 abort_task = 807 abort_task = GNUNET_SCHEDULER_add_delayed (
809 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 808 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5),
810 (GNUNET_TIME_UNIT_MINUTES, 5), &do_abort, 809 &do_abort,
811 NULL); 810 NULL);
812 GNUNET_SCHEDULER_add_shutdown (&do_shutdown, 811 GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL);
813 NULL);
814} 812}
815 813
816 814
@@ -820,20 +818,21 @@ run (void *cls, char *const *args, const char *cfgfile,
820int 818int
821main (int argc, char **argv) 819main (int argc, char **argv)
822{ 820{
823 char *const argv2[] = { "test_testbed_api_controllerlink", 821 char *const argv2[] = {"test_testbed_api_controllerlink",
824 "-c", "test_testbed_api.conf", 822 "-c",
825 NULL 823 "test_testbed_api.conf",
826 }; 824 NULL};
827 struct GNUNET_GETOPT_CommandLineOption options[] = { 825 struct GNUNET_GETOPT_CommandLineOption options[] = {GNUNET_GETOPT_OPTION_END};
828 GNUNET_GETOPT_OPTION_END
829 };
830 int ret; 826 int ret;
831 827
832 result = INIT; 828 result = INIT;
833 ret = 829 ret = GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1,
834 GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2, 830 argv2,
835 "test_testbed_api_controllerlink", "nohelp", options, 831 "test_testbed_api_controllerlink",
836 &run, NULL); 832 "nohelp",
833 options,
834 &run,
835 NULL);
837 if (GNUNET_OK != ret) 836 if (GNUNET_OK != ret)
838 return 1; 837 return 1;
839 switch (result) 838 switch (result)
@@ -841,7 +840,7 @@ main (int argc, char **argv)
841 case SUCCESS: 840 case SUCCESS:
842 return 0; 841 return 0;
843 case SKIP: 842 case SKIP:
844 return 77; /* Mark test as skipped */ 843 return 77; /* Mark test as skipped */
845 default: 844 default:
846 return 1; 845 return 1;
847 } 846 }