diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2019-04-26 16:22:17 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2019-04-26 16:22:17 +0000 |
commit | 58b482856cf37b0519e516ab8dc1105ba958f8b2 (patch) | |
tree | 0c46396e98741dfae4ce907bc8ef8c54418b3753 /tests/profile/statsd-stress.c | |
parent | Adding upstream version 1.14.0~rc0. (diff) | |
download | netdata-58b482856cf37b0519e516ab8dc1105ba958f8b2.tar.xz netdata-58b482856cf37b0519e516ab8dc1105ba958f8b2.zip |
Adding upstream version 1.14.0.upstream/1.14.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/profile/statsd-stress.c')
-rw-r--r-- | tests/profile/statsd-stress.c | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/tests/profile/statsd-stress.c b/tests/profile/statsd-stress.c deleted file mode 100644 index 435d58d5..00000000 --- a/tests/profile/statsd-stress.c +++ /dev/null @@ -1,151 +0,0 @@ -/* SPDX-License-Identifier: GPL-3.0-or-later */ -#include <stdlib.h> -#include <arpa/inet.h> -#include <netinet/in.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <unistd.h> -#include <string.h> -#include <time.h> -#include <pthread.h> - -void diep(char *s) -{ - perror(s); - exit(1); -} - -size_t run_threads = 1; -size_t metrics = 1024; - -#define SERVER_IP "127.0.0.1" -#define PORT 8125 - -size_t myrand(size_t max) { - size_t loops = max / RAND_MAX; - size_t i; - - size_t ret = rand(); - for(i = 0; i < loops ;i++) - ret += rand(); - - return ret % max; -} - -struct thread_data { - size_t id; - struct sockaddr_in *si_other; - int slen; - size_t counter; -}; - -static void *report_thread(void *__data) { - struct thread_data *data = (struct thread_data *)__data; - - size_t last = 0; - for (;;) { - size_t i; - size_t total = 0; - for(i = 0; i < run_threads ;i++) - total += data[i].counter; - - printf("%zu metrics/s\n", total-last); - last = total; - - sleep(1); - printf("\033[F\033[J"); - } - - return NULL; -} - -char *types[] = {"g", "c", "m", "ms", "h", "s", NULL}; -// char *types[] = {"g", "c", "C", "h", "ms", NULL}; // brubeck compatible - -static void *spam_thread(void *__data) { - struct thread_data *data = (struct thread_data *)__data; - - int s; - char packet[1024]; - - if ((s = socket(AF_INET, SOCK_DGRAM, 0))==-1) - diep("socket"); - - char **packets = malloc(sizeof(char *) * metrics); - size_t i, *lengths = malloc(sizeof(size_t) * metrics); - size_t t; - - for(i = 0, t = 0; i < metrics ;i++, t++) { - if(!types[t]) t = 0; - char *type = types[t]; - - lengths[i] = sprintf(packet, "stress.%s.t%zu.m%zu:%zu|%s", type, data->id, i, myrand(metrics), type); - packets[i] = strdup(packet); - // printf("packet %zu, of length %zu: '%s'\n", i, lengths[i], packets[i]); - } - //printf("\n"); - - for (;;) { - for(i = 0; i < metrics ;i++) { - if (sendto(s, packets[i], lengths[i], 0, (void *)data->si_other, data->slen) < 0) { - printf("C ==> DROPPED\n"); - return NULL; - } - data->counter++; - } - } - - free(packets); - free(lengths); - close(s); - return NULL; -} - -int main(int argc, char *argv[]) -{ - if (argc != 5) { - fprintf(stderr, "Usage: '%s THREADS METRICS IP PORT'\n", argv[0]); - exit(-1); - } - - run_threads = atoi(argv[1]); - metrics = atoi(argv[2]); - char *ip = argv[3]; - int port = atoi(argv[4]); - - struct thread_data data[run_threads]; - struct sockaddr_in si_other; - pthread_t threads[run_threads], report; - size_t i; - - srand(time(NULL)); - - memset(&si_other, 0, sizeof(si_other)); - si_other.sin_family = AF_INET; - si_other.sin_port = htons(port); - if (inet_aton(ip, &si_other.sin_addr)==0) { - fprintf(stderr, "inet_aton() of ip '%s' failed\n", ip); - exit(1); - } - - for (i = 0; i < run_threads; ++i) { - data[i].id = i; - data[i].si_other = &si_other; - data[i].slen = sizeof(si_other); - data[i].counter = 0; - pthread_create(&threads[i], NULL, spam_thread, &data[i]); - } - - printf("\n"); - printf("THREADS : %zu\n", run_threads); - printf("METRICS : %zu\n", metrics); - printf("DESTINATION : %s:%d\n", ip, port); - printf("\n"); - pthread_create(&report, NULL, report_thread, &data); - - for (i =0; i < run_threads; ++i) - pthread_join(threads[i], NULL); - - return 0; -} |