aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/transport/test_communicator_basic.c56
-rw-r--r--src/transport/transport-testing2.c59
-rw-r--r--src/transport/transport-testing2.h16
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
44static struct GNUNET_SCHEDULER_Task *to_task; 44static struct GNUNET_SCHEDULER_Task *to_task;
45 45
46static struct GNUNET_SCHEDULER_Task *active_task;
47
48static int queue_est = GNUNET_NO; 46static int queue_est = GNUNET_NO;
49 47
50static struct GNUNET_PeerIdentity peer_id[NUM_PEERS]; 48static 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
861static void
862do_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
925void
926GNUNET_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 */
996struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorTransmission * 997void
997GNUNET_TRANSPORT_TESTING_transport_communicator_send 998GNUNET_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
184void
185GNUNET_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 */
210struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorTransmission * 215void
211GNUNET_TRANSPORT_TESTING_transport_communicator_send (struct 216GNUNET_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);