From 0f9368cdc620d6a35f2341304d423824645dc54f Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Sun, 8 Apr 2018 10:59:08 -0700 Subject: [PATCH] DisplayContentTests: Mark and improve flaky test Marks testForAllWindows as flaky. Also improves assertForAllWindowsOrder to output the actual vs expected output in case the test fails. Bug: 77772044 Test: atest DisplayContentTests Change-Id: I975a02621ffb968af24b962fccbe998ded651715 --- .../server/wm/DisplayContentTests.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/services/tests/servicestests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/servicestests/src/com/android/server/wm/DisplayContentTests.java index 7f1bcac05ffed..845095ae19b90 100644 --- a/services/tests/servicestests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/servicestests/src/com/android/server/wm/DisplayContentTests.java @@ -46,6 +46,7 @@ import android.content.res.Configuration; import android.graphics.Rect; import android.os.SystemClock; import android.platform.test.annotations.Presubmit; +import android.support.test.filters.FlakyTest; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; import android.util.DisplayMetrics; @@ -56,7 +57,9 @@ import android.view.Surface; import com.android.server.wm.utils.WmDisplayCutout; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.LinkedList; import java.util.List; @@ -72,6 +75,7 @@ import java.util.List; public class DisplayContentTests extends WindowTestsBase { @Test + @FlakyTest(bugId = 77772044) public void testForAllWindows() throws Exception { final WindowState exitingAppWindow = createWindow(null, TYPE_BASE_APPLICATION, mDisplayContent, "exiting app"); @@ -495,24 +499,24 @@ public class DisplayContentTests extends WindowTestsBase { assertEquals(displayContent.mBaseDisplayDensity, expectedBaseDensity); } - private void assertForAllWindowsOrder(List expectedWindows) { - final LinkedList actualWindows = new LinkedList(); + private void assertForAllWindowsOrder(List expectedWindowsBottomToTop) { + final LinkedList actualWindows = new LinkedList<>(); // Test forward traversal. mDisplayContent.forAllWindows(actualWindows::addLast, false /* traverseTopToBottom */); - assertEquals(expectedWindows.size(), actualWindows.size()); - for (WindowState w : expectedWindows) { - assertEquals(w, actualWindows.pollFirst()); - } - assertTrue(actualWindows.isEmpty()); + assertThat("bottomToTop", actualWindows, is(expectedWindowsBottomToTop)); + + actualWindows.clear(); // Test backward traversal. mDisplayContent.forAllWindows(actualWindows::addLast, true /* traverseTopToBottom */); - assertEquals(expectedWindows.size(), actualWindows.size()); - for (WindowState w : expectedWindows) { - assertEquals(w, actualWindows.pollLast()); - } - assertTrue(actualWindows.isEmpty()); + assertThat("topToBottom", actualWindows, is(reverseList(expectedWindowsBottomToTop))); + } + + private static List reverseList(List list) { + final ArrayList result = new ArrayList<>(list); + Collections.reverse(result); + return result; } private MotionEvent createTapEvent(float x, float y, boolean isDownEvent) {