Mir

Merge lp:~vanvugt/mir/clarify-FrameClock-catchup-test into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Approved by: Daniel van Vugt
Approved revision: no longer in the source branch.
Merged at revision: 4058
Proposed branch: lp:~vanvugt/mir/clarify-FrameClock-catchup-test
Merge into: lp:mir
Diff against target: 45 lines (+10/-2)
1 file modified
tests/unit-tests/client/test_frame_clock.cpp (+10/-2)
To merge this branch: bzr merge lp:~vanvugt/mir/clarify-FrameClock-catchup-test
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Approve
Alan Griffiths Approve
Review via email: mp+318348@code.launchpad.net

Commit message

Improve the catch-up test for FrameClock.

This helps to better understand LP: #1665802.

Description of the change

It's not a fix, but probably a prerequisite to the fix.

To post a comment you must log in.
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

PASSED: Continuous integration, rev:4058
https://mir-jenkins.ubuntu.com/job/mir-ci/3066/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/4104
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4191
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4181
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4181
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4181
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4131
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4131/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4131
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4131/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4131
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4131/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4131
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4131/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4131
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4131/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4131
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4131/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://mir-jenkins.ubuntu.com/job/mir-ci/3066/rebuild

review: Approve (continuous-integration)
Revision history for this message
Alan Griffiths (alan-griffiths) wrote :

I'm not convinced that "a", "b", "c", "d" and "e" are great names, but that's pre-existing.

review: Approve
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

FAILED: Autolanding.
More details in the following jenkins job:
https://mir-jenkins.ubuntu.com/job/mir-autolanding/1151/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/4110/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/1214/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/4197
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/4187
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/4187
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=zesty/4187
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4137
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=zesty/4137/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4137
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/4137/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4137
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=zesty/4137/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4137/console
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/4137/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/4137/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4137
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/4137/artifact/output/*zip*/output.zip

review: Needs Fixing (continuous-integration)
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

^^^
Bug 1661187 x 2

Revision history for this message
Mir CI Bot (mir-ci-bot) :
review: Approve (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'tests/unit-tests/client/test_frame_clock.cpp'
2--- tests/unit-tests/client/test_frame_clock.cpp 2016-11-29 08:17:27 +0000
3+++ tests/unit-tests/client/test_frame_clock.cpp 2017-02-27 10:12:27 +0000
4@@ -368,18 +368,24 @@
5 EXPECT_EQ(2, callbacks); // resync because we went idle too long
6 }
7
8-TEST_F(FrameClockTest, one_frame_skipped_only_after_2_frames_take_3_periods)
9+TEST_F(FrameClockTest, frames_skipped_only_after_2_frames_take_over_3_periods)
10 {
11 FrameClock clock(with_fake_time);
12+ auto& now = fake_time[CLOCK_MONOTONIC];
13 clock.set_period(one_frame);
14
15- PosixTimestamp a;
16+ auto a = clock.next_frame_after(PosixTimestamp());
17+ fake_sleep_until(a);
18+ fake_sleep_for(one_frame / 9); // Start with a fast frame
19+
20 auto b = clock.next_frame_after(a);
21+ EXPECT_GT(b, now);
22
23 fake_sleep_until(b);
24 fake_sleep_for(one_frame * 3 / 2); // Render time: 1.5 frames
25
26 auto c = clock.next_frame_after(b);
27+ EXPECT_LT(c, now); // Targets the past, catching up
28 EXPECT_EQ(one_frame, c - b); // No frame skipped
29
30 fake_sleep_until(c);
31@@ -387,12 +393,14 @@
32
33 auto d = clock.next_frame_after(c);
34 EXPECT_EQ(2*one_frame, d - c); // One frame skipped
35+ EXPECT_LT(d, now); // Targets the past, catching up again
36
37 fake_sleep_until(d);
38 fake_sleep_for(one_frame/4); // Short render time, immediate recovery
39
40 auto e = clock.next_frame_after(d);
41 EXPECT_EQ(one_frame, e - d); // No frame skipped. We have recovered.
42+ EXPECT_GT(e, now); // And targeting the future
43 }
44
45 TEST_F(FrameClockTest, nesting_adds_zero_lag)

Subscribers

People subscribed via source and target branches