aboutsummaryrefslogtreecommitdiff
path: root/src/transport/transport-testing-main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/transport-testing-main.c')
-rw-r--r--src/transport/transport-testing-main.c69
1 files changed, 51 insertions, 18 deletions
diff --git a/src/transport/transport-testing-main.c b/src/transport/transport-testing-main.c
index b8dbb9c03..de2ec3d0c 100644
--- a/src/transport/transport-testing-main.c
+++ b/src/transport/transport-testing-main.c
@@ -83,6 +83,11 @@ do_shutdown (void *cls)
83 GNUNET_SCHEDULER_cancel (ccc->timeout_task); 83 GNUNET_SCHEDULER_cancel (ccc->timeout_task);
84 ccc->timeout_task = NULL; 84 ccc->timeout_task = NULL;
85 } 85 }
86 if (NULL != ccc->connect_task)
87 {
88 GNUNET_SCHEDULER_cancel (ccc->connect_task);
89 ccc->connect_task = NULL;
90 }
86 while (NULL != (crl = ccc->crl_head)) 91 while (NULL != (crl = ccc->crl_head))
87 { 92 {
88 GNUNET_CONTAINER_DLL_remove (ccc->crl_head, 93 GNUNET_CONTAINER_DLL_remove (ccc->crl_head,
@@ -263,33 +268,23 @@ my_rec (void *cls,
263 268
264 269
265/** 270/**
266 * Function called once we have successfully launched a peer. 271 * Connect the peers as a clique.
267 * Once all peers have been launched, we connect all of them
268 * in a clique.
269 * 272 *
270 * @param p peer that was launched (redundant, kill ASAP) 273 * @param cls our `struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext`
271 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *`
272 */ 274 */
273static void 275static void
274start_cb (struct GNUNET_TRANSPORT_TESTING_PeerContext *p, 276do_connect (void *cls)
275 void *cls)
276{ 277{
277 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls; 278 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = cls;
278 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc;
279
280 ccc->started++;
281 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
282 "Peer %u (`%s') started\n",
283 p->no,
284 GNUNET_i2s (&p->id));
285 if (ccc->started != ccc->num_peers)
286 return;
287 279
280 ccc->connect_task = NULL;
288 for (unsigned int i=0;i<ccc->num_peers;i++) 281 for (unsigned int i=0;i<ccc->num_peers;i++)
289 for (unsigned int j=i+1;j<ccc->num_peers;j++) 282 for (unsigned int j=(ccc->bi_directional ? 0 : i+1);j<ccc->num_peers;j++)
290 { 283 {
291 struct GNUNET_TRANSPORT_TESTING_ConnectRequestList *crl; 284 struct GNUNET_TRANSPORT_TESTING_ConnectRequestList *crl;
292 285
286 if (i == j)
287 continue;
293 crl = GNUNET_new (struct GNUNET_TRANSPORT_TESTING_ConnectRequestList); 288 crl = GNUNET_new (struct GNUNET_TRANSPORT_TESTING_ConnectRequestList);
294 GNUNET_CONTAINER_DLL_insert (ccc->crl_head, 289 GNUNET_CONTAINER_DLL_insert (ccc->crl_head,
295 ccc->crl_tail, 290 ccc->crl_tail,
@@ -317,6 +312,44 @@ start_cb (struct GNUNET_TRANSPORT_TESTING_PeerContext *p,
317 312
318 313
319/** 314/**
315 * Function called once we have successfully launched a peer.
316 * Once all peers have been launched, we connect all of them
317 * in a clique.
318 *
319 * @param p peer that was launched (redundant, kill ASAP)
320 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *`
321 */
322static void
323start_cb (struct GNUNET_TRANSPORT_TESTING_PeerContext *p,
324 void *cls)
325{
326 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls;
327 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc;
328
329 ccc->started++;
330 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
331 "Peer %u (`%s') started\n",
332 p->no,
333 GNUNET_i2s (&p->id));
334 if (ccc->started != ccc->num_peers)
335 return;
336 if (NULL != ccc->pre_connect_task)
337 {
338 /* Run the custom per-connect job, then give it a second to
339 go into effect before we continue connecting peers. */
340 ccc->pre_connect_task (ccc->pre_connect_task_cls);
341 ccc->connect_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
342 &do_connect,
343 ccc);
344 }
345 else
346 {
347 do_connect (ccc);
348 }
349}
350
351
352/**
320 * Function run from #GNUNET_TRANSPORT_TESTING_connect_check 353 * Function run from #GNUNET_TRANSPORT_TESTING_connect_check
321 * once the scheduler is up. Should launch the peers and 354 * once the scheduler is up. Should launch the peers and
322 * then in the continuations try to connect them. 355 * then in the continuations try to connect them.