diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/transport/test_communicator_basic.c | 56 | ||||
-rw-r--r-- | src/transport/transport-testing2.c | 59 | ||||
-rw-r--r-- | src/transport/transport-testing2.h | 16 |
3 files changed, 67 insertions, 64 deletions
diff --git a/src/transport/test_communicator_basic.c b/src/transport/test_communicator_basic.c index c469a55a1..e99db7cfb 100644 --- a/src/transport/test_communicator_basic.c +++ b/src/transport/test_communicator_basic.c | |||
@@ -43,8 +43,6 @@ | |||
43 | 43 | ||
44 | static struct GNUNET_SCHEDULER_Task *to_task; | 44 | static struct GNUNET_SCHEDULER_Task *to_task; |
45 | 45 | ||
46 | static struct GNUNET_SCHEDULER_Task *active_task; | ||
47 | |||
48 | static int queue_est = GNUNET_NO; | 46 | static int queue_est = GNUNET_NO; |
49 | 47 | ||
50 | static struct GNUNET_PeerIdentity peer_id[NUM_PEERS]; | 48 | static struct GNUNET_PeerIdentity peer_id[NUM_PEERS]; |
@@ -233,21 +231,21 @@ size_test (void *cls) | |||
233 | { | 231 | { |
234 | char *payload; | 232 | char *payload; |
235 | 233 | ||
236 | active_task = NULL; | ||
237 | GNUNET_assert (TP_SIZE_CHECK == phase); | 234 | GNUNET_assert (TP_SIZE_CHECK == phase); |
238 | if (ack >= 64000) | 235 | if (ack >= 64000) |
239 | return; /* Leave some room for our protocol, so not 2^16 exactly */ | 236 | return; /* Leave some room for our protocol, so not 2^16 exactly */ |
240 | payload = make_payload (ack); | 237 | payload = make_payload (ack); |
238 | ack += 5; | ||
239 | num_sent++; | ||
241 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, | 240 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, |
241 | (ack < 64000) | ||
242 | ? &size_test | ||
243 | : NULL, | ||
244 | NULL, | ||
242 | payload, | 245 | payload, |
243 | ack); | 246 | ack); |
244 | GNUNET_free (payload); | 247 | GNUNET_free (payload); |
245 | ack += 5; | ||
246 | num_sent++; | ||
247 | timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_SECONDS); | 248 | timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_SECONDS); |
248 | if (ack < 64000) | ||
249 | active_task = GNUNET_SCHEDULER_add_now (&size_test, | ||
250 | NULL); | ||
251 | } | 249 | } |
252 | 250 | ||
253 | 251 | ||
@@ -256,18 +254,18 @@ long_test (void *cls) | |||
256 | { | 254 | { |
257 | char *payload; | 255 | char *payload; |
258 | 256 | ||
259 | active_task = NULL; | ||
260 | payload = make_payload (LONG_MESSAGE_SIZE); | 257 | payload = make_payload (LONG_MESSAGE_SIZE); |
258 | num_sent++; | ||
261 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, | 259 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, |
260 | (BURST_PACKETS == | ||
261 | num_sent) | ||
262 | ? NULL | ||
263 | : &long_test, | ||
264 | NULL, | ||
262 | payload, | 265 | payload, |
263 | LONG_MESSAGE_SIZE); | 266 | LONG_MESSAGE_SIZE); |
264 | num_sent++; | ||
265 | GNUNET_free (payload); | 267 | GNUNET_free (payload); |
266 | timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_SECONDS); | 268 | timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_SECONDS); |
267 | if (num_sent == BURST_PACKETS) | ||
268 | return; | ||
269 | active_task = GNUNET_SCHEDULER_add_now (&long_test, | ||
270 | NULL); | ||
271 | } | 269 | } |
272 | 270 | ||
273 | 271 | ||
@@ -276,18 +274,18 @@ short_test (void *cls) | |||
276 | { | 274 | { |
277 | char *payload; | 275 | char *payload; |
278 | 276 | ||
279 | active_task = NULL; | ||
280 | payload = make_payload (SHORT_MESSAGE_SIZE); | 277 | payload = make_payload (SHORT_MESSAGE_SIZE); |
278 | num_sent++; | ||
281 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, | 279 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, |
280 | (BURST_PACKETS == | ||
281 | num_sent) | ||
282 | ? NULL | ||
283 | : &short_test, | ||
284 | NULL, | ||
282 | payload, | 285 | payload, |
283 | SHORT_MESSAGE_SIZE); | 286 | SHORT_MESSAGE_SIZE); |
284 | num_sent++; | ||
285 | GNUNET_free (payload); | 287 | GNUNET_free (payload); |
286 | timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_SECONDS); | 288 | timeout = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_SECONDS); |
287 | if (num_sent >= BURST_PACKETS) | ||
288 | return; | ||
289 | active_task = GNUNET_SCHEDULER_add_now (&short_test, | ||
290 | NULL); | ||
291 | } | 289 | } |
292 | 290 | ||
293 | 291 | ||
@@ -320,9 +318,7 @@ add_queue_cb (void *cls, | |||
320 | to_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, | 318 | to_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, |
321 | &latency_timeout, | 319 | &latency_timeout, |
322 | NULL); | 320 | NULL); |
323 | GNUNET_assert (NULL == active_task); | 321 | short_test (NULL); |
324 | active_task = GNUNET_SCHEDULER_add_now (&short_test, | ||
325 | NULL); | ||
326 | } | 322 | } |
327 | 323 | ||
328 | 324 | ||
@@ -398,8 +394,7 @@ incoming_message_cb (void *cls, | |||
398 | num_sent = 0; | 394 | num_sent = 0; |
399 | avg_latency = 0; | 395 | avg_latency = 0; |
400 | num_received = 0; | 396 | num_received = 0; |
401 | active_task = GNUNET_SCHEDULER_add_now (&long_test, | 397 | long_test (NULL); |
402 | NULL); | ||
403 | } | 398 | } |
404 | break; | 399 | break; |
405 | } | 400 | } |
@@ -436,8 +431,7 @@ incoming_message_cb (void *cls, | |||
436 | num_received = 0; | 431 | num_received = 0; |
437 | num_sent = 0; | 432 | num_sent = 0; |
438 | avg_latency = 0; | 433 | avg_latency = 0; |
439 | active_task = GNUNET_SCHEDULER_add_now (&size_test, | 434 | size_test (NULL); |
440 | NULL); | ||
441 | } | 435 | } |
442 | break; | 436 | break; |
443 | } | 437 | } |
@@ -462,8 +456,7 @@ incoming_message_cb (void *cls, | |||
462 | { | 456 | { |
463 | start_short = GNUNET_TIME_absolute_get (); | 457 | start_short = GNUNET_TIME_absolute_get (); |
464 | phase = TP_BURST_SHORT; | 458 | phase = TP_BURST_SHORT; |
465 | active_task = GNUNET_SCHEDULER_add_now (&short_test, | 459 | short_test (NULL); |
466 | NULL); | ||
467 | break; | 460 | break; |
468 | } | 461 | } |
469 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 462 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
@@ -484,10 +477,9 @@ do_shutdown (void *cls) | |||
484 | GNUNET_SCHEDULER_cancel (to_task); | 477 | GNUNET_SCHEDULER_cancel (to_task); |
485 | to_task = NULL; | 478 | to_task = NULL; |
486 | } | 479 | } |
487 | if (NULL != active_task) | 480 | for (unsigned int i = 0; i < NUM_PEERS; i++) |
488 | { | 481 | { |
489 | GNUNET_SCHEDULER_cancel (active_task); | 482 | GNUNET_TRANSPORT_TESTING_transport_communicator_service_stop (tc_hs[i]); |
490 | active_task = NULL; | ||
491 | } | 483 | } |
492 | } | 484 | } |
493 | 485 | ||
diff --git a/src/transport/transport-testing2.c b/src/transport/transport-testing2.c index 75864294b..b087f6976 100644 --- a/src/transport/transport-testing2.c +++ b/src/transport/transport-testing2.c | |||
@@ -858,16 +858,6 @@ nat_start ( | |||
858 | } | 858 | } |
859 | 859 | ||
860 | 860 | ||
861 | static void | ||
862 | do_shutdown (void *cls) | ||
863 | { | ||
864 | struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h = cls; | ||
865 | shutdown_communicator (tc_h->c_proc); | ||
866 | shutdown_service (tc_h->sh); | ||
867 | shutdown_nat (tc_h->nat_proc); | ||
868 | } | ||
869 | |||
870 | |||
871 | /** | 861 | /** |
872 | * @brief Start communicator part of transport service and communicator | 862 | * @brief Start communicator part of transport service and communicator |
873 | * | 863 | * |
@@ -928,11 +918,22 @@ GNUNET_TRANSPORT_TESTING_transport_communicator_service_start ( | |||
928 | /* Schedule start communicator */ | 918 | /* Schedule start communicator */ |
929 | communicator_start (tc_h, | 919 | communicator_start (tc_h, |
930 | binary_name); | 920 | binary_name); |
931 | GNUNET_SCHEDULER_add_shutdown (&do_shutdown, tc_h); | ||
932 | return tc_h; | 921 | return tc_h; |
933 | } | 922 | } |
934 | 923 | ||
935 | 924 | ||
925 | void | ||
926 | GNUNET_TRANSPORT_TESTING_transport_communicator_service_stop ( | ||
927 | struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h) | ||
928 | { | ||
929 | shutdown_communicator (tc_h->c_proc); | ||
930 | shutdown_service (tc_h->sh); | ||
931 | shutdown_nat (tc_h->nat_proc); | ||
932 | GNUNET_CONFIGURATION_destroy (tc_h->cfg); | ||
933 | GNUNET_free (tc_h); | ||
934 | } | ||
935 | |||
936 | |||
936 | /** | 937 | /** |
937 | * @brief Instruct communicator to open a queue | 938 | * @brief Instruct communicator to open a queue |
938 | * | 939 | * |
@@ -988,39 +989,41 @@ GNUNET_TRANSPORT_TESTING_transport_communicator_open_queue ( | |||
988 | * @brief Instruct communicator to send data | 989 | * @brief Instruct communicator to send data |
989 | * | 990 | * |
990 | * @param tc_queue The queue to use for sending | 991 | * @param tc_queue The queue to use for sending |
992 | * @param cont function to call when done sending | ||
993 | * @param cont_cls closure for @a cont | ||
991 | * @param payload Data to send | 994 | * @param payload Data to send |
992 | * @param payload_size Size of the payload | 995 | * @param payload_size Size of the @a payload |
993 | * | ||
994 | * @return Handle to the transmission | ||
995 | */ | 996 | */ |
996 | struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorTransmission * | 997 | void |
997 | GNUNET_TRANSPORT_TESTING_transport_communicator_send | 998 | GNUNET_TRANSPORT_TESTING_transport_communicator_send |
998 | (struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *tc_queue, | 999 | (struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *tc_queue, |
1000 | GNUNET_SCHEDULER_TaskCallback cont, | ||
1001 | void *cont_cls, | ||
999 | const void *payload, | 1002 | const void *payload, |
1000 | size_t payload_size) | 1003 | size_t payload_size) |
1001 | { | 1004 | { |
1002 | struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorTransmission *tc_t; | ||
1003 | struct GNUNET_MessageHeader *mh; | 1005 | struct GNUNET_MessageHeader *mh; |
1004 | struct GNUNET_TRANSPORT_SendMessageTo *msg; | 1006 | struct GNUNET_TRANSPORT_SendMessageTo *msg; |
1005 | struct GNUNET_MQ_Envelope *env; | 1007 | struct GNUNET_MQ_Envelope *env; |
1006 | size_t inbox_size; | 1008 | size_t inbox_size; |
1007 | 1009 | ||
1008 | inbox_size = sizeof(struct GNUNET_MessageHeader) + payload_size; | 1010 | inbox_size = sizeof (struct GNUNET_MessageHeader) + payload_size; |
1009 | mh = GNUNET_malloc (inbox_size); | ||
1010 | mh->size = htons (inbox_size); | ||
1011 | mh->type = GNUNET_MESSAGE_TYPE_DUMMY; | ||
1012 | memcpy (&mh[1], | ||
1013 | payload, | ||
1014 | payload_size); | ||
1015 | env = GNUNET_MQ_msg_extra (msg, | 1011 | env = GNUNET_MQ_msg_extra (msg, |
1016 | inbox_size, | 1012 | inbox_size, |
1017 | GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_MSG); | 1013 | GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_MSG); |
1018 | msg->qid = htonl (tc_queue->qid); | 1014 | msg->qid = htonl (tc_queue->qid); |
1019 | msg->mid = tc_queue->mid++; | 1015 | msg->mid = tc_queue->mid++; |
1020 | msg->receiver = tc_queue->peer_id; | 1016 | msg->receiver = tc_queue->peer_id; |
1021 | memcpy (&msg[1], mh, inbox_size); | 1017 | mh = (struct GNUNET_MessageHeader *) &msg[1]; |
1022 | GNUNET_free (mh); | 1018 | mh->size = htons (inbox_size); |
1023 | GNUNET_MQ_send (tc_queue->tc_h->c_mq, env); | 1019 | mh->type = GNUNET_MESSAGE_TYPE_DUMMY; |
1024 | // GNUNET_assert (0); // FIXME: not iplemented! | 1020 | memcpy (&mh[1], |
1025 | return tc_t; | 1021 | payload, |
1022 | payload_size); | ||
1023 | if (NULL != cont) | ||
1024 | GNUNET_MQ_notify_sent (env, | ||
1025 | cont, | ||
1026 | cont_cls); | ||
1027 | GNUNET_MQ_send (tc_queue->tc_h->c_mq, | ||
1028 | env); | ||
1026 | } | 1029 | } |
diff --git a/src/transport/transport-testing2.h b/src/transport/transport-testing2.h index e7602e3e2..96a08a193 100644 --- a/src/transport/transport-testing2.h +++ b/src/transport/transport-testing2.h | |||
@@ -181,6 +181,11 @@ GNUNET_TRANSPORT_TESTING_transport_communicator_service_start ( | |||
181 | void *cb_cls); | 181 | void *cb_cls); |
182 | 182 | ||
183 | 183 | ||
184 | void | ||
185 | GNUNET_TRANSPORT_TESTING_transport_communicator_service_stop ( | ||
186 | struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h); | ||
187 | |||
188 | |||
184 | /** | 189 | /** |
185 | * @brief Instruct communicator to open a queue | 190 | * @brief Instruct communicator to open a queue |
186 | * | 191 | * |
@@ -202,14 +207,17 @@ GNUNET_TRANSPORT_TESTING_transport_communicator_open_queue (struct | |||
202 | * @brief Instruct communicator to send data | 207 | * @brief Instruct communicator to send data |
203 | * | 208 | * |
204 | * @param tc_queue The queue to use for sending | 209 | * @param tc_queue The queue to use for sending |
210 | * @param cont function to call when done sending | ||
211 | * @param cont_cls closure for @a cont | ||
205 | * @param payload Data to send | 212 | * @param payload Data to send |
206 | * @param payload_size Size of the payload | 213 | * @param payload_size Size of the @a payload |
207 | * | ||
208 | * @return Handle to the transmission | ||
209 | */ | 214 | */ |
210 | struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorTransmission * | 215 | void |
211 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (struct | 216 | GNUNET_TRANSPORT_TESTING_transport_communicator_send (struct |
212 | GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue | 217 | GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue |
213 | *tc_queue, | 218 | *tc_queue, |
219 | GNUNET_SCHEDULER_TaskCallback | ||
220 | cont, | ||
221 | void *cont_cls, | ||
214 | const void *payload, | 222 | const void *payload, |
215 | size_t payload_size); | 223 | size_t payload_size); |