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) | |
download | gnunet-9ec9052c1cee478ab24f66a466774d6f63ace858.tar.gz gnunet-9ec9052c1cee478ab24f66a466774d6f63ace858.zip |
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 83d18ce0c..43a5628ad 100644 --- a/src/testbed/test_testbed_api_test.c +++ b/src/testbed/test_testbed_api_test.c | |||
@@ -34,6 +34,16 @@ | |||
34 | #define NUM_PEERS 25 | 34 | #define NUM_PEERS 25 |
35 | 35 | ||
36 | /** | 36 | /** |
37 | * Array of peers | ||
38 | */ | ||
39 | static struct GNUNET_TESTBED_Peer **peers; | ||
40 | |||
41 | /** | ||
42 | * Operation handle | ||
43 | */ | ||
44 | static struct GNUNET_TESTBED_Operation *op; | ||
45 | |||
46 | /** | ||
37 | * Testing result | 47 | * Testing result |
38 | */ | 48 | */ |
39 | static int result; | 49 | static int result; |
@@ -53,6 +63,42 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
53 | 63 | ||
54 | 64 | ||
55 | /** | 65 | /** |
66 | * Controller event callback | ||
67 | * | ||
68 | * @param cls NULL | ||
69 | * @param event the controller event | ||
70 | */ | ||
71 | static void | ||
72 | controller_event_cb (void *cls, | ||
73 | const struct GNUNET_TESTBED_EventInformation *event) | ||
74 | { | ||
75 | switch (event->type) | ||
76 | { | ||
77 | case GNUNET_TESTBED_ET_CONNECT: | ||
78 | GNUNET_assert (event->details.peer_connect.peer1 == peers[0]); | ||
79 | GNUNET_assert (event->details.peer_connect.peer2 == peers[1]); | ||
80 | GNUNET_TESTBED_operation_done (op); | ||
81 | op = GNUNET_TESTBED_peer_get_information (peers[0], | ||
82 | GNUNET_TESTBED_PIT_IDENTITY); | ||
83 | break; | ||
84 | case GNUNET_TESTBED_ET_OPERATION_FINISHED: | ||
85 | GNUNET_assert (event->details.operation_finished.operation == op); | ||
86 | GNUNET_assert (NULL == event->details.operation_finished.op_cls); | ||
87 | GNUNET_assert (NULL == event->details.operation_finished.emsg); | ||
88 | GNUNET_assert (GNUNET_TESTBED_PIT_IDENTITY == | ||
89 | event->details.operation_finished.pit); | ||
90 | GNUNET_assert (NULL != event->details.operation_finished.op_result.pid); | ||
91 | GNUNET_TESTBED_operation_done (op); | ||
92 | result = GNUNET_OK; | ||
93 | GNUNET_SCHEDULER_add_now (&do_shutdown, NULL); | ||
94 | break; | ||
95 | default: | ||
96 | GNUNET_assert (0); | ||
97 | } | ||
98 | } | ||
99 | |||
100 | |||
101 | /** | ||
56 | * Signature of a main function for a testcase. | 102 | * Signature of a main function for a testcase. |
57 | * | 103 | * |
58 | * @param cls closure | 104 | * @param cls closure |
@@ -61,18 +107,17 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
61 | */ | 107 | */ |
62 | static void | 108 | static void |
63 | test_master (void *cls, unsigned int num_peers, | 109 | test_master (void *cls, unsigned int num_peers, |
64 | struct GNUNET_TESTBED_Peer **peers) | 110 | struct GNUNET_TESTBED_Peer **peers_) |
65 | { | 111 | { |
66 | unsigned int peer; | 112 | unsigned int peer; |
67 | 113 | ||
68 | GNUNET_assert (NULL == cls); | 114 | GNUNET_assert (NULL == cls); |
69 | GNUNET_assert (NUM_PEERS == num_peers); | 115 | GNUNET_assert (NUM_PEERS == num_peers); |
70 | GNUNET_assert (NULL != peers); | 116 | GNUNET_assert (NULL != peers_); |
71 | for (peer = 0; peer < num_peers; peer++) | 117 | for (peer = 0; peer < num_peers; peer++) |
72 | GNUNET_assert (NULL != peers[peer]); | 118 | GNUNET_assert (NULL != peers_[peer]); |
73 | result = GNUNET_OK; | 119 | peers = peers_; |
74 | /* Artificial delay for shutdown */ | 120 | op = GNUNET_TESTBED_overlay_connect (NULL, peers[0], peers[1]); |
75 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &do_shutdown, NULL); | ||
76 | } | 121 | } |
77 | 122 | ||
78 | 123 | ||
@@ -82,9 +127,15 @@ test_master (void *cls, unsigned int num_peers, | |||
82 | int | 127 | int |
83 | main (int argc, char **argv) | 128 | main (int argc, char **argv) |
84 | { | 129 | { |
130 | uint64_t event_mask; | ||
131 | |||
85 | result = GNUNET_SYSERR; | 132 | result = GNUNET_SYSERR; |
133 | event_mask = 0; | ||
134 | event_mask |= (1LL << GNUNET_TESTBED_ET_CONNECT); | ||
135 | event_mask |= (1LL << GNUNET_TESTBED_ET_OPERATION_FINISHED); | ||
86 | GNUNET_TESTBED_test_run ("test_testbed_api_test", "test_testbed_api.conf", | 136 | GNUNET_TESTBED_test_run ("test_testbed_api_test", "test_testbed_api.conf", |
87 | NUM_PEERS, &test_master, NULL); | 137 | NUM_PEERS, event_mask, &controller_event_cb, NULL, |
138 | &test_master, NULL); | ||
88 | if (GNUNET_OK != result) | 139 | if (GNUNET_OK != result) |
89 | return 1; | 140 | return 1; |
90 | return 0; | 141 | return 0; |