diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-07-25 00:30:00 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-07-25 00:30:00 +0000 |
commit | d0701eb6315fc3f5aca74415bbf0ff7418409f87 (patch) | |
tree | fcacb97bbcca542ce9493001c825fd265cb8a801 /src/transport/transport-testing-main.c | |
parent | 9bfb8bff3fd253407530c76c7590b33bacf033f1 (diff) | |
download | gnunet-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.c | 123 |
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 | */ | ||
150 | struct 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 | */ |
211 | static void | 230 | static void * |
212 | my_nc (void *cls, | 231 | my_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 | */ |
232 | static void | 257 | static void |
233 | my_nd (void *cls, | 258 | my_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 | */ | ||
281 | static int | ||
282 | check_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 | */ |
253 | static void | 295 | static void |
254 | my_rec (void *cls, | 296 | handle_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 | */ | ||
318 | static int | ||
319 | check_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 | */ | ||
332 | static void | ||
333 | handle_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 | */ |
321 | static void | 399 | static void |
322 | start_cb (struct GNUNET_TRANSPORT_TESTING_PeerContext *p, | 400 | start_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], |