annotate src/lib/test-log-throttle.c @ 22664:fea53c2725c0

director: Fix director_max_parallel_moves/kicks type Should be uint, not time.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 09 Nov 2017 12:24:16 +0200
parents 2e2563132d5f
children cb108f786fb4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21390
2e2563132d5f Updated copyright notices to include the year 2017.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents: 20582
diff changeset
1 /* Copyright (c) 2016-2017 Dovecot authors, see the included COPYING file */
20582
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
2
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
3 #include "test-lib.h"
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
4 #include "ioloop.h"
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
5 #include "log-throttle.h"
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
6
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
7 static unsigned int test_log_throttle_new_events_count;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
8
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
9 static void test_log_throttle_callback(unsigned int new_events_count,
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
10 struct ioloop *ioloop)
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
11 {
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
12 test_log_throttle_new_events_count = new_events_count;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
13 io_loop_stop(ioloop);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
14 }
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
15
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
16 void test_log_throttle(void)
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
17 {
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
18 const struct log_throttle_settings set = {
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
19 .throttle_at_max_per_interval = 10,
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
20 .unthrottle_at_max_per_interval = 5,
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
21 .interval_msecs = 10,
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
22 };
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
23 struct log_throttle *throttle;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
24 struct ioloop *ioloop;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
25 unsigned int i;
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
26
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
27 test_begin("log throttle");
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
28
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
29 ioloop = io_loop_create();
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
30 throttle = log_throttle_init(&set, test_log_throttle_callback, ioloop);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
31
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
32 /* throttle once and drop out just below */
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
33 for (i = 0; i < 10; i++)
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
34 test_assert_idx(log_throttle_accept(throttle), i);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
35 for (i = 0; i < 4; i++)
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
36 test_assert_idx(!log_throttle_accept(throttle), i);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
37
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
38 io_loop_run(ioloop);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
39 test_assert(test_log_throttle_new_events_count == 4);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
40
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
41 /* throttle and continue just above */
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
42 for (i = 0; i < 10; i++)
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
43 test_assert_idx(log_throttle_accept(throttle), i);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
44 for (i = 0; i < 5; i++)
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
45 test_assert_idx(!log_throttle_accept(throttle), i);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
46
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
47 io_loop_run(ioloop);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
48 test_assert(test_log_throttle_new_events_count == 5);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
49
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
50 /* we should be still throttled */
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
51 test_assert(!log_throttle_accept(throttle));
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
52
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
53 log_throttle_deinit(&throttle);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
54 io_loop_destroy(&ioloop);
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
55
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
56 test_end();
3e02c55136a6 lib: Added log throttling API.
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
diff changeset
57 }