diff options
| author | 2017-05-16 15:12:06 -0700 | |
|---|---|---|
| committer | 2017-05-22 16:54:45 +0000 | |
| commit | 2d2d51adcfeda7bb644e30f9518331da3727cb94 (patch) | |
| tree | 38ed9afeb1a89abcd9171a3c8bf15f2cc8f1882c | |
| parent | 305c332c2219878f009aefad4471d87f08359981 (diff) | |
Attempt to fix broken/flaky FadeTransitionTest
Bug 38349552
This is a blind fix for the test, but it should reduce flakiness
by removing the use of Thread.sleep().
Test: ran FadeTransitionTest
Change-Id: I3156c354b370c34885dfbfd7ecd1b5908a9dab44
| -rw-r--r-- | core/tests/coretests/src/android/transition/FadeTransitionTest.java | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/core/tests/coretests/src/android/transition/FadeTransitionTest.java b/core/tests/coretests/src/android/transition/FadeTransitionTest.java index 7e7e8151cc50..0140a04269b6 100644 --- a/core/tests/coretests/src/android/transition/FadeTransitionTest.java +++ b/core/tests/coretests/src/android/transition/FadeTransitionTest.java @@ -50,7 +50,7 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato TransitionLatch latch = setVisibilityInTransition(fadeOut, R.id.square1, View.INVISIBLE); assertTrue(latch.startLatch.await(200, TimeUnit.MILLISECONDS)); assertEquals(View.VISIBLE, square1.getVisibility()); - Thread.sleep(100); + waitForAnimation(); assertFalse(square1.getTransitionAlpha() == 0 || square1.getTransitionAlpha() == 1); assertTrue(latch.endLatch.await(400, TimeUnit.MILLISECONDS)); assertEquals(1.0f, square1.getTransitionAlpha()); @@ -60,7 +60,7 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato latch = setVisibilityInTransition(fadeIn, R.id.square1, View.VISIBLE); assertTrue(latch.startLatch.await(200, TimeUnit.MILLISECONDS)); assertEquals(View.VISIBLE, square1.getVisibility()); - Thread.sleep(100); + waitForAnimation(); final float transitionAlpha = square1.getTransitionAlpha(); assertTrue("expecting transitionAlpha to be between 0 and 1. Was " + transitionAlpha, transitionAlpha > 0 && transitionAlpha < 1); @@ -77,7 +77,7 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato fadeOut.addListener(fadeOutValueCheck); TransitionLatch outLatch = setVisibilityInTransition(fadeOut, R.id.square1, View.INVISIBLE); assertTrue(outLatch.startLatch.await(200, TimeUnit.MILLISECONDS)); - Thread.sleep(100); + waitForAnimation(); Fade fadeIn = new Fade(Fade.MODE_IN); FadeValueCheck fadeInValueCheck = new FadeValueCheck(square1); @@ -110,7 +110,7 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato fadeIn.addListener(fadeInValueCheck); TransitionLatch inLatch = setVisibilityInTransition(fadeIn, R.id.square1, View.VISIBLE); assertTrue(inLatch.startLatch.await(200, TimeUnit.MILLISECONDS)); - Thread.sleep(100); + waitForAnimation(); Fade fadeOut = new Fade(Fade.MODE_OUT); FadeValueCheck fadeOutValueCheck = new FadeValueCheck(square1); @@ -145,6 +145,23 @@ public class FadeTransitionTest extends ActivityInstrumentationTestCase2<Animato return latch; } + /** + * Waits for two animation frames to ensure animation values change. + */ + private void waitForAnimation() throws InterruptedException { + final CountDownLatch latch = new CountDownLatch(2); + mActivity.getWindow().getDecorView().postOnAnimation(new Runnable() { + @Override + public void run() { + latch.countDown(); + if (latch.getCount() > 0) { + mActivity.getWindow().getDecorView().postOnAnimation(this); + } + } + }); + assertTrue(latch.await(1, TimeUnit.SECONDS)); + } + public static class TransitionLatch implements TransitionListener { public CountDownLatch startLatch = new CountDownLatch(1); public CountDownLatch endLatch = new CountDownLatch(1); |