Add rate limit test

This commit is contained in:
Nils O. Selåsdal
2013-10-12 01:29:00 +02:00
parent 3d93ec6091
commit 52eb710db7
2 changed files with 150 additions and 0 deletions
+148
View File
@@ -0,0 +1,148 @@
#include <check.h>
#include <ucore/rate_limit.h>
START_TEST (test_ratelimit_1)
struct RateLimit r;
long now = 10;
int i;
uc_ratelimit_init(&r, 30, 2, now);
for (i = 0; i < 30; i++) {
fail_if(!uc_ratelimit_allow(&r, now));
}
fail_if(uc_ratelimit_allow(&r, now));
END_TEST
START_TEST (test_ratelimit_2)
struct RateLimit r;
long now = 10;
uc_ratelimit_init(&r, 1, 1, now);
fail_if(!uc_ratelimit_allow(&r, now));
fail_if(uc_ratelimit_allow(&r, now));
now += 1;
fail_if(!uc_ratelimit_allow(&r, now));
fail_if(uc_ratelimit_allow(&r, now));
END_TEST
START_TEST (test_ratelimit_3)
struct RateLimit r;
long now = 10;
int i;
uc_ratelimit_init(&r, 10, 5, now);
for (i = 0; i < 10; i++) {
fail_if(!uc_ratelimit_allow(&r, now));
}
now += 1;
for (i = 0; i < 2; i++) {
fail_if(!uc_ratelimit_allow(&r, now));
}
fail_if(uc_ratelimit_allow(&r, now));
now += 1;
for (i = 0; i < 2; i++) {
fail_if(!uc_ratelimit_allow(&r, now));
}
fail_if(uc_ratelimit_allow(&r, now));
now += 1;
for (i = 0; i < 2; i++) {
fail_if(!uc_ratelimit_allow(&r, now));
}
fail_if(uc_ratelimit_allow(&r, now));
END_TEST
START_TEST (test_ratelimit_4)
struct RateLimit r;
long now = 10;
int i;
uc_ratelimit_init(&r, 10, 5, now);
for (i = 0; i < 10; i++) {
fail_if(!uc_ratelimit_allow(&r, now));
}
fail_if(uc_ratelimit_allow(&r, now));
uc_ratelimit_reset(&r, now);
for (i = 0; i < 10; i++) {
fail_if(!uc_ratelimit_allow(&r, now));
}
fail_if(uc_ratelimit_allow(&r, now));
END_TEST
START_TEST (test_ratelimit_5)
struct RateLimit r;
long now = 1400000000;
uc_ratelimit_init(&r, 1, 10, now);
fail_if(!uc_ratelimit_allow(&r, now));
fail_if(uc_ratelimit_allow(&r, now));
now += 5;
fail_if(uc_ratelimit_allow(&r, now));
now += 5;
fail_if(!uc_ratelimit_allow(&r, now));
fail_if(uc_ratelimit_allow(&r, now));
now += 200;
fail_if(!uc_ratelimit_allow(&r, now));
fail_if(uc_ratelimit_allow(&r, now));
END_TEST
START_TEST (test_ratelimit_time_backward)
struct RateLimit r;
long now = 1400000000;
uc_ratelimit_init(&r, 1, 10, now);
fail_if(!uc_ratelimit_allow(&r, now));
fail_if(uc_ratelimit_allow(&r, now));
now -= 5;
fail_if(uc_ratelimit_allow(&r, now));
END_TEST
Suite *ratelimit_suite(void)
{
Suite *s = suite_create("ratelimit");
TCase *tc = tcase_create("ratelimit tests");
tcase_add_test(tc, test_ratelimit_1);
tcase_add_test(tc, test_ratelimit_2);
tcase_add_test(tc, test_ratelimit_3);
tcase_add_test(tc, test_ratelimit_4);
tcase_add_test(tc, test_ratelimit_5);
tcase_add_test(tc, test_ratelimit_time_backward);
suite_add_tcase(s, tc);
return s;
}