Merge lp:~afrantzis/mir/fix-surface-visibility-event-test into lp:mir
Status: | Merged |
---|---|
Approved by: | Andreas Pokorny |
Approved revision: | no longer in the source branch. |
Merged at revision: | 3550 |
Proposed branch: | lp:~afrantzis/mir/fix-surface-visibility-event-test |
Merge into: | lp:mir |
Diff against target: |
130 lines (+25/-9) 3 files modified
src/include/server/mir/shell/canonical_window_manager.h (+3/-1) src/server/shell/canonical_window_manager.cpp (+2/-0) tests/acceptance-tests/test_client_surface_visibility.cpp (+20/-8) |
To merge this branch: | bzr merge lp:~afrantzis/mir/fix-surface-visibility-event-test |
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Andreas Pokorny (community) | Approve | ||
Cemil Azizoglu (community) | Approve | ||
Mir CI Bot | continuous-integration | Approve | |
Review via email: mp+298135@code.launchpad.net |
Commit message
tests: Fix race conditions affecting MirSurfaceVisib
Description of the change
tests: Fix race conditions affecting MirSurfaceVisib
Three problems/races were identified and fixed:
1. WindowManagerPolicy function calls are normally serialized using locks in BasicWindowManager. However, msh::CanonicalW
2. For reasons unknown, googlemock doesn't fully clear the expectations with VerifyAndClearE
3. Waiting for a surface to become visible is not a sufficient condition for testing that the surface has reached a steady state as needed by the tests. We also need to wait for the surface to get the focus. This MP fixes the problem by waiting for both visibility and focus state when creating a surface. We use a spin_wait instead of monitoring surface events to workaround the same googlemock problem mentioned in (2).
PASSED: Continuous integration, rev:3549 /mir-jenkins. ubuntu. com/job/ mir-ci/ 1173/ /mir-jenkins. ubuntu. com/job/ build-mir/ 1320 /mir-jenkins. ubuntu. com/job/ build-0- fetch/1371 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= vivid+overlay/ 1362 /mir-jenkins. ubuntu. com/job/ build-1- sourcepkg/ release= xenial/ 1362 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= vivid+overlay/ 1334 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= clang,platform= mesa,release= vivid+overlay/ 1334/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial/ 1334 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= amd64,compiler= gcc,platform= mesa,release= xenial/ 1334/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 1334 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= cross-armhf, compiler= gcc,platform= android, release= vivid+overlay/ 1334/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 1334 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= android, release= vivid+overlay/ 1334/artifact/ output/ *zip*/output. zip /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 1334 /mir-jenkins. ubuntu. com/job/ build-2- binpkg- mir/arch= i386,compiler= gcc,platform= mesa,release= xenial/ 1334/artifact/ output/ *zip*/output. zip
https:/
Executed test runs:
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild: /mir-jenkins. ubuntu. com/job/ mir-ci/ 1173/rebuild
https:/