Mir

Merge lp:~vanvugt/mir/test-dropping-latency into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Merged at revision: 3788
Proposed branch: lp:~vanvugt/mir/test-dropping-latency
Merge into: lp:mir
Diff against target: 76 lines (+35/-3)
1 file modified
tests/acceptance-tests/test_latency.cpp (+35/-3)
To merge this branch: bzr merge lp:~vanvugt/mir/test-dropping-latency
Reviewer Review Type Date Requested Status
Mir CI Bot continuous-integration Needs Fixing
Cemil Azizoglu (community) Approve
Review via email: mp+308839@code.launchpad.net

Commit message

Add a new test to ClientLatency to check framedropping remains
bound to one frame of lag, from client to screen.

Description of the change

Although I'm not totally confident the test framework exercises
enough production code to catch all possible regressions, it's a
good start.

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

PASSED: Continuous integration, rev:3774
https://mir-jenkins.ubuntu.com/job/mir-ci/2012/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2578
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2641
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2633
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2633
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2633
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2607
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2607/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/2607
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2607/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2607
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2607/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/2607
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2607/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/2607
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2607/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/2607
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2607/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

ok

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

PASSED: Continuous integration, rev:3776
https://mir-jenkins.ubuntu.com/job/mir-ci/2035/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2612
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2675
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2667
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2667
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2667
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2641
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2641/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/2641
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2641/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2641
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2641/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/2641
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2641/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/2641
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2641/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/2641
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2641/artifact/output/*zip*/output.zip

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

review: Approve (continuous-integration)
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/734/
Executed test runs:
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-mir/2638
    FAILURE: https://mir-jenkins.ubuntu.com/job/generic-land-mp/775/console
    None: https://mir-jenkins.ubuntu.com/job/generic-land-mp/776/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/2701
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/2693
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial+overlay/2693
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=yakkety/2693
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2667
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=yakkety/2667/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/2667
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial+overlay/2667/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2667
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=yakkety/2667/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/2667
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/2667/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/2667
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/2667/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/2667
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial+overlay/2667/artifact/output/*zip*/output.zip

review: Needs Fixing (continuous-integration)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'tests/acceptance-tests/test_latency.cpp'
2--- tests/acceptance-tests/test_latency.cpp 2016-10-12 06:03:15 +0000
3+++ tests/acceptance-tests/test_latency.cpp 2016-10-21 07:54:20 +0000
4@@ -69,7 +69,7 @@
5
6 mir::optional_value<unsigned int> latency;
7
8- for (auto i = submissions.begin(); i != submissions.end(); i++)
9+ for (auto i = submissions.begin(); i != submissions.end();)
10 {
11 if (i->buffer_id == submission_id)
12 {
13@@ -81,8 +81,14 @@
14 i = submissions.erase(submissions.begin(), i);
15
16 latency = visible_frame - i->visible_frame_when_submitted;
17- submissions.erase(i);
18- break;
19+ i = submissions.erase(i);
20+ if (swap_interval > 0)
21+ break;
22+ //else for interval zero delete dropped entries and use last
23+ }
24+ else
25+ {
26+ i++;
27 }
28 }
29
30@@ -101,6 +107,8 @@
31 return true;
32 }
33
34+ unsigned int swap_interval{1};
35+
36 private:
37 std::mutex mutex;
38 std::condition_variable posted;
39@@ -250,6 +258,8 @@
40 del);
41 visible_surface = std::make_unique<mtf::VisibleSurface>(spec.get());
42 surface = *visible_surface;
43+
44+ stats.swap_interval = 1;
45 }
46
47 void TearDown() override
48@@ -312,6 +322,28 @@
49 EXPECT_THAT(max_latency, Le(expected_client_buffers));
50 }
51
52+TEST_F(ClientLatency, dropping_latency_is_limited_to_one)
53+{
54+ using namespace testing;
55+
56+ auto stream = mir_surface_get_buffer_stream(surface);
57+ mir_buffer_stream_set_swapinterval(stream, 0);
58+ stats.swap_interval = 0;
59+
60+ do
61+ {
62+ auto submission_id = mir_debug_surface_current_buffer_id(surface);
63+ stats.record_submission(submission_id);
64+ mir_buffer_stream_swap_buffers_sync(stream);
65+ } while (!stats.wait_for_posts(test_submissions, std::chrono::seconds(0)));
66+
67+ auto max_latency = display.group.max_latency();
68+ EXPECT_THAT(max_latency, Le(1u));
69+
70+ if (server.get_options()->get<bool>(mtd::logging_opt))
71+ display.group.dump_latency();
72+}
73+
74 TEST_F(ClientLatency, throttled_input_rate_yields_lower_latency)
75 {
76 using namespace testing;

Subscribers

People subscribed via source and target branches