File: rmean.cc

package info (click to toggle)
tarantool 1.7.2.385.g952d79e-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 21,556 kB
  • ctags: 28,405
  • sloc: ansic: 180,313; cpp: 26,044; sh: 15,513; python: 4,893; makefile: 1,412
file content (78 lines) | stat: -rw-r--r-- 1,803 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "rmean.h"
#include "memory.h"
#include "unit.h"
#include "fiber.h"

int print_stat(const char *name, int rps, int64_t total, void* ctx)
{
	printf("%s: rps %d, total %d%c", name, rps, (int)total,
	       name[2] == '2' ? '\n' : '\t');
	return 0;
}

void test_100rps(rmean *st)
{
	header();
	printf("Send 100 requests every second for 10 seconds\n");
	printf("Calc rps at third and last second\n");
	for(int i = 0; i < 10; i++) { /* 10 seconds */
		rmean_collect(st, 0, 100); /* send 100 requests */
		rmean_roll(st->stats[0].value, 1);
		rmean_roll(st->stats[1].value, 1);
		if (i == 2 || i == 9) { /* two checks */
			print_stat(st->stats[0].name,
				   rmean_mean(st, 0),
				   rmean_total(st, 0), NULL);
			print_stat(st->stats[1].name,
				   rmean_mean(st, 1),
				   rmean_total(st, 1), NULL);
		}
	}
	/* 10 seconds, 1000 in EV1, 100 rps */
	footer();
}

void test_mean15rps(rmean *st)
{
	header();
	printf("Send 15 rps on the average, and 3 rps to EV2\n");
	for(int i = 0; i < 10; i++) { /* 10 seconds */
		for(int j = 0; j < 15; j++) {
			rmean_collect(st, 0, 1); /* send 15 requests */
			if((i * 3 + 2 + j) % 15 == 0) {
				rmean_roll(st->stats[0].value, 1);
				rmean_roll(st->stats[1].value, 1);
			}
		}
		rmean_collect(st, 1, 3);
	}
	print_stat(st->stats[0].name,
		   rmean_mean(st, 0),
		   rmean_total(st, 0), NULL);
	print_stat(st->stats[1].name,
		   rmean_mean(st, 1),
		   rmean_total(st, 1), NULL);
	/* 10 seconds, 1000 + 150 in EV1, 15 rps. 30 in EV2, 3 rps*/
	footer();
}

int main()
{
	printf("Stat. 2 names, timer simulation\n");

	memory_init();
	fiber_init(fiber_cxx_invoke);

	struct rmean *st;
	const char *name[] = {"EV1", "EV2"};
	st = rmean_new(name, 2);

	test_100rps(st);
	test_mean15rps(st);

	rmean_delete(st);

	fiber_free();
	memory_free();
	return 0;
}