Merge "Changing Requirement#checkPerformanceClass to ignore if given devicePerfClass is not handled by a required meausrement" am: c8048b1933 am: 0a79c3ec4f
Bug: 228566023
Original change: https://android-review.googlesource.com/c/platform/cts/+/2076101
Change-Id: I977514205865ccae8c2cc41b93ed8951e1fe9dce
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
(cherry picked from commit cc5b9ff46c66484026c3c2a4e272625612c21099)
diff --git a/tests/mediapc/common/src/android/mediapc/cts/common/RequiredMeasurement.java b/tests/mediapc/common/src/android/mediapc/cts/common/RequiredMeasurement.java
index 92d3bff..c5cee03 100644
--- a/tests/mediapc/common/src/android/mediapc/cts/common/RequiredMeasurement.java
+++ b/tests/mediapc/common/src/android/mediapc/cts/common/RequiredMeasurement.java
@@ -73,7 +73,7 @@
public abstract RequiredMeasurement<T> build();
}
- private final RequirementConstants.Result meetsPerformanceClass(int mediaPerformanceClass) {
+ public final RequirementConstants.Result meetsPerformanceClass(int mediaPerformanceClass) {
if (!this.expectedValues().containsKey(mediaPerformanceClass)) {
return RequirementConstants.Result.NA;
} else if (this.measuredValue == null || !this.predicate().test(this.measuredValue,
diff --git a/tests/mediapc/common/src/android/mediapc/cts/common/Requirement.java b/tests/mediapc/common/src/android/mediapc/cts/common/Requirement.java
index 9f0bc44..d6cf8d4 100644
--- a/tests/mediapc/common/src/android/mediapc/cts/common/Requirement.java
+++ b/tests/mediapc/common/src/android/mediapc/cts/common/Requirement.java
@@ -26,6 +26,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -89,35 +90,18 @@
}
@VisibleForTesting
- protected boolean checkPerformanceClass(String testName, int reportPerfClass,
- int expectedPerfClass) {
- if (reportPerfClass < expectedPerfClass) {
- Log.w(Requirement.TAG, "Test: " + testName + " reporting invalid performance class " +
- reportPerfClass + " for requirement " + this.id + " performance class should at " +
- "least be: " + expectedPerfClass);
- for (RequiredMeasurement<?> rm: this.mRequiredMeasurements.values()) {
- Map<Integer, RequirementConstants.Result> perfClasses = rm.getPerformanceClass();
- int maxMetPerformanceClass = 0;
- for (int pc: perfClasses.keySet()) {
- if (perfClasses.get(pc) == RequirementConstants.Result.MET) {
- maxMetPerformanceClass = Math.max(maxMetPerformanceClass, pc);
- }
- }
-
- if (maxMetPerformanceClass < expectedPerfClass) {
- Log.w(Requirement.TAG, rm.toString());
- } else {
- Log.i(Requirement.TAG, rm.toString());
- }
+ protected boolean checkPerformanceClass(int devicePerfClass) {
+ boolean noResultsUnment = true;
+ for (RequiredMeasurement<?> rm: this.mRequiredMeasurements.values()) {
+ RequirementConstants.Result res = rm.meetsPerformanceClass(devicePerfClass);
+ if (res == RequirementConstants.Result.UNMET) {
+ Log.w(Requirement.TAG, rm.toString());
+ noResultsUnment = false;
+ } else {
+ Log.i(Requirement.TAG, rm.toString());
}
- return false;
- } else {
- return true;
}
- }
-
- private boolean checkPerformanceClass(String testName, int reportPerfClass) {
- return this.checkPerformanceClass(testName, reportPerfClass, Utils.getPerfClass());
+ return noResultsUnment;
}
protected <T> void setMeasuredValue(String measurement, T measuredValue) {
@@ -142,6 +126,6 @@
ResultUnit.NONE);
log.submit(InstrumentationRegistry.getInstrumentation());
- return this.checkPerformanceClass(testName, perfClass);
+ return this.checkPerformanceClass(Utils.getPerfClass());
}
}
diff --git a/tests/mediapc/common/tests/src/android/mediapc/cts/common/RequirementTest.java b/tests/mediapc/common/tests/src/android/mediapc/cts/common/RequirementTest.java
index b330724..04dd6f0e 100644
--- a/tests/mediapc/common/tests/src/android/mediapc/cts/common/RequirementTest.java
+++ b/tests/mediapc/common/tests/src/android/mediapc/cts/common/RequirementTest.java
@@ -28,103 +28,158 @@
super(id, reqs);
}
- public void setGTEMeasurement(int measure) {
+ public void setMeasurement1(int measure) {
this.<Integer>setMeasuredValue("test_measurement_1", measure);
}
- public void setLTEMeasurement(int measure) {
- this.<Integer>setMeasuredValue("test_measurement_2", measure);
- }
-
public static TestReq create() {
RequiredMeasurement<Integer> measurement1 = RequiredMeasurement
.<Integer>builder()
.setId("test_measurement_1")
.setPredicate(RequirementConstants.INTEGER_GTE)
- .addRequiredValue(Build.VERSION_CODES.R, 200)
- .addRequiredValue(Build.VERSION_CODES.S, 300)
+ .addRequiredValue(30, 200)
+ .addRequiredValue(31, 300)
+ .addRequiredValue(32, 400)
+ .build();
+
+ return new TestReq("TestReq", measurement1);
+ }
+ }
+
+ public static class TestReqWith2Measures extends Requirement {
+ private TestReqWith2Measures(String id, RequiredMeasurement<?> ... reqs) {
+ super(id, reqs);
+ }
+
+ public void setMeasurement1(int measure) {
+ this.<Integer>setMeasuredValue("test_measurement_1", measure);
+ }
+
+ public void setMeasurement2(int measure) {
+ this.<Integer>setMeasuredValue("test_measurement_2", measure);
+ }
+
+ public static TestReqWith2Measures create() {
+ RequiredMeasurement<Integer> measurement1 = RequiredMeasurement
+ .<Integer>builder()
+ .setId("test_measurement_1")
+ .setPredicate(RequirementConstants.INTEGER_GTE)
+ .addRequiredValue(30, 200)
+ .addRequiredValue(31, 300)
+ .addRequiredValue(32, 400)
.build();
RequiredMeasurement<Integer> measurement2 = RequiredMeasurement
.<Integer>builder()
.setId("test_measurement_2")
- .setPredicate(RequirementConstants.INTEGER_LTE)
- .addRequiredValue(Build.VERSION_CODES.R, 500)
- .addRequiredValue(Build.VERSION_CODES.S, 300)
+ .setPredicate(RequirementConstants.INTEGER_GTE)
+ .addRequiredValue(30, 200)
+ .addRequiredValue(31, 300)
+ .addRequiredValue(32, 400)
.build();
- return new TestReq("TestReq", measurement1, measurement2);
+ return new TestReqWith2Measures("TestReqWith2Measures", measurement1, measurement2);
}
}
- // used as a base for computePerformanceClass_testCase methods
- private void testComputePerformanceClass(int gteMeasure, int lteMeasure, int expectedPC) {
+ @Test
+ public void computePerformanceClass_0() {
TestReq testReq = TestReq.create();
int pc;
- // both measurements do not meet R
- testReq.setGTEMeasurement(gteMeasure);
- testReq.setLTEMeasurement(lteMeasure);
+ testReq.setMeasurement1(100);
pc = testReq.computePerformanceClass();
- assertThat(pc).isEqualTo(expectedPC);
+ assertThat(pc).isEqualTo(0);
}
@Test
- public void computePerformanceClass_bothNotR() {
- // both measurements do not meet R
- this.testComputePerformanceClass(100, 600, 0);
- }
-
- @Test
- public void computePerformanceClass_onlyOneR() {
- // one measurement does not meet R
- this.testComputePerformanceClass(200, 600, 0);
- }
-
- @Test
- public void computePerformanceClass_bothR() {
- // both measurements meet R
- this.testComputePerformanceClass(200, 500, Build.VERSION_CODES.R);
- }
-
- @Test
- public void computePerformanceClass_onlyOneS() {
- // one measurements does not meet S
- this.testComputePerformanceClass(200, 100, Build.VERSION_CODES.R);
- }
-
- @Test
- public void computePerformanceClass_bothS() {
- // both measurements meet S
- this.testComputePerformanceClass(500, 100, Build.VERSION_CODES.S);
- }
-
- // used as a base for checkPerformanceClass_testCase methods
- private void testCheckPerformanceClass(int testPerfClass, boolean expectedResult) {
+ public void computePerformanceClass_30() {
TestReq testReq = TestReq.create();
- boolean perfClassMet;
+ int pc;
- perfClassMet = testReq.checkPerformanceClass("checkPerformanceClass", testPerfClass, 31);
- assertThat(perfClassMet).isEqualTo(expectedResult);
+ testReq.setMeasurement1(200);
+ pc = testReq.computePerformanceClass();
+ assertThat(pc).isEqualTo(30);
+ }
+
+ @Test
+ public void computePerformanceClass_31() {
+ TestReq testReq = TestReq.create();
+ int pc;
+
+ testReq.setMeasurement1(300);
+ pc = testReq.computePerformanceClass();
+ assertThat(pc).isEqualTo(31);
+ }
+
+ @Test
+ public void computePerformanceClass_32() {
+ TestReq testReq = TestReq.create();
+ int pc;
+
+ testReq.setMeasurement1(400);
+ pc = testReq.computePerformanceClass();
+ assertThat(pc).isEqualTo(32);
+ }
+
+ @Test
+ public void computePerformanceClass_PicksLower() {
+ TestReqWith2Measures testReq = TestReqWith2Measures.create();
+ int pc;
+
+ // measure1 meets 32, but measure2 only meets 30
+ testReq.setMeasurement1(401);
+ testReq.setMeasurement2(201);
+
+ pc = testReq.computePerformanceClass();
+ assertThat(pc).isEqualTo(30);
}
@Test
public void checkPerformanceClass_justBelow() {
- // just below required perfClass
- int testPerfClass = 30;
- this.testCheckPerformanceClass(testPerfClass, false);
+ TestReq testReq = TestReq.create();
+ boolean perfClassMet;
+
+ // setting measurements to meet pc 31
+ testReq.setMeasurement1(300);
+
+ perfClassMet = testReq.checkPerformanceClass(32);
+ assertThat(perfClassMet).isEqualTo(false);
}
@Test
public void checkPerformanceClass_justAt() {
- // just at required perfClass
- int testPerfClass = 31;
- this.testCheckPerformanceClass(testPerfClass, true);
+ TestReq testReq = TestReq.create();
+ boolean perfClassMet;
+
+ // setting measurements to meet pc 31
+ testReq.setMeasurement1(300);
+
+ perfClassMet = testReq.checkPerformanceClass(31);
+ assertThat(perfClassMet).isEqualTo(true);
}
@Test
public void checkPerformanceClass_justAbove() {
- // just above required perfClass
- int testPerfClass = 32;
- this.testCheckPerformanceClass(testPerfClass, true);
+ TestReq testReq = TestReq.create();
+ boolean perfClassMet;
+
+ // setting measurements to meet pc 31
+ testReq.setMeasurement1(301);
+
+ perfClassMet = testReq.checkPerformanceClass(30);
+ assertThat(perfClassMet).isEqualTo(true);
+ }
+
+ @Test
+ public void checkPerformanceClass_OutOfRange() {
+ TestReq testReq = TestReq.create();
+ boolean perfClassMet;
+
+ // setting measurements to meet pc 31
+ testReq.setMeasurement1(300);
+
+ // performance class 33 not handled by testReq, so expected result is true
+ perfClassMet = testReq.checkPerformanceClass(33);
+ assertThat(perfClassMet).isEqualTo(true);
}
}
\ No newline at end of file