Improve power policy test
Modify power policy host test to work with oem defined power policies.
Bug: 279609002
Test: atest android.car.cts.PowerPolicyHostTest
Change-Id: Ica31671184639770605d43a4d87003264d57301b
diff --git a/hostsidetests/car/src/android/car/cts/PowerPolicyHostTest.java b/hostsidetests/car/src/android/car/cts/PowerPolicyHostTest.java
index c668f44..1dc944e 100644
--- a/hostsidetests/car/src/android/car/cts/PowerPolicyHostTest.java
+++ b/hostsidetests/car/src/android/car/cts/PowerPolicyHostTest.java
@@ -124,7 +124,6 @@
@Test
public void testPowerPolicyChange() throws Exception {
String testcase = "testPowerPolicyChange:";
- int expectedTotalPolicies = PowerPolicyDef.PolicySet.TOTAL_DEFAULT_REGISTERED_POLICIES;
int stepNo = 0;
String teststep;
PowerPolicyTestHelper testHelper;
@@ -132,8 +131,12 @@
teststep = "check the inital power policies";
testHelper = getTestHelper(testcase, stepNo++, teststep);
testHelper.checkCurrentState(PowerPolicyConstants.CarPowerState.ON);
- testHelper.checkCurrentPolicy(PowerPolicyDef.IdSet.DEFAULT_ALL_ON);
- testHelper.checkTotalRegisteredPolicies(expectedTotalPolicies);
+ // power policy can be different from system_power_policy_all_on, save it to check
+ // after device restart.
+ String powerPolicyForOnState = testHelper.getCurrentPolicyId();
+ // save number of device power policies
+ int registeredPoliciesNumber = testHelper.getNumberOfRegisteredPolicies();
+ int expectedTotalPolicies = registeredPoliciesNumber;
// create two power policies, test1 and test2, for power policy change test
defineAndCheckPolicyTest1(testcase, stepNo++, ++expectedTotalPolicies);
@@ -191,18 +194,12 @@
// add respect to user setting test case here to utilize a single device reboot
testPowerPolicyAndComponentUserSetting();
- // add power policy group test here to utilize added test1 and test2 policies
- teststep = "check default power policy group";
- PowerPolicyGroups emptyGroups = new PowerPolicyGroups();
- testHelper = getTestHelper(testcase, stepNo++, teststep);
- testHelper.checkCurrentPolicyGroupId(null);
- testHelper.checkPowerPolicyGroups(emptyGroups);
-
teststep = "define power policy group";
definePowerPolicyGroup(PowerPolicyGroups.TestSet.POLICY_GROUP_DEF1.toShellCommandString());
definePowerPolicyGroup(PowerPolicyGroups.TestSet.POLICY_GROUP_DEF2.toShellCommandString());
testHelper = getTestHelper(testcase, stepNo++, teststep);
- testHelper.checkPowerPolicyGroups(PowerPolicyGroups.TestSet.POLICY_GROUPS1);
+ // check that device policy groups, include just added groups as well
+ testHelper.checkPowerPolicyGroupsDefined(PowerPolicyGroups.TestSet.POLICY_GROUPS1);
teststep = "set power policy group";
setPowerPolicyGroup(PowerPolicyGroups.TestSet.GROUP_ID1);
@@ -214,10 +211,9 @@
rebootDevice();
teststep = "reboot to clear added test power policies";
testHelper = getTestHelper(testcase, stepNo++, teststep);
- expectedTotalPolicies = PowerPolicyDef.PolicySet.TOTAL_DEFAULT_REGISTERED_POLICIES;
testHelper.checkCurrentState(PowerPolicyConstants.CarPowerState.ON);
- testHelper.checkCurrentPolicy(PowerPolicyDef.IdSet.DEFAULT_ALL_ON);
- testHelper.checkTotalRegisteredPolicies(expectedTotalPolicies);
+ testHelper.checkCurrentPolicy(powerPolicyForOnState);
+ testHelper.checkTotalRegisteredPolicies(registeredPoliciesNumber);
}
public String fetchActivityDumpsys() throws Exception {
diff --git a/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyGroups.java b/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyGroups.java
index 0ae18d0..74a98e7 100644
--- a/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyGroups.java
+++ b/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyGroups.java
@@ -21,6 +21,7 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Objects;
+import java.util.Set;
public final class PowerPolicyGroups {
private final HashMap<String, PowerPolicyGroupDef> mPolicyGroups = new HashMap<>();
@@ -113,6 +114,23 @@
return tokens[2].trim();
}
+ public Set<String> getGroupIds() {
+ return mPolicyGroups.keySet();
+ }
+
+ public PowerPolicyGroupDef getGroup(String groupId) {
+ return mPolicyGroups.get(groupId);
+ }
+
+ public boolean containsGroup(String groupId, PowerPolicyGroupDef expectedGroupDef) {
+ PowerPolicyGroupDef policyGroup = mPolicyGroups.get(groupId);
+ if (policyGroup == null) {
+ return false;
+ }
+
+ return policyGroup.equals(expectedGroupDef);
+ }
+
public static final class PowerPolicyGroupDef {
private final String mGroupId;
private final String mWaitForVHALStatePolicy;
diff --git a/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyTestHelper.java b/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyTestHelper.java
index 2233d3b..84d37ad 100644
--- a/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyTestHelper.java
+++ b/hostsidetests/car/src/android/car/cts/powerpolicy/PowerPolicyTestHelper.java
@@ -21,6 +21,8 @@
import com.android.tradefed.log.LogUtil.CLog;
+import java.util.Set;
+
public final class PowerPolicyTestHelper {
private final CpmsFrameworkLayerStateInfo mFrameCpms;
private final CpmsSystemLayerStateInfo mSystemCpms;
@@ -140,4 +142,23 @@
assertWithMessage("checkPowerPolicyGroups")
.that(expected.equals(mFrameCpms.getPowerPolicyGroups())).isTrue();
}
+
+ public int getNumberOfRegisteredPolicies() {
+ return mSystemCpms.getTotalRegisteredPolicies();
+ }
+
+ public void checkPowerPolicyGroupsDefined(PowerPolicyGroups policyGroups) {
+ assertWithMessage("Groups cannot be null").that(policyGroups).isNotNull();
+ Set<String> groupIds = policyGroups.getGroupIds();
+ for (String groupId : groupIds) {
+ PowerPolicyGroups.PowerPolicyGroupDef groupDef = policyGroups.getGroup(groupId);
+ assertWithMessage("Group definition cannot be null").that(groupDef).isNotNull();
+ assertWithMessage("Group is not defined").that(
+ mFrameCpms.getPowerPolicyGroups().containsGroup(groupId, groupDef)).isTrue();
+ }
+ }
+
+ public String getCurrentPolicyId() {
+ return mFrameCpms.getCurrentPolicyId();
+ }
}