Mir

Merge lp:~vanvugt/mir/TestClientInput-resampled into lp:mir

Proposed by Daniel van Vugt
Status: Merged
Approved by: Cemil Azizoglu
Approved revision: no longer in the source branch.
Merged at revision: 3456
Proposed branch: lp:~vanvugt/mir/TestClientInput-resampled
Merge into: lp:mir
Diff against target: 62 lines (+52/-0)
1 file modified
tests/acceptance-tests/test_client_input.cpp (+52/-0)
To merge this branch: bzr merge lp:~vanvugt/mir/TestClientInput-resampled
Reviewer Review Type Date Requested Status
Cemil Azizoglu (community) Approve
Alan Griffiths Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+291607@code.launchpad.net

Commit message

Add a new acceptance test to cover input resampling:
TEST_F(TestClientInput, receives_one_touch_event_per_frame)

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

FAILED: Continuous integration, rev:3454
https://mir-jenkins.ubuntu.com/job/mir-ci/814/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/815/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/852
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/843
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/843
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/825
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/825/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/825
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/825/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/825
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/825/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/825
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/825/artifact/output/*zip*/output.zip
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/825/console

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

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

FAILED: Continuous integration, rev:3456
https://mir-jenkins.ubuntu.com/job/mir-ci/822/
Executed test runs:
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-mir/827/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-0-fetch/864
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=vivid+overlay/855
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-1-sourcepkg/release=xenial/855
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=clang,platform=mesa,release=vivid+overlay/837/console
    FAILURE: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=amd64,compiler=gcc,platform=mesa,release=xenial/837/console
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/837
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=cross-armhf,compiler=gcc,platform=android,release=vivid+overlay/837/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/837
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=android,release=vivid+overlay/837/artifact/output/*zip*/output.zip
    SUCCESS: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/837
        deb: https://mir-jenkins.ubuntu.com/job/build-2-binpkg-mir/arch=i386,compiler=gcc,platform=mesa,release=xenial/837/artifact/output/*zip*/output.zip

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

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

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

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

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

I feel a little concerned about the use of real time, but this is probably good enough.

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

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_client_input.cpp'
2--- tests/acceptance-tests/test_client_input.cpp 2016-04-11 16:56:16 +0000
3+++ tests/acceptance-tests/test_client_input.cpp 2016-04-13 07:01:07 +0000
4@@ -587,6 +587,58 @@
5 first_client.all_events_received.wait_for(2s);
6 }
7
8+TEST_F(TestClientInput, receives_one_touch_event_per_frame)
9+{
10+ positions[first] = screen_geometry;
11+ Client first_client(new_connection(), first);
12+
13+ int const frame_rate = 60;
14+ int const input_rate = 500;
15+ int const nframes = 100;
16+ int const nframes_error = 50;
17+ int const inputs_per_frame = input_rate / frame_rate;
18+ int const ninputs = nframes * inputs_per_frame;
19+ auto const frame_time = 1000ms / frame_rate;
20+
21+ int received_input_events = 0;
22+
23+ EXPECT_CALL(first_client, handle_input(_))
24+ .Times(Between(nframes-nframes_error, nframes+nframes_error))
25+ .WillRepeatedly(InvokeWithoutArgs(
26+ [&received_input_events]()
27+ {
28+ ++received_input_events;
29+ }));
30+
31+ fake_touch_screen->emit_event(mis::a_touch_event()
32+ .at_position({0,0}));
33+
34+ ASSERT_THAT(input_rate, Ge(2 * frame_rate));
35+ ASSERT_THAT(ninputs, Gt(2 * nframes));
36+ for (int i = 0; i < ninputs; ++i)
37+ {
38+ int const x = i;
39+ int const y = 2 * i;
40+ fake_touch_screen->emit_event(mis::a_touch_event()
41+ .with_action(mis::TouchParameters::Action::Move)
42+ .at_position({x,y}));
43+
44+ // I would like to:
45+ //std::this_thread::sleep_for(1000ms/input_rate);
46+ // but this is more robust under Valgrind:
47+ if (!((i+1) % inputs_per_frame))
48+ std::this_thread::sleep_for(frame_time);
49+ }
50+
51+ std::this_thread::sleep_for(2 * frame_time);
52+ // Remove reference to local received_input_events
53+ Mock::VerifyAndClearExpectations(&first_client);
54+
55+ float const client_input_events_per_frame =
56+ (float)received_input_events / nframes;
57+ EXPECT_NEAR(1.0f, client_input_events_per_frame, 0.2f);
58+}
59+
60 TEST_F(TestClientInput, send_mir_input_events_through_surface)
61 {
62 Client first_client(new_connection(), first);

Subscribers

People subscribed via source and target branches