summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/tests/powerstatstests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java30
1 files changed, 19 insertions, 11 deletions
diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java
index e4ab227a4840..38fc6a9f91dd 100644
--- a/services/tests/powerstatstests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java
+++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BstatsCpuTimesValidationTest.java
@@ -39,11 +39,11 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
+import android.hardware.display.DisplayManager;
import android.os.BatteryManager;
import android.os.BatteryStats;
import android.os.Bundle;
import android.os.IBinder;
-import android.os.PowerManager;
import android.os.Process;
import android.os.SystemClock;
import android.platform.test.ravenwood.RavenwoodRule;
@@ -52,10 +52,10 @@ import android.util.ArrayMap;
import android.util.DebugUtils;
import android.util.KeyValueListParser;
import android.util.Log;
+import android.view.Display;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
import androidx.test.uiautomator.UiDevice;
import com.android.frameworks.coretests.aidl.ICmdCallback;
@@ -66,7 +66,6 @@ import org.junit.BeforeClass;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestName;
-import org.junit.runner.RunWith;
import java.util.Arrays;
import java.util.concurrent.CountDownLatch;
@@ -103,6 +102,7 @@ public class BstatsCpuTimesValidationTest {
private static final int GENERAL_TIMEOUT_MS = 4000;
private static final int GENERAL_INTERVAL_MS = 200;
+ private static final int SCREEN_STATE_CHANGE_TIMEOUT_MS = 10000;
private static final int WORK_DURATION_MS = 2000;
@@ -110,6 +110,7 @@ public class BstatsCpuTimesValidationTest {
private static String sOriginalBatteryStatsConsts;
private static Context sContext;
+ private static Display sDisplay;
private static UiDevice sUiDevice;
private static int sTestPkgUid;
private static boolean sCpuFreqTimesAvailable;
@@ -131,6 +132,10 @@ public class BstatsCpuTimesValidationTest {
sTestPkgUid = sContext.getPackageManager().getPackageUid(TEST_PKG, 0);
executeCmd("cmd deviceidle whitelist +" + TEST_PKG);
checkCpuTimesAvailability();
+ DisplayManager displayManager = sContext.getSystemService(DisplayManager.class);
+ if (displayManager != null) {
+ sDisplay = displayManager.getDisplay(Display.DEFAULT_DISPLAY);
+ }
}
@AfterClass
@@ -833,12 +838,12 @@ public class BstatsCpuTimesValidationTest {
executeCmd("input keyevent KEYCODE_WAKEUP");
executeCmd("wm dismiss-keyguard");
assertKeyguardUnLocked();
- assertScreenInteractive(true);
+ assertScreenState(true);
}
private void screenoff() throws Exception {
executeCmd("input keyevent KEYCODE_SLEEP");
- assertScreenInteractive(false);
+ assertScreenState(false);
}
private void forceStop() throws Exception {
@@ -854,12 +859,15 @@ public class BstatsCpuTimesValidationTest {
);
}
- private void assertScreenInteractive(boolean interactive) throws Exception {
- final PowerManager powerManager =
- (PowerManager) sContext.getSystemService(Context.POWER_SERVICE);
- assertDelayedCondition("Unexpected screen interactive state", () ->
- interactive == powerManager.isInteractive() ? null : "expected=" + interactive
- );
+ private void assertScreenState(boolean expectedOn) throws Exception {
+ if (sDisplay == null) {
+ return;
+ }
+
+ assertDelayedCondition("Unexpected screen-on state",
+ () -> expectedOn == Display.isOnState(sDisplay.getState())
+ ? null : "expected=" + expectedOn,
+ SCREEN_STATE_CHANGE_TIMEOUT_MS, GENERAL_INTERVAL_MS);
}
private void assertDelayedCondition(String errMsgPrefix, ExpectedCondition condition)