Merge "add retry to DisplayRefreshRateTest" into jb-dev
diff --git a/tests/tests/view/src/android/view/cts/DisplayRefreshRateTest.java b/tests/tests/view/src/android/view/cts/DisplayRefreshRateTest.java
index a4c9318..cc2517d 100644
--- a/tests/tests/view/src/android/view/cts/DisplayRefreshRateTest.java
+++ b/tests/tests/view/src/android/view/cts/DisplayRefreshRateTest.java
@@ -25,6 +25,8 @@
import android.view.WindowManager;
import android.util.Log;
+import java.lang.InterruptedException;
+import java.lang.Thread;
import java.util.ArrayList;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
@@ -50,6 +52,7 @@
private class FpsResult {
private float mFps;
private boolean mValid = false;
+ private boolean mRestartRequested = false;
public final synchronized void notifyResult(float fps) {
if (!mValid) {
@@ -67,6 +70,17 @@
}
return mFps;
}
+
+ public synchronized void restart() {
+ mRestartRequested = true;
+ mValid = false;
+ }
+ public synchronized boolean restartNecessary() {
+ return mRestartRequested;
+ }
+ public synchronized void ackRestart() {
+ mRestartRequested = false;
+ }
}
private class Renderer implements GLSurfaceView.Renderer {
@@ -117,6 +131,11 @@
break;
case STATE_DONE:
+ if (mResult.restartNecessary()) {
+ mResult.ackRestart();
+ mState = STATE_START;
+ Log.d(TAG, "restarting");
+ }
break;
}
@@ -150,10 +169,9 @@
GLSurfaceView.RENDERMODE_CONTINUOUSLY);
}
- public void testRefreshRate() {
+ public void testRefreshRate() throws java.lang.InterruptedException {
+ boolean fpsOk = false;
GLSurfaceViewStubActivity activity = getActivity();
- float achievedFps = mResult.waitResult();
- activity.finish();
WindowManager wm = (WindowManager)activity
.getView()
@@ -162,10 +180,22 @@
Display dpy = wm.getDefaultDisplay();
float claimedFps = dpy.getRefreshRate();
- Log.d(TAG, "claimed " + claimedFps + " fps, " +
- "achieved " + achievedFps + " fps");
-
- assertTrue(Math.abs(claimedFps - achievedFps) <= FPS_TOLERANCE);
+ for (int i = 0; i < 3; i++) {
+ float achievedFps = mResult.waitResult();
+ Log.d(TAG, "claimed " + claimedFps + " fps, " +
+ "achieved " + achievedFps + " fps");
+ fpsOk = Math.abs(claimedFps - achievedFps) <= FPS_TOLERANCE;
+ if (fpsOk) {
+ break;
+ } else {
+ // it could be other sctivity like bug report capturing for other failures
+ // sleep for a while and re-try
+ Thread.sleep(10000);
+ mResult.restart();
+ }
+ }
+ activity.finish();
+ assertTrue(fpsOk);
}
}