diff options
Diffstat (limited to 'src/transport/test_transport_api_timeout.c')
-rw-r--r-- | src/transport/test_transport_api_timeout.c | 72 |
1 files changed, 49 insertions, 23 deletions
diff --git a/src/transport/test_transport_api_timeout.c b/src/transport/test_transport_api_timeout.c index 84a8316bd..bb8ede313 100644 --- a/src/transport/test_transport_api_timeout.c +++ b/src/transport/test_transport_api_timeout.c | |||
@@ -65,6 +65,8 @@ static GNUNET_SCHEDULER_TaskIdentifier die_task; | |||
65 | 65 | ||
66 | static GNUNET_SCHEDULER_TaskIdentifier timer_task; | 66 | static GNUNET_SCHEDULER_TaskIdentifier timer_task; |
67 | 67 | ||
68 | struct TransportTestingHandle * tth; | ||
69 | |||
68 | struct PeerContext *p1; | 70 | struct PeerContext *p1; |
69 | 71 | ||
70 | struct PeerContext *p2; | 72 | struct PeerContext *p2; |
@@ -113,8 +115,8 @@ end () | |||
113 | th = NULL; | 115 | th = NULL; |
114 | 116 | ||
115 | 117 | ||
116 | GNUNET_TRANSPORT_TESTING_stop_peer (p1); | 118 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p1); |
117 | GNUNET_TRANSPORT_TESTING_stop_peer (p2); | 119 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p2); |
118 | 120 | ||
119 | if (disconnects == 0) | 121 | if (disconnects == 0) |
120 | ok = 0; | 122 | ok = 0; |
@@ -125,6 +127,8 @@ end () | |||
125 | "Fail! Had %u disconnects while waiting %llu seconds \n", | 127 | "Fail! Had %u disconnects while waiting %llu seconds \n", |
126 | disconnects, WAIT.rel_value); | 128 | disconnects, WAIT.rel_value); |
127 | } | 129 | } |
130 | |||
131 | GNUNET_TRANSPORT_TESTING_done (tth); | ||
128 | } | 132 | } |
129 | 133 | ||
130 | static void | 134 | static void |
@@ -139,21 +143,18 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
139 | GNUNET_SCHEDULER_cancel (timer_task); | 143 | GNUNET_SCHEDULER_cancel (timer_task); |
140 | timer_task = GNUNET_SCHEDULER_NO_TASK; | 144 | timer_task = GNUNET_SCHEDULER_NO_TASK; |
141 | } | 145 | } |
142 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "1\n"); | ||
143 | if (cc != NULL) | 146 | if (cc != NULL) |
144 | GNUNET_TRANSPORT_TESTING_connect_peers_cancel (cc); | 147 | GNUNET_TRANSPORT_TESTING_connect_peers_cancel (tth, cc); |
145 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "2\n"); | ||
146 | if (th != NULL) | 148 | if (th != NULL) |
147 | GNUNET_TRANSPORT_notify_transmit_ready_cancel (th); | 149 | GNUNET_TRANSPORT_notify_transmit_ready_cancel (th); |
148 | th = NULL; | 150 | th = NULL; |
149 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "3\n"); | ||
150 | if (p1 != NULL) | 151 | if (p1 != NULL) |
151 | GNUNET_TRANSPORT_TESTING_stop_peer (p1); | 152 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p1); |
152 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "4\n"); | ||
153 | if (p2 != NULL) | 153 | if (p2 != NULL) |
154 | GNUNET_TRANSPORT_TESTING_stop_peer (p2); | 154 | GNUNET_TRANSPORT_TESTING_stop_peer (tth, p2); |
155 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "5\n"); | ||
156 | ok = GNUNET_SYSERR; | 155 | ok = GNUNET_SYSERR; |
156 | |||
157 | GNUNET_TRANSPORT_TESTING_done (tth); | ||
157 | } | 158 | } |
158 | 159 | ||
159 | 160 | ||
@@ -236,10 +237,30 @@ testing_connect_cb (struct PeerContext *p1, struct PeerContext *p2, void *cls) | |||
236 | 237 | ||
237 | shutdown_flag = GNUNET_NO; | 238 | shutdown_flag = GNUNET_NO; |
238 | 239 | ||
239 | // FIXME: THIS IS REQUIRED! SEEMS TO BE A BUG! | 240 | timer_task = GNUNET_SCHEDULER_add_now (&timer, NULL); |
240 | timer_task = | 241 | } |
241 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_divide (WAIT, 10), | 242 | |
242 | &timer, NULL); | 243 | void start_cb (struct PeerContext * p, |
244 | void *cls) | ||
245 | { | ||
246 | static int started; | ||
247 | started++; | ||
248 | |||
249 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peer %u (`%s') started\n", | ||
250 | p->no, | ||
251 | GNUNET_i2s (&p->id)); | ||
252 | |||
253 | if (started != 2) | ||
254 | return; | ||
255 | |||
256 | char *sender_c = strdup (GNUNET_i2s (&p1->id)); | ||
257 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Test tries to connect peer %u (`%s') -> peer %u (`%s')\n", | ||
258 | p1->no, sender_c, | ||
259 | p2->no, GNUNET_i2s (&p2->id)); | ||
260 | |||
261 | cc = GNUNET_TRANSPORT_TESTING_connect_peers (tth, p1, p2, &testing_connect_cb, | ||
262 | NULL); | ||
263 | |||
243 | } | 264 | } |
244 | 265 | ||
245 | static void | 266 | static void |
@@ -248,11 +269,17 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
248 | { | 269 | { |
249 | die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL); | 270 | die_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, NULL); |
250 | 271 | ||
251 | p1 = GNUNET_TRANSPORT_TESTING_start_peer (cfg_file_p1, ¬ify_receive, | 272 | p1 = GNUNET_TRANSPORT_TESTING_start_peer (tth, cfg_file_p1, 1, |
252 | ¬ify_connect, ¬ify_disconnect, | 273 | ¬ify_receive, |
274 | ¬ify_connect, | ||
275 | ¬ify_disconnect, | ||
276 | &start_cb, | ||
253 | NULL); | 277 | NULL); |
254 | p2 = GNUNET_TRANSPORT_TESTING_start_peer (cfg_file_p2, ¬ify_receive, | 278 | p2 = GNUNET_TRANSPORT_TESTING_start_peer (tth, cfg_file_p2, 2, |
255 | ¬ify_connect, ¬ify_disconnect, | 279 | ¬ify_receive, |
280 | ¬ify_connect, | ||
281 | ¬ify_disconnect, | ||
282 | &start_cb, | ||
256 | NULL); | 283 | NULL); |
257 | 284 | ||
258 | if ((p1 == NULL) || (p2 == NULL)) | 285 | if ((p1 == NULL) || (p2 == NULL)) |
@@ -263,15 +290,12 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
263 | die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); | 290 | die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); |
264 | return; | 291 | return; |
265 | } | 292 | } |
266 | |||
267 | cc = GNUNET_TRANSPORT_TESTING_connect_peers (p1, p2, &testing_connect_cb, | ||
268 | NULL); | ||
269 | } | 293 | } |
270 | 294 | ||
271 | static int | 295 | static int |
272 | check () | 296 | check () |
273 | { | 297 | { |
274 | static char *const argv[] = { "test-transport-api-multiaddress", | 298 | static char *const argv[] = { "test-transport-api-timeout", |
275 | "-c", | 299 | "-c", |
276 | "test_transport_api_data.conf", | 300 | "test_transport_api_data.conf", |
277 | #if VERBOSE | 301 | #if VERBOSE |
@@ -290,7 +314,7 @@ check () | |||
290 | 314 | ||
291 | ok = 1; | 315 | ok = 1; |
292 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv, | 316 | GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv, |
293 | "test-transport-api-multiaddress", "nohelp", options, | 317 | "test-transport-api-timeout", "nohelp", options, |
294 | &run, &ok); | 318 | &run, &ok); |
295 | 319 | ||
296 | return ok; | 320 | return ok; |
@@ -302,6 +326,8 @@ main (int argc, char *argv[]) | |||
302 | int ret; | 326 | int ret; |
303 | int nat_res; | 327 | int nat_res; |
304 | 328 | ||
329 | tth = GNUNET_TRANSPORT_TESTING_init (); | ||
330 | |||
305 | GNUNET_TRANSPORT_TESTING_get_test_source_name (__FILE__, &test_source); | 331 | GNUNET_TRANSPORT_TESTING_get_test_source_name (__FILE__, &test_source); |
306 | GNUNET_TRANSPORT_TESTING_get_test_plugin_name (argv[0], test_source, | 332 | GNUNET_TRANSPORT_TESTING_get_test_plugin_name (argv[0], test_source, |
307 | &test_plugin); | 333 | &test_plugin); |