Commit ff563867 authored by Philip Withnall's avatar Philip Withnall
Browse files

tests: Add some rounding tolerance in timeout test



Occasionally this test fails in CI with the message:
```
assertion failed: (current_time / 1000000 - last_time / 1000000 == 1)
```

The way this calculation is done at the moment, a difference of 1001ms
between `current_time` and `last_time` can result in failure, if the
times are close to a multiple to 1000ms.

Change it to only truncate the result after doing the subtraction, and
add a 500ms tolerance to account for scheduling delays in the test. (For
example, the `test_func()` could be called, then descheduled before it
gets to call `g_get_monotonic_time()`.

Additionally, change the test to use `g_assert_cmpint()` so that future
failures provide more useful debug information.
Signed-off-by: Philip Withnall's avatarPhilip Withnall <pwithnall@endlessos.org>
parent a4be8577
......@@ -152,11 +152,13 @@ test_func (gpointer data)
/* We accept 2 on the first iteration because _add_seconds() can
* have an initial latency of 1 second, see its documentation.
*
* Allow up to 500ms leeway for rounding and scheduling.
*/
if (count == 0)
g_assert (current_time / 1000000 - last_time / 1000000 <= 2);
g_assert_cmpint (current_time / 1000 - last_time / 1000, <=, 2500);
else
g_assert (current_time / 1000000 - last_time / 1000000 == 1);
g_assert_cmpint (current_time / 1000 - last_time / 1000, <=, 1500);
last_time = current_time;
count++;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment