From 9d8e37d8a44ddbd3916ceaac1db9a70a025b04d0 Mon Sep 17 00:00:00 2001 From: Alex Hultman Date: Tue, 6 Apr 2021 18:15:45 +0200 Subject: [PATCH] Make scale_test report latency for broadcasts --- benchmarks/scale_test.c | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/benchmarks/scale_test.c b/benchmarks/scale_test.c index a37ff7e..17e9948 100644 --- a/benchmarks/scale_test.c +++ b/benchmarks/scale_test.c @@ -6,6 +6,8 @@ int SSL; #include #include #include +#include +#include unsigned char web_socket_request[26] = {130, 128 | 20, 1, 2, 3, 4}; @@ -113,6 +115,46 @@ struct us_socket_t *on_http_socket_end(struct us_socket_t *s) { // should never get a response! struct us_socket_t *on_http_socket_data(struct us_socket_t *s, char *data, int length) { + + // is this a broadcasted unix time in millis? + if (length % 10 == 0) { + + // data sent first will come first, so it is oldest + + struct timespec ts; + timespec_get(&ts, TIME_UTC); + + int64_t millis = ts.tv_sec * 1000 + ts.tv_nsec / 1000000; + + + int64_t received_millis; + memcpy(&received_millis, data + 2, 8); + + static int counter; + static int max_latency; + static long average_latency; + + int latency = millis - received_millis; + + average_latency += latency; + + if (max_latency < latency) { + max_latency = latency; + } + + if (++counter % 10000 == 0) { + printf("Max latency: %d ms\n", max_latency); + printf("Average latency: %ld ms\n\n", average_latency / 10000); + max_latency = 0; + average_latency = 0; + } + + + + } + + + return s; }