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
=== modified file 'tests/acceptance-tests/test_latency.cpp'
--- tests/acceptance-tests/test_latency.cpp 2016-12-21 08:59:11 +0000
+++ tests/acceptance-tests/test_latency.cpp 2016-12-21 08:59:11 +0000
@@ -353,6 +353,72 @@
353 display.group.dump_latency();353 display.group.dump_latency();
354}354}
355355
356TEST_F(ClientLatency, average_async_swap_latency_is_less_than_nbuffers)
357{
358 auto stream = mir_surface_get_buffer_stream(surface);
359 auto const deadline = steady_clock::now() + 60s;
360
361 while (stats.frames_composited() < test_frames &&
362 steady_clock::now() < deadline)
363 {
364 auto submission_id = mir_debug_surface_current_buffer_id(surface);
365 stats.record_submission(submission_id);
366 mir_wait_for(mir_buffer_stream_swap_buffers(stream, NULL, NULL));
367 }
368
369 ASSERT_THAT(stats.frames_composited(), Ge(test_frames));
370
371 if (server.get_options()->get<bool>(mtd::logging_opt))
372 display.group.dump_latency();
373
374 auto average_latency = display.group.average_latency();
375
376 EXPECT_THAT(average_latency, Lt(expected_client_buffers));
377}
378
379TEST_F(ClientLatency, max_async_swap_latency_is_limited_to_nbuffers)
380{
381 auto stream = mir_surface_get_buffer_stream(surface);
382 auto const deadline = steady_clock::now() + 60s;
383
384 while (stats.frames_composited() < test_frames &&
385 steady_clock::now() < deadline)
386 {
387 auto submission_id = mir_debug_surface_current_buffer_id(surface);
388 stats.record_submission(submission_id);
389 mir_wait_for(mir_buffer_stream_swap_buffers(stream, NULL, NULL));
390 }
391
392 ASSERT_THAT(stats.frames_composited(), Ge(test_frames));
393
394 auto max_latency = display.group.max_latency();
395 EXPECT_THAT(max_latency, Le(expected_client_buffers));
396}
397
398TEST_F(ClientLatency, async_swap_dropping_latency_is_closer_to_zero_than_one)
399{
400 auto stream = mir_surface_get_buffer_stream(surface);
401 mir_buffer_stream_set_swapinterval(stream, 0);
402 stats.swap_interval = 0;
403 auto const deadline = steady_clock::now() + 60s;
404
405 while (stats.frames_composited() < test_frames &&
406 steady_clock::now() < deadline)
407 {
408 auto submission_id = mir_debug_surface_current_buffer_id(surface);
409 stats.record_submission(submission_id);
410 mir_wait_for(mir_buffer_stream_swap_buffers(stream, NULL, NULL));
411 }
412
413 ASSERT_THAT(stats.frames_composited(), Ge(test_frames));
414
415 auto average_latency = display.group.average_latency();
416 EXPECT_THAT(average_latency, Lt(0.5f));
417
418 if (server.get_options()->get<bool>(mtd::logging_opt))
419 display.group.dump_latency();
420}
421
356TEST_F(ClientLatency, throttled_input_rate_yields_lower_latency)422TEST_F(ClientLatency, throttled_input_rate_yields_lower_latency)
357{423{
358 int const throttled_input_rate = refresh_rate * 3 / 4;424 int const throttled_input_rate = refresh_rate * 3 / 4;

Subscribers

People subscribed via source and target branches