camera2: Update partial result test to check a total result's partials
Update CaptureResultTest#testPartialResult to also test that the
list of partials returned by TotalCaptureResult#getPartialResults
matches the partials delivered by the #onCaptureProgressed callback.
Bug: 16876347
Change-Id: I80335a8533ab082ac4d5dcd2597e4181ef49f19c
diff --git a/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java b/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java
index ed75deb..ba4fce0 100644
--- a/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java
+++ b/tests/tests/hardware/src/android/hardware/camera2/cts/CaptureResultTest.java
@@ -188,15 +188,21 @@
for (int frame = 0; frame < NUM_FRAMES_TESTED; frame++) {
Pair<TotalCaptureResult, List<CaptureResult>> resultPair =
listener.getCaptureResultPairs(WAIT_FOR_RESULT_TIMOUT_MS);
- if (resultPair.second == null) {
+
+ List<CaptureResult> partialResults = resultPair.second;
+
+ if (partialResults == null) {
// HAL only sends total result is legal
- continue;
+ partialResults = new ArrayList<>();
}
+
+ TotalCaptureResult totalResult = resultPair.first;
+
mCollector.expectLessOrEqual("Too many partial results",
- partialResultCount, resultPair.second.size());
+ partialResultCount, partialResults.size());
Set<CaptureResult.Key<?>> appearedPartialKeys =
new HashSet<CaptureResult.Key<?>>();
- for (CaptureResult partialResult : resultPair.second) {
+ for (CaptureResult partialResult : partialResults) {
List<CaptureResult.Key<?>> partialKeys = partialResult.getKeys();
mCollector.expectValuesUnique("Partial result keys: ", partialKeys);
for (CaptureResult.Key<?> key : partialKeys) {
@@ -207,10 +213,23 @@
}
appearedPartialKeys.addAll(partialKeys);
}
- List<CaptureResult.Key<?>> totalResultKeys = resultPair.first.getKeys();
+
+ // Test total result against the partial results
+ List<CaptureResult.Key<?>> totalResultKeys = totalResult.getKeys();
mCollector.expectTrue(
- "TotalCaptureResult should be a super set of partial capture results",
+ "TotalCaptureResult must be a super set of partial capture results",
totalResultKeys.containsAll(appearedPartialKeys));
+
+ List<CaptureResult> totalResultPartials = totalResult.getPartialResults();
+ mCollector.expectEquals("TotalCaptureResult's partial results must match " +
+ "the ones observed by #onCaptureProgressed",
+ partialResults, totalResultPartials);
+
+ if (VERBOSE) {
+ Log.v(TAG, "testPartialResult - Observed " +
+ partialResults.size() + "; queried for " +
+ totalResultPartials.size());
+ }
}
int errorCode = listener.getErrorCode();
@@ -511,9 +530,9 @@
private final LinkedBlockingQueue<Pair<TotalCaptureResult, List<CaptureResult>> > mQueue =
new LinkedBlockingQueue<>();
- private HashMap<CaptureRequest, List<CaptureResult>> mPartialResultsMap =
+ private final HashMap<CaptureRequest, List<CaptureResult>> mPartialResultsMap =
new HashMap<CaptureRequest, List<CaptureResult>>();
- private HashSet<CaptureRequest> completedRequests = new HashSet<>();
+ private final HashSet<CaptureRequest> completedRequests = new HashSet<>();
private int errorCode = 0;
@Override