| /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
| |
| #include <unistd.h> |
| |
| #include "macro.h" |
| #include "ratelimit.h" |
| #include "tests.h" |
| #include "time-util.h" |
| |
| TEST(ratelimit_below) { |
| int i; |
| RateLimit ratelimit = { 1 * USEC_PER_SEC, 10 }; |
| |
| for (i = 0; i < 10; i++) |
| assert_se(ratelimit_below(&ratelimit)); |
| assert_se(!ratelimit_below(&ratelimit)); |
| sleep(1); |
| for (i = 0; i < 10; i++) |
| assert_se(ratelimit_below(&ratelimit)); |
| |
| ratelimit = (const RateLimit) { 0, 10 }; |
| for (i = 0; i < 10000; i++) |
| assert_se(ratelimit_below(&ratelimit)); |
| } |
| |
| TEST(ratelimit_num_dropped) { |
| int i; |
| RateLimit ratelimit = { 1 * USEC_PER_SEC, 10 }; |
| |
| for (i = 0; i < 10; i++) { |
| assert_se(ratelimit_below(&ratelimit)); |
| assert_se(ratelimit_num_dropped(&ratelimit) == 0); |
| } |
| assert_se(!ratelimit_below(&ratelimit)); |
| assert_se(ratelimit_num_dropped(&ratelimit) == 1); |
| assert_se(!ratelimit_below(&ratelimit)); |
| assert_se(ratelimit_num_dropped(&ratelimit) == 2); |
| sleep(1); |
| assert_se(ratelimit_below(&ratelimit)); |
| assert_se(ratelimit_num_dropped(&ratelimit) == 0); |
| } |
| |
| DEFINE_TEST_MAIN(LOG_INFO); |