diff options
author | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2019-12-24 00:56:18 +0900 |
---|---|---|
committer | Schanzenbach, Martin <mschanzenbach@posteo.de> | 2019-12-24 00:56:18 +0900 |
commit | a8bd85390032ee41c59cbdae645fe982bee51e7e (patch) | |
tree | 5a4958164461251f8739834237bcaa9e8b855273 | |
parent | a140ff725af20d55f80463969a415bbd85ff63bc (diff) | |
download | gnunet-a8bd85390032ee41c59cbdae645fe982bee51e7e.tar.gz gnunet-a8bd85390032ee41c59cbdae645fe982bee51e7e.zip |
more minor fixes and better measurements
-rw-r--r-- | src/transport/test_communicator_basic.c | 100 |
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 | ||
85 | static int buf_len = 0; | 84 | static int num_sent = 0; |
86 | 85 | ||
87 | static uint32_t ack = 0; | 86 | static 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) | |||
242 | static void | 247 | static void |
243 | short_test (void *cls) | 248 | short_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 ( |