Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0f9368cd authored by Adrian Roos's avatar Adrian Roos
Browse files

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
parent 4f9d750e
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -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<WindowState> expectedWindows) {
        final LinkedList<WindowState> actualWindows = new LinkedList();
    private void assertForAllWindowsOrder(List<WindowState> expectedWindowsBottomToTop) {
        final LinkedList<WindowState> 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());
        assertThat("topToBottom", actualWindows, is(reverseList(expectedWindowsBottomToTop)));
    }
        assertTrue(actualWindows.isEmpty());

    private static List<WindowState> reverseList(List<WindowState> list) {
        final ArrayList<WindowState> result = new ArrayList<>(list);
        Collections.reverse(result);
        return result;
    }

    private MotionEvent createTapEvent(float x, float y, boolean isDownEvent) {