aboutsummaryrefslogtreecommitdiff
path: root/src/transport/transport-testing-main.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-07-25 00:30:00 +0000
committerChristian Grothoff <christian@grothoff.org>2016-07-25 00:30:00 +0000
commitd0701eb6315fc3f5aca74415bbf0ff7418409f87 (patch)
treefcacb97bbcca542ce9493001c825fd265cb8a801 /src/transport/transport-testing-main.c
parent9bfb8bff3fd253407530c76c7590b33bacf033f1 (diff)
downloadgnunet-d0701eb6315fc3f5aca74415bbf0ff7418409f87.tar.gz
gnunet-d0701eb6315fc3f5aca74415bbf0ff7418409f87.zip
switching transport tests to new MQ-based transport API
Diffstat (limited to 'src/transport/transport-testing-main.c')
-rw-r--r--src/transport/transport-testing-main.c123
1 files changed, 106 insertions, 17 deletions
diff --git a/src/transport/transport-testing-main.c b/src/transport/transport-testing-main.c
index 79f6a0152..bba37eee8 100644
--- a/src/transport/transport-testing-main.c
+++ b/src/transport/transport-testing-main.c
@@ -145,6 +145,23 @@ struct GNUNET_TRANSPORT_TESTING_InternalPeerContext
145 145
146 146
147/** 147/**
148 * Information tracked per connected peer.
149 */
150struct ConnectPairInfo
151{
152 /**
153 * Peer this is about.
154 */
155 const struct GNUNET_PeerIdentity *sender;
156
157 /**
158 * Information about the receiving peer.
159 */
160 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi;
161};
162
163
164/**
148 * Function called when we connected two peers. Once we have gotten 165 * Function called when we connected two peers. Once we have gotten
149 * to the clique, launch test-specific logic. 166 * to the clique, launch test-specific logic.
150 * 167 *
@@ -207,61 +224,123 @@ GNUNET_TRANSPORT_TESTING_find_peer (struct GNUNET_TRANSPORT_TESTING_ConnectCheck
207 * 224 *
208 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *` 225 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *`
209 * @param peer peer we got connected to 226 * @param peer peer we got connected to
227 * @param mq message queue for transmissions to @a peer
228 * @return closure for message handlers
210 */ 229 */
211static void 230static void *
212my_nc (void *cls, 231my_nc (void *cls,
213 const struct GNUNET_PeerIdentity *peer) 232 const struct GNUNET_PeerIdentity *peer,
233 struct GNUNET_MQ_Handle *mq)
214{ 234{
215 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls; 235 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls;
216 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc; 236 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc;
217 237 struct ConnectPairInfo *cpi;
238
218 if (NULL != ccc->nc) 239 if (NULL != ccc->nc)
219 ccc->nc (ccc->cls, 240 ccc->nc (ccc->cls,
220 ccc->p[ipi->off], 241 ccc->p[ipi->off],
221 peer); 242 peer);
243 cpi = GNUNET_new (struct ConnectPairInfo);
244 cpi->ipi = ipi;
245 cpi->sender = peer; /* valid until disconnect */
246 return cpi;
222} 247}
223 248
224 249
225
226/** 250/**
227 * Wrapper around peers disconnecting. Calls client's nd function. 251 * Wrapper around peers disconnecting. Calls client's nd function.
228 * 252 *
229 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *` 253 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *`
230 * @param peer peer we got disconnected from 254 * @param peer peer we got disconnected from
255 * @param custom_cls return value from @my_nc
231 */ 256 */
232static void 257static void
233my_nd (void *cls, 258my_nd (void *cls,
234 const struct GNUNET_PeerIdentity *peer) 259 const struct GNUNET_PeerIdentity *peer,
260 void *custom_cls)
235{ 261{
236 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls; 262 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls;
237 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc; 263 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc;
238 264 struct ConnectPairInfo *cpi = custom_cls;
265
239 if (NULL != ccc->nd) 266 if (NULL != ccc->nd)
240 ccc->nd (ccc->cls, 267 ccc->nd (ccc->cls,
241 ccc->p[ipi->off], 268 ccc->p[ipi->off],
242 peer); 269 peer);
270 GNUNET_free (cpi);
243} 271}
244 272
245 273
246/** 274/**
247 * Wrapper around receiving data. Calls client's rec function. 275 * Wrapper around receiving data. Calls client's rec function.
248 * 276 *
249 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *` 277 * @param cls our `struct ConnectPairInfo *`
250 * @param peer peer we got a message from 278 * @param message message we received
279 * @return #GNUNET_OK (all messages are fine)
280 */
281static int
282check_test (void *cls,
283 const struct GNUNET_TRANSPORT_TESTING_TestMessage *message)
284{
285 return GNUNET_OK;
286}
287
288
289/**
290 * Wrapper around receiving data. Calls client's rec function.
291 *
292 * @param cls our `struct ConnectPairInfo *`
251 * @param message message we received 293 * @param message message we received
252 */ 294 */
253static void 295static void
254my_rec (void *cls, 296handle_test (void *cls,
255 const struct GNUNET_PeerIdentity *peer, 297 const struct GNUNET_TRANSPORT_TESTING_TestMessage *message)
256 const struct GNUNET_MessageHeader *message)
257{ 298{
258 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls; 299 struct ConnectPairInfo *cpi = cls;
300 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cpi->ipi;
301 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc;
302
303 if (NULL != ccc->rec)
304 ccc->rec (ccc->cls,
305 ccc->p[ipi->off],
306 cpi->sender,
307 message);
308}
309
310
311/**
312 * Wrapper around receiving data. Calls client's rec function.
313 *
314 * @param cls our `struct ConnectPairInfo *`
315 * @param message message we received
316 * @return #GNUNET_OK (all messages are fine)
317 */
318static int
319check_test2 (void *cls,
320 const struct GNUNET_TRANSPORT_TESTING_TestMessage *message)
321{
322 return GNUNET_OK;
323}
324
325
326/**
327 * Wrapper around receiving data. Calls client's rec function.
328 *
329 * @param cls our `struct ConnectPairInfo *`
330 * @param message message we received
331 */
332static void
333handle_test2 (void *cls,
334 const struct GNUNET_TRANSPORT_TESTING_TestMessage *message)
335{
336 struct ConnectPairInfo *cpi = cls;
337 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cpi->ipi;
259 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc; 338 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc;
260 339
261 if (NULL != ccc->rec) 340 if (NULL != ccc->rec)
262 ccc->rec (ccc->cls, 341 ccc->rec (ccc->cls,
263 ccc->p[ipi->off], 342 ccc->p[ipi->off],
264 peer, 343 cpi->sender,
265 message); 344 message);
266} 345}
267 346
@@ -315,15 +394,14 @@ do_connect (void *cls)
315 * Once all peers have been launched, we connect all of them 394 * Once all peers have been launched, we connect all of them
316 * in a clique. 395 * in a clique.
317 * 396 *
318 * @param p peer that was launched (redundant, kill ASAP)
319 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *` 397 * @param cls our `struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *`
320 */ 398 */
321static void 399static void
322start_cb (struct GNUNET_TRANSPORT_TESTING_PeerContext *p, 400start_cb (void *cls)
323 void *cls)
324{ 401{
325 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls; 402 struct GNUNET_TRANSPORT_TESTING_InternalPeerContext *ipi = cls;
326 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc; 403 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = ipi->ccc;
404 struct GNUNET_TRANSPORT_TESTING_PeerContext *p = ccc->p[ipi->off];
327 405
328 ccc->started++; 406 ccc->started++;
329 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 407 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -364,6 +442,12 @@ connect_check_run (void *cls,
364 const char *cfgfile, 442 const char *cfgfile,
365 const struct GNUNET_CONFIGURATION_Handle *cfg) 443 const struct GNUNET_CONFIGURATION_Handle *cfg)
366{ 444{
445 GNUNET_MQ_hd_var_size (test,
446 GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE,
447 struct GNUNET_TRANSPORT_TESTING_TestMessage);
448 GNUNET_MQ_hd_var_size (test2,
449 GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE2,
450 struct GNUNET_TRANSPORT_TESTING_TestMessage);
367 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = cls; 451 struct GNUNET_TRANSPORT_TESTING_ConnectCheckContext *ccc = cls;
368 int ok; 452 int ok;
369 453
@@ -376,10 +460,15 @@ connect_check_run (void *cls,
376 ok = GNUNET_OK; 460 ok = GNUNET_OK;
377 for (unsigned int i=0;i<ccc->num_peers;i++) 461 for (unsigned int i=0;i<ccc->num_peers;i++)
378 { 462 {
463 struct GNUNET_MQ_MessageHandler handlers[] = {
464 make_test_handler (NULL),
465 make_test2_handler (NULL),
466 GNUNET_MQ_handler_end()
467 };
379 ccc->p[i] = GNUNET_TRANSPORT_TESTING_start_peer (ccc->tth, 468 ccc->p[i] = GNUNET_TRANSPORT_TESTING_start_peer (ccc->tth,
380 ccc->cfg_files[i], 469 ccc->cfg_files[i],
381 i + 1, 470 i + 1,
382 &my_rec, 471 handlers,
383 &my_nc, 472 &my_nc,
384 &my_nd, 473 &my_nd,
385 &ccc->ip[i], 474 &ccc->ip[i],