Mercurial > dovecot > core-2.2
annotate src/lib/test-log-throttle.c @ 23007:36e01285b5b8
lib: buffer - Improve header comment for buffer_insert() and buffer_delete().
author | Stephan Bosch <stephan.bosch@dovecot.fi> |
---|---|
date | Mon, 18 Mar 2019 00:52:37 +0100 |
parents | cb108f786fb4 |
children |
rev | line source |
---|---|
22713
cb108f786fb4
Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
21390
diff
changeset
|
1 /* Copyright (c) 2016-2018 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 } |