From 9094f6ac10103d0dbc3f3baf46ac27da0944d904 Mon Sep 17 00:00:00 2001 From: Robert Horvath Date: Wed, 18 Mar 2020 17:31:02 +0100 Subject: [PATCH] Mock BatterySaverStateMachine in PowerManagerServiceTests Mock out BatterySaverStateMachine, so that PowerManagerServiceTests don't depend on implementation of the class. BatterySaverStateMachine lead to a crash on a device with over 1 day uptime, because it called a method that couldn't be mocked on a BatterySaverController mock. Test: atest com.android.server.power.PowerManagerServiceTest Bug: 151828714 Change-Id: I6bdf0ae98f58b99f617ea3ae6addcc484aeb30a6 --- .../com/android/server/power/PowerManagerService.java | 9 +++++++-- .../android/server/power/PowerManagerServiceTest.java | 8 ++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 294deba459fe7..f9efaaa46de6f 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -780,6 +780,11 @@ public final class PowerManagerService extends SystemService batterySaverPolicy, batterySavingStats); } + BatterySaverStateMachine createBatterySaverStateMachine(Object lock, Context context, + BatterySaverController batterySaverController) { + return new BatterySaverStateMachine(lock, context, batterySaverController); + } + NativeWrapper createNativeWrapper() { return new NativeWrapper(); } @@ -864,8 +869,8 @@ public final class PowerManagerService extends SystemService mInjector.createBatterySaverPolicy(mLock, mContext, mBatterySavingStats); mBatterySaverController = mInjector.createBatterySaverController(mLock, mContext, mBatterySaverPolicy, mBatterySavingStats); - mBatterySaverStateMachine = new BatterySaverStateMachine( - mLock, mContext, mBatterySaverController); + mBatterySaverStateMachine = mInjector.createBatterySaverStateMachine(mLock, mContext, + mBatterySaverController); mInattentiveSleepWarningOverlayController = mInjector.createInattentiveSleepWarningController(); diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java index 5e8de42f8ce02..1a4ce8aa97f85 100644 --- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java @@ -83,6 +83,7 @@ import com.android.server.power.PowerManagerService.NativeWrapper; import com.android.server.power.PowerManagerService.UserSwitchedReceiver; import com.android.server.power.batterysaver.BatterySaverController; import com.android.server.power.batterysaver.BatterySaverPolicy; +import com.android.server.power.batterysaver.BatterySaverStateMachine; import com.android.server.power.batterysaver.BatterySavingStats; import org.junit.After; @@ -109,6 +110,7 @@ public class PowerManagerServiceTest { @Mock private BatterySaverController mBatterySaverControllerMock; @Mock private BatterySaverPolicy mBatterySaverPolicyMock; + @Mock private BatterySaverStateMachine mBatterySaverStateMachineMock; @Mock private LightsManager mLightsManagerMock; @Mock private DisplayManagerInternal mDisplayManagerInternalMock; @Mock private BatteryManagerInternal mBatteryManagerInternalMock; @@ -215,6 +217,12 @@ public class PowerManagerServiceTest { return mBatterySaverControllerMock; } + @Override + BatterySaverStateMachine createBatterySaverStateMachine(Object lock, Context context, + BatterySaverController batterySaverController) { + return mBatterySaverStateMachineMock; + } + @Override NativeWrapper createNativeWrapper() { return mNativeWrapperMock;