mirror of
https://github.com/mii443/qemu.git
synced 2025-08-22 15:15:46 +00:00
tests/unit/test-throttle: Avoid unintended integer division
In test_compute_wait() we do double units = bkt.max / 10; which does an integer division and then assigns it to a double variable, and similarly later on in the expression for an assertion. Use 10.0 so that we do a floating point division and calculate the exact value, rather than doing an integer division. Spotted by Coverity. Resolves: Coverity CID 1432564 Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Message-id: 20240312183810.557768-7-peter.maydell@linaro.org
This commit is contained in:
@ -127,13 +127,13 @@ static void test_compute_wait(void)
|
|||||||
bkt.avg = 10;
|
bkt.avg = 10;
|
||||||
bkt.max = 200;
|
bkt.max = 200;
|
||||||
for (i = 0; i < 22; i++) {
|
for (i = 0; i < 22; i++) {
|
||||||
double units = bkt.max / 10;
|
double units = bkt.max / 10.0;
|
||||||
bkt.level += units;
|
bkt.level += units;
|
||||||
bkt.burst_level += units;
|
bkt.burst_level += units;
|
||||||
throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 10);
|
throttle_leak_bucket(&bkt, NANOSECONDS_PER_SECOND / 10);
|
||||||
wait = throttle_compute_wait(&bkt);
|
wait = throttle_compute_wait(&bkt);
|
||||||
g_assert(double_cmp(bkt.burst_level, 0));
|
g_assert(double_cmp(bkt.burst_level, 0));
|
||||||
g_assert(double_cmp(bkt.level, (i + 1) * (bkt.max - bkt.avg) / 10));
|
g_assert(double_cmp(bkt.level, (i + 1) * (bkt.max - bkt.avg) / 10.0));
|
||||||
/* We can do bursts for the 2 seconds we have configured in
|
/* We can do bursts for the 2 seconds we have configured in
|
||||||
* burst_length. We have 100 extra milliseconds of burst
|
* burst_length. We have 100 extra milliseconds of burst
|
||||||
* because bkt.level has been leaking during this time.
|
* because bkt.level has been leaking during this time.
|
||||||
|
Reference in New Issue
Block a user