aboutsummaryrefslogtreecommitdiff
path: root/tests/test-throttle.c
diff options
context:
space:
mode:
authorAlberto Garcia <berto@igalia.com>2016-02-18 12:27:05 +0200
committerKevin Wolf <kwolf@redhat.com>2016-02-22 14:08:06 +0100
commiteb8a1a1cbda15d776d6d505f14f61c7852f6a51a (patch)
tree6f389e62399796d8e327d9db4dbafd5c7e844254 /tests/test-throttle.c
parent398befdf50b71176ade6f9c07075a2f41bd6dd32 (diff)
throttle: Check that burst_level leaks correctly
This patch expands test_leak_bucket() to check that burst_level leaks correctly. Signed-off-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'tests/test-throttle.c')
-rw-r--r--tests/test-throttle.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/test-throttle.c b/tests/test-throttle.c
index 34f1f9efa1..145ba085f2 100644
--- a/tests/test-throttle.c
+++ b/tests/test-throttle.c
@@ -60,6 +60,22 @@ static void test_leak_bucket(void)
g_assert(bkt.avg == 150);
g_assert(bkt.max == 15);
g_assert(double_cmp(bkt.level, 0));
+
+ /* check that burst_level leaks correctly */
+ bkt.burst_level = 6;
+ bkt.max = 250;
+ bkt.burst_length = 2; /* otherwise burst_level will not leak */
+ throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 100);
+ g_assert(double_cmp(bkt.burst_level, 3.5));
+
+ throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 100);
+ g_assert(double_cmp(bkt.burst_level, 1));
+
+ throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 100);
+ g_assert(double_cmp(bkt.burst_level, 0));
+
+ throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 100);
+ g_assert(double_cmp(bkt.burst_level, 0));
}
static void test_compute_wait(void)