aboutsummaryrefslogtreecommitdiff
path: root/src/transport/test_communicator_basic.c
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2019-12-24 00:56:18 +0900
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2019-12-24 00:56:18 +0900
commita8bd85390032ee41c59cbdae645fe982bee51e7e (patch)
tree5a4958164461251f8739834237bcaa9e8b855273 /src/transport/test_communicator_basic.c
parenta140ff725af20d55f80463969a415bbd85ff63bc (diff)
downloadgnunet-a8bd85390032ee41c59cbdae645fe982bee51e7e.tar.gz
gnunet-a8bd85390032ee41c59cbdae645fe982bee51e7e.zip
more minor fixes and better measurements
Diffstat (limited to 'src/transport/test_communicator_basic.c')
-rw-r--r--src/transport/test_communicator_basic.c100
1 files changed, 44 insertions, 56 deletions
diff --git a/src/transport/test_communicator_basic.c b/src/transport/test_communicator_basic.c
index 176996b9d..d7622a2cc 100644
--- a/src/transport/test_communicator_basic.c
+++ b/src/transport/test_communicator_basic.c
@@ -64,15 +64,15 @@ static struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *my_tc;
64 64
65#define LONG_MESSAGE_SIZE 32000 65#define LONG_MESSAGE_SIZE 32000
66 66
67#define SHORT_BURST_SECONDS 2 67#define BURST_PACKETS 5000
68 68
69#define LONG_BURST_SECONDS 2 69#define BURST_RUNS 1
70 70
71#define SHORT_BURST_WINDOW \ 71#define SHORT_BURST_WINDOW \
72 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,SHORT_BURST_SECONDS) 72 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,5)
73 73
74#define LONG_BURST_WINDOW \ 74#define LONG_BURST_WINDOW \
75 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,SHORT_BURST_SECONDS) 75 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,2)
76 76
77#define BURST_SHORT 0 77#define BURST_SHORT 0
78 78
@@ -80,9 +80,8 @@ static struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *my_tc;
80 80
81#define SIZE_CHECK 2 81#define SIZE_CHECK 2
82 82
83#define MAX_BUF_LEN 1
84 83
85static int buf_len = 0; 84static int num_sent = 0;
86 85
87static uint32_t ack = 0; 86static uint32_t ack = 0;
88 87
@@ -187,12 +186,18 @@ size_test (void *cls)
187 payload, 186 payload,
188 ack); 187 ack);
189 GNUNET_free (payload); 188 GNUNET_free (payload);
189 ack += 5;
190 if (ack < 64000)
191 GNUNET_SCHEDULER_add_now (&size_test, NULL);
192 else
193 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
194 &size_test, NULL);
190 return; 195 return;
191 } 196 }
192 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, 197 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
193 "Size packet test done.\n"); 198 "Size packet test done.\n");
194 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, 199 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
195 "#packets: %lu -- latency: %lu\n", 200 "#packets: %lu -- latency: %lu microseconds\n",
196 num_received, 201 num_received,
197 avg_latency); 202 avg_latency);
198 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 203 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -208,32 +213,32 @@ long_test (void *cls)
208 struct GNUNET_TIME_Relative duration = GNUNET_TIME_absolute_get_duration ( 213 struct GNUNET_TIME_Relative duration = GNUNET_TIME_absolute_get_duration (
209 start_long); 214 start_long);
210 char *payload; 215 char *payload;
211 if (LONG_BURST_WINDOW.rel_value_us > duration.rel_value_us) 216 if (num_sent < BURST_PACKETS)
212 { 217 {
213 //FIXME: Not sure how aggressive we should be here, our transport does not 218 payload = make_payload (LONG_MESSAGE_SIZE);
214 //implement congestion control or flow control... (also for the other three 219 GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc,
215 if (buf_len < MAX_BUF_LEN) 220 payload,
216 { 221 LONG_MESSAGE_SIZE);
217 payload = make_payload (LONG_MESSAGE_SIZE); 222 num_sent++;
218 GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, 223 GNUNET_free (payload);
219 payload, 224 if (num_sent < BURST_PACKETS)
220 LONG_MESSAGE_SIZE);
221 buf_len++;
222 GNUNET_free (payload);
223 GNUNET_SCHEDULER_add_now (&long_test, NULL); 225 GNUNET_SCHEDULER_add_now (&long_test, NULL);
224 } 226 if (num_sent == BURST_PACKETS)
227 GNUNET_SCHEDULER_add_delayed (LONG_BURST_WINDOW,
228 &long_test, NULL);
225 return; 229 return;
226 } 230 }
231 duration = GNUNET_TIME_absolute_get_duration (start_long);
227 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, 232 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
228 "Long size packet test done.\n"); 233 "Long size packet test done.\n");
229 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, 234 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
230 "goodput: %lu b/s -- #packets: %lu -- latency: %lu\n", 235 "goodput: %lu kb/s -- #packets: %lu -- latency: %lu microseconds\n",
231 (LONG_MESSAGE_SIZE * num_received) / LONG_BURST_SECONDS, 236 (LONG_MESSAGE_SIZE * num_received) / (duration.rel_value_us / 1000),
232 num_received, 237 num_received,
233 avg_latency); 238 avg_latency);
234 ack = 10; 239 ack = 10;
235 num_received = 0; 240 num_received = 0;
236 buf_len = 0; 241 num_sent = 0;
237 avg_latency = 0; 242 avg_latency = 0;
238 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &size_test, NULL); 243 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &size_test, NULL);
239} 244}
@@ -242,33 +247,34 @@ long_test (void *cls)
242static void 247static void
243short_test (void *cls) 248short_test (void *cls)
244{ 249{
245 struct GNUNET_TIME_Relative duration = GNUNET_TIME_absolute_get_duration ( 250 struct GNUNET_TIME_Relative duration;
246 start_short);
247 char *payload; 251 char *payload;
248 if (SHORT_BURST_WINDOW.rel_value_us > duration.rel_value_us) 252 if (num_sent < BURST_PACKETS)
249 { 253 {
250 if (buf_len < MAX_BUF_LEN) 254 payload = make_payload (SHORT_MESSAGE_SIZE);
251 { 255 GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc,
252 payload = make_payload (SHORT_MESSAGE_SIZE); 256 payload,
253 GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, 257 SHORT_MESSAGE_SIZE);
254 payload, 258 num_sent++;
255 SHORT_MESSAGE_SIZE); 259 GNUNET_free (payload);
256 buf_len++; 260 if (num_sent < BURST_PACKETS)
257 GNUNET_free (payload);
258 GNUNET_SCHEDULER_add_now (&short_test, NULL); 261 GNUNET_SCHEDULER_add_now (&short_test, NULL);
259 } 262 if (num_sent == BURST_PACKETS)
263 GNUNET_SCHEDULER_add_delayed (SHORT_BURST_WINDOW,
264 &short_test, NULL);
260 return; 265 return;
261 } 266 }
267 duration = GNUNET_TIME_absolute_get_duration (start_short);
262 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, 268 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
263 "Short size packet test done.\n"); 269 "Short size packet test done.\n");
264 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, 270 GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE,
265 "goodput: %lu b/s -- #packets: %lu -- latency: %lu\n", 271 "goodput: %lu kb/s -- #packets: %lu -- latency: %lu microseconds\n",
266 (SHORT_MESSAGE_SIZE * num_received) / SHORT_BURST_SECONDS, 272 (SHORT_MESSAGE_SIZE * num_received) / (duration.rel_value_us / 1000),
267 num_received, 273 num_received,
268 avg_latency); 274 avg_latency);
269 start_long = GNUNET_TIME_absolute_get (); 275 start_long = GNUNET_TIME_absolute_get ();
270 phase = BURST_LONG; 276 phase = BURST_LONG;
271 buf_len = 0; 277 num_sent = 0;
272 avg_latency = 0; 278 avg_latency = 0;
273 num_received = 0; 279 num_received = 0;
274 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &long_test, NULL); 280 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &long_test, NULL);
@@ -298,7 +304,6 @@ add_queue_cb (void *cls,
298 "Queue established, starting test...\n"); 304 "Queue established, starting test...\n");
299 start_short = GNUNET_TIME_absolute_get (); 305 start_short = GNUNET_TIME_absolute_get ();
300 my_tc = tc_queue; 306 my_tc = tc_queue;
301 buf_len = 0;
302 phase = BURST_SHORT; 307 phase = BURST_SHORT;
303 GNUNET_SCHEDULER_add_now (&short_test, tc_queue); 308 GNUNET_SCHEDULER_add_now (&short_test, tc_queue);
304} 309}
@@ -346,9 +351,6 @@ incoming_message_cb (void *cls,
346 GNUNET_assert (SHORT_MESSAGE_SIZE == payload_len); 351 GNUNET_assert (SHORT_MESSAGE_SIZE == payload_len);
347 num_received++; 352 num_received++;
348 update_avg_latency (payload); 353 update_avg_latency (payload);
349 if (buf_len == MAX_BUF_LEN)
350 GNUNET_SCHEDULER_add_now (&short_test, NULL);
351 buf_len--;
352 } 354 }
353 else if (phase == BURST_LONG) 355 else if (phase == BURST_LONG)
354 { 356 {
@@ -356,26 +358,11 @@ incoming_message_cb (void *cls,
356 return; // Ignore 358 return; // Ignore
357 num_received++; 359 num_received++;
358 update_avg_latency (payload); 360 update_avg_latency (payload);
359 if (buf_len == MAX_BUF_LEN)
360 GNUNET_SCHEDULER_add_now (&long_test, NULL);
361 buf_len--;
362 } 361 }
363 else // if (phase == SIZE_CHECK) { 362 else // if (phase == SIZE_CHECK) {
364 { 363 {
365 // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
366 // "Receiving payload with size %lu...\n", payload_len);
367 if (ack != payload_len)
368 {
369 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
370 "Error receiving message, corrupted.\n");
371 ret = 1;
372 GNUNET_SCHEDULER_shutdown ();
373 return;
374 }
375 num_received++; 364 num_received++;
376 update_avg_latency (payload); 365 update_avg_latency (payload);
377 ack += 5; // Next expected message size
378 GNUNET_SCHEDULER_add_now (&size_test, NULL);
379 } 366 }
380} 367}
381 368
@@ -390,6 +377,7 @@ run (void *cls)
390{ 377{
391 ret = 0; 378 ret = 0;
392 num_received = 0; 379 num_received = 0;
380 num_sent = 0;
393 for (int i = 0; i < NUM_PEERS; i++) 381 for (int i = 0; i < NUM_PEERS; i++)
394 { 382 {
395 tc_hs[i] = GNUNET_TRANSPORT_TESTING_transport_communicator_service_start ( 383 tc_hs[i] = GNUNET_TRANSPORT_TESTING_transport_communicator_service_start (