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
=== modified file 'tests/acceptance-tests/test_latency.cpp'
--- tests/acceptance-tests/test_latency.cpp 2016-10-12 06:03:15 +0000
+++ tests/acceptance-tests/test_latency.cpp 2016-10-21 07:54:20 +0000
@@ -69,7 +69,7 @@
6969
70 mir::optional_value<unsigned int> latency;70 mir::optional_value<unsigned int> latency;
7171
72 for (auto i = submissions.begin(); i != submissions.end(); i++)72 for (auto i = submissions.begin(); i != submissions.end();)
73 {73 {
74 if (i->buffer_id == submission_id)74 if (i->buffer_id == submission_id)
75 {75 {
@@ -81,8 +81,14 @@
81 i = submissions.erase(submissions.begin(), i);81 i = submissions.erase(submissions.begin(), i);
8282
83 latency = visible_frame - i->visible_frame_when_submitted;83 latency = visible_frame - i->visible_frame_when_submitted;
84 submissions.erase(i);84 i = submissions.erase(i);
85 break;85 if (swap_interval > 0)
86 break;
87 //else for interval zero delete dropped entries and use last
88 }
89 else
90 {
91 i++;
86 }92 }
87 }93 }
8894
@@ -101,6 +107,8 @@
101 return true;107 return true;
102 }108 }
103109
110 unsigned int swap_interval{1};
111
104private:112private:
105 std::mutex mutex;113 std::mutex mutex;
106 std::condition_variable posted;114 std::condition_variable posted;
@@ -250,6 +258,8 @@
250 del);258 del);
251 visible_surface = std::make_unique<mtf::VisibleSurface>(spec.get());259 visible_surface = std::make_unique<mtf::VisibleSurface>(spec.get());
252 surface = *visible_surface;260 surface = *visible_surface;
261
262 stats.swap_interval = 1;
253 }263 }
254264
255 void TearDown() override265 void TearDown() override
@@ -312,6 +322,28 @@
312 EXPECT_THAT(max_latency, Le(expected_client_buffers));322 EXPECT_THAT(max_latency, Le(expected_client_buffers));
313}323}
314324
325TEST_F(ClientLatency, dropping_latency_is_limited_to_one)
326{
327 using namespace testing;
328
329 auto stream = mir_surface_get_buffer_stream(surface);
330 mir_buffer_stream_set_swapinterval(stream, 0);
331 stats.swap_interval = 0;
332
333 do
334 {
335 auto submission_id = mir_debug_surface_current_buffer_id(surface);
336 stats.record_submission(submission_id);
337 mir_buffer_stream_swap_buffers_sync(stream);
338 } while (!stats.wait_for_posts(test_submissions, std::chrono::seconds(0)));
339
340 auto max_latency = display.group.max_latency();
341 EXPECT_THAT(max_latency, Le(1u));
342
343 if (server.get_options()->get<bool>(mtd::logging_opt))
344 display.group.dump_latency();
345}
346
315TEST_F(ClientLatency, throttled_input_rate_yields_lower_latency)347TEST_F(ClientLatency, throttled_input_rate_yields_lower_latency)
316{348{
317 using namespace testing;349 using namespace testing;

Subscribers

People subscribed via source and target branches