diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-09-03 10:45:57 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-09-03 10:45:57 +0000 |
commit | 9ec9052c1cee478ab24f66a466774d6f63ace858 (patch) | |
tree | 78b7d2c1348c6e5658e994d03678ed3dc0b6f54d /src/testbed/test_testbed_api_test.c | |
parent | 2234e06e79ad0eb9106a6b7b75e79a040fe841b6 (diff) |
controller callback added in GNUNET_TESTBED_test_run
Diffstat (limited to 'src/testbed/test_testbed_api_test.c')
-rw-r--r-- | src/testbed/test_testbed_api_test.c | 65 |
1 files changed, 58 insertions, 7 deletions
diff --git a/src/testbed/test_testbed_api_test.c b/src/testbed/test_testbed_api_test.c index 83d18ce0c2..43a5628ad3 100644 --- a/src/testbed/test_testbed_api_test.c +++ b/src/testbed/test_testbed_api_test.c @@ -34,6 +34,16 @@ #define NUM_PEERS 25 /** + * Array of peers + */ +static struct GNUNET_TESTBED_Peer **peers; + +/** + * Operation handle + */ +static struct GNUNET_TESTBED_Operation *op; + +/** * Testing result */ static int result; @@ -53,6 +63,42 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc) /** + * Controller event callback + * + * @param cls NULL + * @param event the controller event + */ +static void +controller_event_cb (void *cls, + const struct GNUNET_TESTBED_EventInformation *event) +{ + switch (event->type) + { + case GNUNET_TESTBED_ET_CONNECT: + GNUNET_assert (event->details.peer_connect.peer1 == peers[0]); + GNUNET_assert (event->details.peer_connect.peer2 == peers[1]); + GNUNET_TESTBED_operation_done (op); + op = GNUNET_TESTBED_peer_get_information (peers[0], + GNUNET_TESTBED_PIT_IDENTITY); + break; + case GNUNET_TESTBED_ET_OPERATION_FINISHED: + GNUNET_assert (event->details.operation_finished.operation == op); + GNUNET_assert (NULL == event->details.operation_finished.op_cls); + GNUNET_assert (NULL == event->details.operation_finished.emsg); + GNUNET_assert (GNUNET_TESTBED_PIT_IDENTITY == + event->details.operation_finished.pit); + GNUNET_assert (NULL != event->details.operation_finished.op_result.pid); + GNUNET_TESTBED_operation_done (op); + result = GNUNET_OK; + GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); + break; + default: + GNUNET_assert (0); + } +} + + +/** * Signature of a main function for a testcase. * * @param cls closure @@ -61,18 +107,17 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc) */ static void test_master (void *cls, unsigned int num_peers, - struct GNUNET_TESTBED_Peer **peers) + struct GNUNET_TESTBED_Peer **peers_) { unsigned int peer; GNUNET_assert (NULL == cls); GNUNET_assert (NUM_PEERS == num_peers); - GNUNET_assert (NULL != peers); + GNUNET_assert (NULL != peers_); for (peer = 0; peer < num_peers; peer++) - GNUNET_assert (NULL != peers[peer]); - result = GNUNET_OK; - /* Artificial delay for shutdown */ - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &do_shutdown, NULL); + GNUNET_assert (NULL != peers_[peer]); + peers = peers_; + op = GNUNET_TESTBED_overlay_connect (NULL, peers[0], peers[1]); } @@ -82,9 +127,15 @@ test_master (void *cls, unsigned int num_peers, int main (int argc, char **argv) { + uint64_t event_mask; + result = GNUNET_SYSERR; + event_mask = 0; + event_mask |= (1LL << GNUNET_TESTBED_ET_CONNECT); + event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED); GNUNET_TESTBED_test_run ("test_testbed_api_test", "test_testbed_api.conf", - NUM_PEERS, &test_master, NULL); + NUM_PEERS, event_mask, &controller_event_cb, NULL, + &test_master, NULL); if (GNUNET_OK != result) return 1; return 0; |