The compiler should recognize that these are constant expressions, but let's better make this explicit, so that the linker can safely share the initializations all over the place.
44 lines
1.3 KiB
C
44 lines
1.3 KiB
C
/* 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);
|