Mir

Merge lp:~vanvugt/mir/enhance-ClientLatency-tests-2 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: 3898
Proposed branch: lp:~vanvugt/mir/enhance-ClientLatency-tests-2
Merge into: lp:mir
Prerequisite: lp:~vanvugt/mir/enhance-ClientLatency-tests-1
Diff against target: 76 lines (+66/-0)
1 file modified
tests/acceptance-tests/test_latency.cpp (+66/-0)
To merge this branch: bzr merge lp:~vanvugt/mir/enhance-ClientLatency-tests-2
Reviewer Review Type Date Requested Status
Cemil Azizoglu (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+313673@code.launchpad.net

Commit message

Add ClientLatency tests for mir_buffer_stream_swap_buffers, since the
existing ones only test mir_buffer_stream_swap_buffers_sync.

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

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

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

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

Umm ok

review: Approve

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-12-21 08:59:11 +0000
3+++ tests/acceptance-tests/test_latency.cpp 2016-12-21 08:59:11 +0000
4@@ -353,6 +353,72 @@
5 display.group.dump_latency();
6 }
7
8+TEST_F(ClientLatency, average_async_swap_latency_is_less_than_nbuffers)
9+{
10+ auto stream = mir_surface_get_buffer_stream(surface);
11+ auto const deadline = steady_clock::now() + 60s;
12+
13+ while (stats.frames_composited() < test_frames &&
14+ steady_clock::now() < deadline)
15+ {
16+ auto submission_id = mir_debug_surface_current_buffer_id(surface);
17+ stats.record_submission(submission_id);
18+ mir_wait_for(mir_buffer_stream_swap_buffers(stream, NULL, NULL));
19+ }
20+
21+ ASSERT_THAT(stats.frames_composited(), Ge(test_frames));
22+
23+ if (server.get_options()->get<bool>(mtd::logging_opt))
24+ display.group.dump_latency();
25+
26+ auto average_latency = display.group.average_latency();
27+
28+ EXPECT_THAT(average_latency, Lt(expected_client_buffers));
29+}
30+
31+TEST_F(ClientLatency, max_async_swap_latency_is_limited_to_nbuffers)
32+{
33+ auto stream = mir_surface_get_buffer_stream(surface);
34+ auto const deadline = steady_clock::now() + 60s;
35+
36+ while (stats.frames_composited() < test_frames &&
37+ steady_clock::now() < deadline)
38+ {
39+ auto submission_id = mir_debug_surface_current_buffer_id(surface);
40+ stats.record_submission(submission_id);
41+ mir_wait_for(mir_buffer_stream_swap_buffers(stream, NULL, NULL));
42+ }
43+
44+ ASSERT_THAT(stats.frames_composited(), Ge(test_frames));
45+
46+ auto max_latency = display.group.max_latency();
47+ EXPECT_THAT(max_latency, Le(expected_client_buffers));
48+}
49+
50+TEST_F(ClientLatency, async_swap_dropping_latency_is_closer_to_zero_than_one)
51+{
52+ auto stream = mir_surface_get_buffer_stream(surface);
53+ mir_buffer_stream_set_swapinterval(stream, 0);
54+ stats.swap_interval = 0;
55+ auto const deadline = steady_clock::now() + 60s;
56+
57+ while (stats.frames_composited() < test_frames &&
58+ steady_clock::now() < deadline)
59+ {
60+ auto submission_id = mir_debug_surface_current_buffer_id(surface);
61+ stats.record_submission(submission_id);
62+ mir_wait_for(mir_buffer_stream_swap_buffers(stream, NULL, NULL));
63+ }
64+
65+ ASSERT_THAT(stats.frames_composited(), Ge(test_frames));
66+
67+ auto average_latency = display.group.average_latency();
68+ EXPECT_THAT(average_latency, Lt(0.5f));
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 int const throttled_input_rate = refresh_rate * 3 / 4;

Subscribers

People subscribed via source and target branches