diff options
Diffstat (limited to 'src/testbed/test_testbed_api_controllerlink.c')
-rw-r--r-- | src/testbed/test_testbed_api_controllerlink.c | 135 |
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) | |||
357 | static void | 358 | static void |
358 | do_abort (void *cls) | 359 | do_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 | */ |
432 | static void | 431 | static void |
433 | peer_create_cb (void *cls, | 432 | peer_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 | */ |
502 | static void | 498 | static void |
503 | controller_cb (void *cls, | 499 | controller_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 | */ |
716 | static void | 711 | static void |
717 | status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *config, | 712 | status_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 | */ |
785 | static void | 782 | static void |
786 | run (void *cls, char *const *args, const char *cfgfile, | 783 | run (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, | |||
820 | int | 818 | int |
821 | main (int argc, char **argv) | 819 | main (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 | } |