Mir

Merge lp:~afrantzis/mir/fix-1576760-increase-timeout into lp:mir

Proposed by Alexandros Frantzis
Status: Merged
Approved by: Alexandros Frantzis
Approved revision: no longer in the source branch.
Merged at revision: 3572
Proposed branch: lp:~afrantzis/mir/fix-1576760-increase-timeout
Merge into: lp:mir
Diff against target: 263 lines (+29/-29)
1 file modified
tests/acceptance-tests/test_nested_mir.cpp (+29/-29)
To merge this branch: bzr merge lp:~afrantzis/mir/fix-1576760-increase-timeout
Reviewer Review Type Date Requested Status
Cemil Azizoglu (community) Approve
Mir CI Bot continuous-integration Approve
Review via email: mp+298753@code.launchpad.net

Commit message

tests: Increase timeouts to accommodate valgrind slowness

Description of the change

tests: Increase timeouts to accommodate valgrind slowness

Use the existing 'timeout' variable which was set in the code, but not used until now.

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

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

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

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

I suspect these timeouts are overly conservative. If these tests start failing they may take a really long time to run since the timeout value is set to 10 at the moment. We should probably change the timeout to something like 2 or 3, and the (two) instances that require more than that can be hard-coded to have 5 or 10.

review: Needs Fixing
Revision history for this message
Alexandros Frantzis (afrantzis) wrote :

> I suspect these timeouts are overly conservative

valgrind under high load (which we can't control since our CI infrastructure is shared) can be *extremely* slow.

> If these tests start failing they may take a really long time to run since the timeout value
> is set to 10 at the moment

Can't say I am really concerned with this, since it's an extremely rare event and will add in the absolute worst case 5 minutes of total time.

> We should probably change the timeout to something like 2 or 3, and the (two) instances
> that require more than that can be hard-coded to have 5 or 10.

The reason the two instances have 5 and 10 respectively (which are arbitrary values), is because they failed at some point in the past due to valgrind slowness and high CI load, so we had to increase their timeouts.

Now NestedServer.when_monitor_plugged_in_client_is_notified_of_new_display_configuration happened to fail, so we need to increase its timeout too. In the future another test will fail for the same reason.

I tried setting the timeout to 3 seconds, but I got some failures locally under valgrind + sufficient load in various NestedServer.* tests. I couldn't get failures locally with 5 seconds, so I think it's a good start, although only time will tell if it will be enough for CI.

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

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

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

review: Approve (continuous-integration)
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
=== modified file 'tests/acceptance-tests/test_nested_mir.cpp'
--- tests/acceptance-tests/test_nested_mir.cpp 2016-06-02 08:19:38 +0000
+++ tests/acceptance-tests/test_nested_mir.cpp 2016-07-01 10:10:31 +0000
@@ -122,7 +122,7 @@
122 {{640, 0}, {1920, 1080}}122 {{640, 0}, {1920, 1080}}
123};123};
124124
125std::chrono::seconds const timeout{10};125std::chrono::seconds const timeout{5};
126126
127// We can't rely on the test environment to have X cursors, so we provide some of our own127// We can't rely on the test environment to have X cursors, so we provide some of our own
128auto const cursor_names = {128auto const cursor_names = {
@@ -405,7 +405,7 @@
405405
406 mir_wait_for(mir_connection_apply_display_config(connection, configuration));406 mir_wait_for(mir_connection_apply_display_config(connection, configuration));
407407
408 initial_condition.wait_for(std::chrono::seconds{1});408 initial_condition.wait_for(timeout);
409 mir_display_config_destroy(configuration);409 mir_display_config_destroy(configuration);
410410
411 Mock::VerifyAndClearExpectations(&display);411 Mock::VerifyAndClearExpectations(&display);
@@ -598,7 +598,7 @@
598 trigger_lifecycle_event(mir_lifecycle_state_resumed);598 trigger_lifecycle_event(mir_lifecycle_state_resumed);
599 trigger_lifecycle_event(mir_lifecycle_state_will_suspend);599 trigger_lifecycle_event(mir_lifecycle_state_will_suspend);
600600
601 events_processed.wait_for(std::chrono::seconds{5});601 events_processed.wait_for(timeout);
602}602}
603603
604TEST_F(NestedServer, client_may_connect_to_nested_server_and_create_surface)604TEST_F(NestedServer, client_may_connect_to_nested_server_and_create_surface)
@@ -613,7 +613,7 @@
613 return mir_surface_get_visibility(surface) == mir_surface_visibility_exposed613 return mir_surface_get_visibility(surface) == mir_surface_visibility_exposed
614 && mir_surface_get_focus(surface) == mir_surface_focused;614 && mir_surface_get_focus(surface) == mir_surface_focused;
615 },615 },
616 std::chrono::seconds{10});616 timeout);
617617
618 EXPECT_TRUE(became_exposed_and_focused);618 EXPECT_TRUE(became_exposed_and_focused);
619}619}
@@ -644,7 +644,7 @@
644644
645 mir_buffer_stream_swap_buffers_sync(mir_surface_get_buffer_stream(surface));645 mir_buffer_stream_swap_buffers_sync(mir_surface_get_buffer_stream(surface));
646646
647 wait.wait_for(std::chrono::seconds{1});647 wait.wait_for(timeout);
648 Mock::VerifyAndClearExpectations(mock_session_mediator_report.get());648 Mock::VerifyAndClearExpectations(mock_session_mediator_report.get());
649 }649 }
650650
@@ -659,7 +659,7 @@
659 mir_surface_release_sync(surface);659 mir_surface_release_sync(surface);
660 mir_connection_release(connection);660 mir_connection_release(connection);
661661
662 wait.wait_for(std::chrono::seconds{1});662 wait.wait_for(timeout);
663 Mock::VerifyAndClearExpectations(mock_session_mediator_report.get());663 Mock::VerifyAndClearExpectations(mock_session_mediator_report.get());
664 }664 }
665665
@@ -685,7 +685,7 @@
685 client.update_display_configuration(685 client.update_display_configuration(
686 [](MirDisplayConfiguration* config) { config->outputs->used = false; });686 [](MirDisplayConfiguration* config) { config->outputs->used = false; });
687687
688 condition.wait_for(std::chrono::seconds{1});688 condition.wait_for(timeout);
689 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());689 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
690}690}
691691
@@ -714,7 +714,7 @@
714714
715 mir_wait_for(mir_connection_apply_display_config(client.connection, configuration));715 mir_wait_for(mir_connection_apply_display_config(client.connection, configuration));
716716
717 config_reported.wait_for(std::chrono::seconds{3});717 config_reported.wait_for(timeout);
718 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());718 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
719 }719 }
720720
@@ -744,7 +744,7 @@
744 mir_wait_for(mir_surface_configure_cursor(client.surface, conf));744 mir_wait_for(mir_surface_configure_cursor(client.surface, conf));
745 mir_cursor_configuration_destroy(conf);745 mir_cursor_configuration_destroy(conf);
746746
747 condition.wait_for(std::chrono::seconds{1});747 condition.wait_for(timeout);
748 Mock::VerifyAndClearExpectations(mock_cursor.get());748 Mock::VerifyAndClearExpectations(mock_cursor.get());
749 }749 }
750750
@@ -756,7 +756,7 @@
756756
757 mir_buffer_stream_swap_buffers_sync(client.buffer_stream);757 mir_buffer_stream_swap_buffers_sync(client.buffer_stream);
758758
759 condition.wait_for(std::chrono::seconds{1});759 condition.wait_for(timeout);
760 Mock::VerifyAndClearExpectations(mock_cursor.get());760 Mock::VerifyAndClearExpectations(mock_cursor.get());
761 }761 }
762}762}
@@ -786,7 +786,7 @@
786 mir_wait_for(mir_surface_configure_cursor(client.surface, cursor));786 mir_wait_for(mir_surface_configure_cursor(client.surface, cursor));
787 mir_cursor_configuration_destroy(cursor);787 mir_cursor_configuration_destroy(cursor);
788788
789 condition.wait_for(std::chrono::seconds{1});789 condition.wait_for(timeout);
790 Mock::VerifyAndClearExpectations(mock_cursor.get());790 Mock::VerifyAndClearExpectations(mock_cursor.get());
791 }791 }
792}792}
@@ -814,7 +814,7 @@
814 mir_wait_for(mir_surface_configure_cursor(client.surface, conf));814 mir_wait_for(mir_surface_configure_cursor(client.surface, conf));
815 mir_cursor_configuration_destroy(conf);815 mir_cursor_configuration_destroy(conf);
816816
817 condition.wait_for(std::chrono::seconds{1});817 condition.wait_for(timeout);
818 Mock::VerifyAndClearExpectations(mock_cursor.get());818 Mock::VerifyAndClearExpectations(mock_cursor.get());
819 }819 }
820820
@@ -867,7 +867,7 @@
867867
868 ClientWithAPaintedSurface client(nested_mir);868 ClientWithAPaintedSurface client(nested_mir);
869869
870 condition.wait_for(std::chrono::seconds{1});870 condition.wait_for(timeout);
871 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());871 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
872872
873 EXPECT_TRUE(condition.raised());873 EXPECT_TRUE(condition.raised());
@@ -889,7 +889,7 @@
889889
890 server.the_display_configuration_controller()->set_base_configuration(new_config);890 server.the_display_configuration_controller()->set_base_configuration(new_config);
891891
892 condition.wait_for(std::chrono::seconds{1});892 condition.wait_for(timeout);
893 Mock::VerifyAndClearExpectations(config_policy.get());893 Mock::VerifyAndClearExpectations(config_policy.get());
894 EXPECT_TRUE(condition.raised());894 EXPECT_TRUE(condition.raised());
895}895}
@@ -914,7 +914,7 @@
914 [](MirDisplayConfiguration* config) { config->outputs->used = false; });914 [](MirDisplayConfiguration* config) { config->outputs->used = false; });
915915
916 // Wait for initial config to be applied916 // Wait for initial config to be applied
917 initial_condition.wait_for(std::chrono::seconds{1});917 initial_condition.wait_for(timeout);
918918
919 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());919 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
920 ASSERT_TRUE(initial_condition.raised());920 ASSERT_TRUE(initial_condition.raised());
@@ -924,7 +924,7 @@
924 .WillRepeatedly(InvokeWithoutArgs([&] { condition.raise(); }));924 .WillRepeatedly(InvokeWithoutArgs([&] { condition.raise(); }));
925 }925 }
926926
927 condition.wait_for(std::chrono::seconds{1});927 condition.wait_for(timeout);
928 EXPECT_TRUE(condition.raised());928 EXPECT_TRUE(condition.raised());
929 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());929 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
930}930}
@@ -952,7 +952,7 @@
952 nested_mir.server.the_display_configuration_controller()->set_base_configuration(new_config);952 nested_mir.server.the_display_configuration_controller()->set_base_configuration(new_config);
953953
954 // Wait for initial config to be applied954 // Wait for initial config to be applied
955 initial_condition.wait_for(std::chrono::seconds{1});955 initial_condition.wait_for(timeout);
956 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());956 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
957 ASSERT_TRUE(initial_condition.raised());957 ASSERT_TRUE(initial_condition.raised());
958958
@@ -960,7 +960,7 @@
960 .WillRepeatedly(InvokeWithoutArgs([&] { condition.raise(); }));960 .WillRepeatedly(InvokeWithoutArgs([&] { condition.raise(); }));
961 }961 }
962962
963 condition.wait_for(std::chrono::seconds{1});963 condition.wait_for(timeout);
964 EXPECT_TRUE(condition.raised());964 EXPECT_TRUE(condition.raised());
965}965}
966966
@@ -979,7 +979,7 @@
979979
980 display.emit_configuration_change_event(new_config);980 display.emit_configuration_change_event(new_config);
981981
982 client_config_changed.wait_for(std::chrono::seconds{1});982 client_config_changed.wait_for(timeout);
983983
984 ASSERT_TRUE(client_config_changed.raised());984 ASSERT_TRUE(client_config_changed.raised());
985985
@@ -1008,7 +1008,7 @@
1008 nested_mir.server.the_display_configuration_controller()->set_base_configuration(initial_config);1008 nested_mir.server.the_display_configuration_controller()->set_base_configuration(initial_config);
10091009
1010 // Wait for initial config to be applied1010 // Wait for initial config to be applied
1011 initial_condition.wait_for(std::chrono::seconds{1});1011 initial_condition.wait_for(timeout);
1012 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());1012 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
1013 ASSERT_TRUE(initial_condition.raised());1013 ASSERT_TRUE(initial_condition.raised());
1014 }1014 }
@@ -1024,7 +1024,7 @@
10241024
1025 display.emit_configuration_change_event(expect_config);1025 display.emit_configuration_change_event(expect_config);
10261026
1027 condition.wait_for(std::chrono::seconds{1});1027 condition.wait_for(timeout);
1028 EXPECT_TRUE(condition.raised());1028 EXPECT_TRUE(condition.raised());
1029 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());1029 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
1030}1030}
@@ -1054,7 +1054,7 @@
10541054
1055 display.emit_configuration_change_event(expect_config);1055 display.emit_configuration_change_event(expect_config);
10561056
1057 condition.wait_for(std::chrono::seconds{1});1057 condition.wait_for(timeout);
1058 EXPECT_TRUE(condition.raised());1058 EXPECT_TRUE(condition.raised());
1059 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());1059 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
1060}1060}
@@ -1074,7 +1074,7 @@
10741074
1075 display.emit_configuration_change_event(new_config);1075 display.emit_configuration_change_event(new_config);
10761076
1077 client_config_changed.wait_for(std::chrono::seconds{1});1077 client_config_changed.wait_for(timeout);
10781078
1079 ASSERT_TRUE(client_config_changed.raised());1079 ASSERT_TRUE(client_config_changed.raised());
10801080
@@ -1109,7 +1109,7 @@
1109 nested_mir.server.the_display_configuration_controller()->set_base_configuration(initial_config);1109 nested_mir.server.the_display_configuration_controller()->set_base_configuration(initial_config);
11101110
1111 // Wait for initial config to be applied1111 // Wait for initial config to be applied
1112 initial_condition.wait_for(std::chrono::seconds{1});1112 initial_condition.wait_for(timeout);
1113 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());1113 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
1114 ASSERT_TRUE(initial_condition.raised());1114 ASSERT_TRUE(initial_condition.raised());
1115 }1115 }
@@ -1131,7 +1131,7 @@
11311131
1132 display.emit_configuration_change_event(new_config);1132 display.emit_configuration_change_event(new_config);
11331133
1134 condition.wait_for(std::chrono::seconds{1});1134 condition.wait_for(timeout);
1135 EXPECT_TRUE(condition.raised());1135 EXPECT_TRUE(condition.raised());
1136 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());1136 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
1137}1137}
@@ -1167,7 +1167,7 @@
11671167
1168 display.emit_configuration_change_event(new_config);1168 display.emit_configuration_change_event(new_config);
11691169
1170 condition.wait_for(std::chrono::seconds{1});1170 condition.wait_for(timeout);
1171 EXPECT_TRUE(condition.raised());1171 EXPECT_TRUE(condition.raised());
1172 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());1172 Mock::VerifyAndClearExpectations(the_mock_display_configuration_report().get());
1173}1173}
@@ -1192,7 +1192,7 @@
11921192
1193 display.emit_configuration_change_event(new_config);1193 display.emit_configuration_change_event(new_config);
11941194
1195 condition.wait_for(std::chrono::seconds{1});1195 condition.wait_for(timeout);
11961196
1197 EXPECT_TRUE(condition.raised());1197 EXPECT_TRUE(condition.raised());
11981198
@@ -1235,14 +1235,14 @@
12351235
1236 display.emit_configuration_change_event(new_hw_config);1236 display.emit_configuration_change_event(new_hw_config);
12371237
1238 client_config_changed.wait_for(std::chrono::seconds{1});1238 client_config_changed.wait_for(timeout);
1239 if (client_config_changed.raised())1239 if (client_config_changed.raised())
1240 {1240 {
1241 client.update_display_configuration(1241 client.update_display_configuration(
1242 [](MirDisplayConfiguration* config) { config->outputs->orientation = mir_orientation_inverted; });1242 [](MirDisplayConfiguration* config) { config->outputs->orientation = mir_orientation_inverted; });
1243 }1243 }
12441244
1245 host_config_change.wait_for(std::chrono::seconds{1});1245 host_config_change.wait_for(timeout);
12461246
1247 EXPECT_TRUE(host_config_change.raised());1247 EXPECT_TRUE(host_config_change.raised());
1248 Mock::VerifyAndClearExpectations(&display);1248 Mock::VerifyAndClearExpectations(&display);

Subscribers

People subscribed via source and target branches