Refactor sensor test platform listeners.
b/17838681
The refactoring is required in preparation to add support to save sensor events upon failure.
Change-Id: I5540451d70426fbbbe19a10b2a727b2e010c3838
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/MagneticFieldMeasurementTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/MagneticFieldMeasurementTestActivity.java
index 1ec5dc1..22ff1e5 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/MagneticFieldMeasurementTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/MagneticFieldMeasurementTestActivity.java
@@ -21,7 +21,6 @@
import android.hardware.Sensor;
import android.hardware.SensorEvent;
-import android.hardware.SensorEventListener2;
import android.hardware.SensorManager;
import android.hardware.cts.helpers.SensorCalibratedUncalibratedVerifier;
import android.hardware.cts.helpers.SensorCtsHelper;
@@ -166,7 +165,11 @@
* A routine to help operators calibrate the magnetometer.
*/
private void calibrateMagnetometer() throws InterruptedException {
- SensorEventListener2 listener = new SensorEventListener2() {
+ TestSensorEnvironment environment = new TestSensorEnvironment(
+ getApplicationContext(),
+ Sensor.TYPE_MAGNETIC_FIELD,
+ SensorManager.SENSOR_DELAY_NORMAL);
+ TestSensorEventListener listener = new TestSensorEventListener(environment) {
@Override
public void onSensorChanged(SensorEvent event) {
clearText();
@@ -184,21 +187,11 @@
// TODO: automate finding out when the magnetometer is calibrated
logger.logInstructions(R.string.snsr_mag_calibration_complete);
}
-
- @Override
- public void onAccuracyChanged(Sensor sensor, int accuracy) {}
-
- @Override
- public void onFlushCompleted(Sensor sensor) {}
};
- TestSensorEnvironment environment = new TestSensorEnvironment(
- getApplicationContext(),
- Sensor.TYPE_MAGNETIC_FIELD,
- SensorManager.SENSOR_DELAY_NORMAL);
TestSensorManager magnetometer = new TestSensorManager(environment);
try {
- magnetometer.registerListener(new TestSensorEventListener(listener));
+ magnetometer.registerListener(listener);
waitForUserToContinue();
} finally {
magnetometer.unregisterListener();
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
index 08d06c6..87c74ee 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTest.java
@@ -327,7 +327,7 @@
HandlerThread handlerThread = new HandlerThread("sensorThread");
handlerThread.start();
Handler handler = new Handler(handlerThread.getLooper());
- TestSensorEventListener listener = new TestSensorEventListener(handler);
+ TestSensorEventListener listener = new TestSensorEventListener(environment, handler);
sensorManager.registerListener(listener);
listener.waitForEvents(1);
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/CollectingSensorEventListener.java b/tests/tests/hardware/src/android/hardware/cts/helpers/CollectingSensorEventListener.java
deleted file mode 100644
index 3bedc05..0000000
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/CollectingSensorEventListener.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.hardware.cts.helpers;
-
-import android.hardware.SensorEvent;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-/**
- * A {@link TestSensorEventListener} which collects events to be processed after the test is run.
- * This should only be used for short tests.
- */
-public class CollectingSensorEventListener extends TestSensorEventListener {
- private final ArrayList<TestSensorEvent> mSensorEventsList = new ArrayList<TestSensorEvent>();
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void onSensorChanged(SensorEvent event) {
- super.onSensorChanged(event);
- synchronized (mSensorEventsList) {
- mSensorEventsList.add(new TestSensorEvent(event));
- }
- }
-
- /**
- * {@inheritDoc}
- * <p>
- * Clears the event queue before starting.
- * </p>
- */
- @Override
- public void waitForEvents(int eventCount) throws InterruptedException {
- clearEvents();
- super.waitForEvents(eventCount);
- }
-
- /**
- * {@inheritDoc}
- * <p>
- * Clears the event queue before starting.
- * </p>
- */
- @Override
- public void waitForEvents(long duration, TimeUnit timeUnit) throws InterruptedException {
- clearEvents();
- super.waitForEvents(duration, timeUnit);
- }
-
- /**
- * Get the {@link TestSensorEvent} array from the event queue.
- */
- public List<TestSensorEvent> getEvents() {
- synchronized (mSensorEventsList) {
- return Collections.unmodifiableList(mSensorEventsList);
- }
- }
-
- /**
- * Clear the event queue.
- */
- public void clearEvents() {
- synchronized (mSensorEventsList) {
- mSensorEventsList.clear();
- }
- }
-}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCalibratedUncalibratedVerifier.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCalibratedUncalibratedVerifier.java
index 0f84ee6..d3dcf37 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCalibratedUncalibratedVerifier.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorCalibratedUncalibratedVerifier.java
@@ -35,6 +35,8 @@
private final TestSensorManager mCalibratedSensorManager;
private final TestSensorManager mUncalibratedSensorManager;
+ private final TestSensorEventListener mCalibratedTestListener;
+ private final TestSensorEventListener mUncalibratedTestListener;
private final float mThreshold;
public SensorCalibratedUncalibratedVerifier(
@@ -43,6 +45,8 @@
float threshold) {
mCalibratedSensorManager = new TestSensorManager(calibratedEnvironment);
mUncalibratedSensorManager = new TestSensorManager(uncalibratedEnvironment);
+ mCalibratedTestListener = new TestSensorEventListener(calibratedEnvironment);
+ mUncalibratedTestListener = new TestSensorEventListener(uncalibratedEnvironment);
mThreshold = threshold;
}
@@ -50,11 +54,8 @@
* Executes the operation: it collects the data and run verifications on it.
*/
public void execute() throws Throwable {
- CollectingSensorEventListener calibratedTestListener = new CollectingSensorEventListener();
- CollectingSensorEventListener uncalibratedTestListener =
- new CollectingSensorEventListener();
- mCalibratedSensorManager.registerListener(calibratedTestListener);
- mUncalibratedSensorManager.registerListener(uncalibratedTestListener);
+ mCalibratedSensorManager.registerListener(mCalibratedTestListener);
+ mUncalibratedSensorManager.registerListener(mUncalibratedTestListener);
Thread.sleep(TimeUnit.SECONDS.toMillis(10));
@@ -62,8 +63,8 @@
mUncalibratedSensorManager.unregisterListener();
verifyMeasurements(
- calibratedTestListener.getEvents(),
- uncalibratedTestListener.getEvents(),
+ mCalibratedTestListener.getCollectedEvents(),
+ mUncalibratedTestListener.getCollectedEvents(),
mThreshold);
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
index ae36e6a..6c313d2 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
@@ -24,12 +24,13 @@
import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
-import android.util.Log;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
/**
* A {@link SensorEventListener2} which performs operations such as waiting for a specific number of
@@ -42,74 +43,35 @@
private static final long EVENT_TIMEOUT_US = TimeUnit.SECONDS.toMicros(5);
private static final long FLUSH_TIMEOUT_US = TimeUnit.SECONDS.toMicros(10);
- private final ArrayList<CountDownLatch> mEventLatches = new ArrayList<CountDownLatch>();
- private final ArrayList<CountDownLatch> mFlushLatches = new ArrayList<CountDownLatch>();
+ private final List<TestSensorEvent> mCollectedEvents = new ArrayList<>();
+ private final List<CountDownLatch> mEventLatches = new ArrayList<>();
+ private final List<CountDownLatch> mFlushLatches = new ArrayList<>();
+ private final AtomicInteger mEventsReceivedOutsideHandler = new AtomicInteger();
- private final SensorEventListener2 mListener;
private final Handler mHandler;
+ private final TestSensorEnvironment mEnvironment;
- private volatile boolean mEventsReceivedInHandler = true;
- private volatile TestSensorEnvironment mEnvironment;
- private volatile boolean mLogEvents;
+ /**
+ * @deprecated Use {@link TestSensorEventListener(TestSensorEnvironment)}.
+ */
+ @Deprecated
+ public TestSensorEventListener() {
+ this(null /* environment */);
+ }
/**
* Construct a {@link TestSensorEventListener}.
*/
- public TestSensorEventListener() {
- this(null /* listener */, null /* handler */);
+ public TestSensorEventListener(TestSensorEnvironment environment) {
+ this(environment, null /* handler */);
}
/**
- * Construct a {@link TestSensorEventListener} with a {@link Handler}.
+ * Construct a {@link TestSensorEventListener}.
*/
- public TestSensorEventListener(Handler handler) {
- this(null /* listener */, handler);
- }
-
- /**
- * Construct a {@link TestSensorEventListener} that wraps a {@link SensorEventListener2}.
- */
- public TestSensorEventListener(SensorEventListener2 listener) {
- this(listener, null /* handler */);
- }
-
- /**
- * Construct a {@link TestSensorEventListener} that wraps a {@link SensorEventListener2}, and it
- * has a {@link Handler}.
- */
- public TestSensorEventListener(SensorEventListener2 listener, Handler handler) {
- if (listener != null) {
- mListener = listener;
- } else {
- // use a Null Object to simplify handling the listener
- mListener = new SensorEventListener2() {
- public void onFlushCompleted(Sensor sensor) {}
- public void onSensorChanged(SensorEvent sensorEvent) {}
- public void onAccuracyChanged(Sensor sensor, int i) {}
- };
- }
- mHandler = handler;
- }
-
- /**
- * @return The handler (if any) associated with the instance.
- */
- public Handler getHandler() {
- return mHandler;
- }
-
- /**
- * Set the sensor, rate, and batch report latency used for the assertions.
- */
- public void setEnvironment(TestSensorEnvironment environment) {
+ public TestSensorEventListener(TestSensorEnvironment environment, Handler handler) {
mEnvironment = environment;
- }
-
- /**
- * Set whether or not to log events
- */
- public void setLogEvents(boolean log) {
- mLogEvents = log;
+ mHandler = handler;
}
/**
@@ -117,15 +79,10 @@
*/
@Override
public void onSensorChanged(SensorEvent event) {
+ long timestampNs = SystemClock.elapsedRealtimeNanos();
checkHandler();
- mListener.onSensorChanged(event);
- if (mLogEvents) {
- Log.v(LOG_TAG, String.format(
- "Sensor %d: sensor_timestamp=%dns, received_timestamp=%dns, values=%s",
- mEnvironment.getSensor().getType(),
- event.timestamp,
- SystemClock.elapsedRealtimeNanos(),
- Arrays.toString(event.values)));
+ synchronized (mCollectedEvents) {
+ mCollectedEvents.add(new TestSensorEvent(event, timestampNs));
}
synchronized (mEventLatches) {
@@ -141,7 +98,6 @@
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
checkHandler();
- mListener.onAccuracyChanged(sensor, accuracy);
}
/**
@@ -150,8 +106,6 @@
@Override
public void onFlushCompleted(Sensor sensor) {
checkHandler();
- mListener.onFlushCompleted(sensor);
-
synchronized (mFlushLatches) {
for (CountDownLatch latch : mFlushLatches) {
latch.countDown();
@@ -160,11 +114,37 @@
}
/**
+ * @return The handler (if any) associated with the instance.
+ */
+ public Handler getHandler() {
+ return mHandler;
+ }
+
+ /**
+ * @return A list of {@link TestSensorEvent}s collected by the listener.
+ */
+ public List<TestSensorEvent> getCollectedEvents() {
+ synchronized (mCollectedEvents){
+ return Collections.unmodifiableList(mCollectedEvents);
+ }
+ }
+
+ /**
+ * Clears the internal list of collected {@link TestSensorEvent}s.
+ */
+ public void clearEvents() {
+ synchronized (mCollectedEvents) {
+ mCollectedEvents.clear();
+ }
+ }
+
+ /**
* Wait for {@link #onFlushCompleted(Sensor)} to be called.
*
* @throws AssertionError if there was a timeout after {@link #FLUSH_TIMEOUT_US} µs
*/
public void waitForFlushComplete() throws InterruptedException {
+ clearEvents();
CountDownLatch latch = new CountDownLatch(1);
synchronized (mFlushLatches) {
mFlushLatches.add(latch);
@@ -190,10 +170,12 @@
* @throws AssertionError if there was a timeout after {@link #FLUSH_TIMEOUT_US} µs
*/
public void waitForEvents(int eventCount) throws InterruptedException {
+ clearEvents();
CountDownLatch eventLatch = new CountDownLatch(eventCount);
synchronized (mEventLatches) {
mEventLatches.add(eventLatch);
}
+
try {
long samplingPeriodUs = mEnvironment.getMaximumExpectedSamplingPeriodUs();
// timeout is 2 * event count * expected period + batch timeout + default wait
@@ -235,14 +217,20 @@
* If no events were received this assertion will be evaluated to {@code true}.
*/
public void assertEventsReceivedInHandler() {
- Assert.assertTrue(
- "Events did not arrive in the Looper associated with the given Handler.",
- mEventsReceivedInHandler);
+ int eventsOutsideHandler = mEventsReceivedOutsideHandler.get();
+ String message = String.format(
+ "Events arrived outside the associated Looper. Expected=0, Found=%d",
+ eventsOutsideHandler);
+ Assert.assertEquals(message, 0 /* expected */, eventsOutsideHandler);
}
+ /**
+ * Keeps track of the number of events that arrived in a different {@link Looper} than the one
+ * associated with the {@link TestSensorEventListener}.
+ */
private void checkHandler() {
- if (mHandler != null) {
- mEventsReceivedInHandler &= (mHandler.getLooper() == Looper.myLooper());
+ if (mHandler != null && mHandler.getLooper() != Looper.myLooper()) {
+ mEventsReceivedOutsideHandler.incrementAndGet();
}
}
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorManager.java b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorManager.java
index a611bfc..fdd851e 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorManager.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorManager.java
@@ -74,15 +74,13 @@
}
mTestSensorEventListener = listener;
- mTestSensorEventListener.setEnvironment(mEnvironment);
-
String message = SensorCtsHelper.formatAssertionMessage("registerListener", mEnvironment);
boolean result = mSensorManager.registerListener(
mTestSensorEventListener,
mEnvironment.getSensor(),
mEnvironment.getRequestedSamplingPeriodUs(),
mEnvironment.getMaxReportLatencyUs(),
- listener.getHandler());
+ mTestSensorEventListener.getHandler());
Assert.assertTrue(message, result);
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/ValidatingSensorEventListener.java b/tests/tests/hardware/src/android/hardware/cts/helpers/ValidatingSensorEventListener.java
deleted file mode 100644
index 7572dc7..0000000
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/ValidatingSensorEventListener.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.hardware.cts.helpers;
-
-import android.hardware.SensorEvent;
-import android.hardware.cts.helpers.sensorverification.ISensorVerification;
-import android.os.Handler;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * A {@link TestSensorEventListener} which performs validations on the received events on the fly.
- * This class is useful for long running tests where it is not practical to store all the events to
- * be processed after.
- */
-public class ValidatingSensorEventListener extends TestSensorEventListener {
-
- private final ArrayList<ISensorVerification> mVerifications =
- new ArrayList<ISensorVerification>();
-
- /**
- * Construct a {@link ValidatingSensorEventListener}.
- */
- public ValidatingSensorEventListener(
- Collection<ISensorVerification> verifications,
- Handler handler) {
- super(handler);
- mVerifications.addAll(verifications);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void onSensorChanged(SensorEvent event) {
- TestSensorEvent testEvent = new TestSensorEvent(event);
- for (ISensorVerification verification : mVerifications) {
- verification.addSensorEvent(testEvent);
- }
- super.onSensorChanged(event);
- }
-}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java
index ded1522..7347fc7 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensoroperations/TestSensorOperation.java
@@ -21,9 +21,9 @@
import android.hardware.cts.helpers.SensorCtsHelper;
import android.hardware.cts.helpers.SensorStats;
import android.hardware.cts.helpers.TestSensorEnvironment;
+import android.hardware.cts.helpers.TestSensorEvent;
import android.hardware.cts.helpers.TestSensorEventListener;
import android.hardware.cts.helpers.TestSensorManager;
-import android.hardware.cts.helpers.ValidatingSensorEventListener;
import android.hardware.cts.helpers.sensorverification.EventGapVerification;
import android.hardware.cts.helpers.sensorverification.EventOrderingVerification;
import android.hardware.cts.helpers.sensorverification.EventTimestampSynchronizationVerification;
@@ -36,6 +36,7 @@
import android.os.Handler;
import java.util.HashSet;
+import java.util.List;
import java.util.concurrent.TimeUnit;
/**
@@ -118,17 +119,15 @@
@Override
public void execute() throws InterruptedException {
getStats().addValue("sensor_name", mEnvironment.getSensor().getName());
-
- ValidatingSensorEventListener listener =
- new ValidatingSensorEventListener(mVerifications, mHandler);
- listener.setLogEvents(mLogEvents);
+ TestSensorEventListener listener = new TestSensorEventListener(mEnvironment, mHandler);
mExecutor.execute(mSensorManager, listener);
boolean failed = false;
StringBuilder sb = new StringBuilder();
+ List<TestSensorEvent> collectedEvents = listener.getCollectedEvents();
for (ISensorVerification verification : mVerifications) {
- failed |= evaluateResults(verification, sb);
+ failed |= evaluateResults(collectedEvents, verification, sb);
}
if (failed) {
@@ -154,8 +153,14 @@
/**
* Evaluate the results of a test, aggregate the stats, and build the error message.
*/
- private boolean evaluateResults(ISensorVerification verification, StringBuilder sb) {
+ private boolean evaluateResults(
+ List<TestSensorEvent> events,
+ ISensorVerification verification,
+ StringBuilder sb) {
try {
+ // this is an intermediate state in refactoring, at some point verifications might
+ // become stateless
+ verification.addSensorEvents(events);
verification.verify(mEnvironment, getStats());
} catch (AssertionError e) {
if (sb.length() > 0) {
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java
index acf71bb..1e775e3 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/AbstractSensorVerification.java
@@ -18,6 +18,7 @@
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.Collection;
import java.util.List;
/**
@@ -29,7 +30,7 @@
* {@inheritDoc}
*/
@Override
- public synchronized void addSensorEvents(TestSensorEvent ... events) {
+ public synchronized void addSensorEvents(Collection<TestSensorEvent> events) {
for (TestSensorEvent event : events) {
addSensorEventInternal(event);
}
@@ -39,14 +40,6 @@
* {@inheritDoc}
*/
@Override
- public synchronized void addSensorEvent(TestSensorEvent event) {
- addSensorEventInternal(event);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
public abstract ISensorVerification clone();
/**
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java
index d01e108..6f17e7b 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerificationTest.java
@@ -22,6 +22,9 @@
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+
/**
* Tests for {@link EventGapVerification}.
*/
@@ -90,11 +93,13 @@
}
}
- private ISensorVerification getVerification(int expected, long ... timestamps) {
- ISensorVerification verification = new EventGapVerification(expected);
+ private static EventGapVerification getVerification(int expected, long ... timestamps) {
+ Collection<TestSensorEvent> events = new ArrayList<>(timestamps.length);
for (long timestamp : timestamps) {
- verification.addSensorEvent(new TestSensorEvent(null, timestamp, 0, null));
+ events.add(new TestSensorEvent(null, timestamp, 0, null));
}
+ EventGapVerification verification = new EventGapVerification(expected);
+ verification.addSensorEvents(events);
return verification;
}
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java
index 88d5c19..b9848fa 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventOrderingVerificationTest.java
@@ -22,6 +22,7 @@
import android.hardware.cts.helpers.TestSensorEvent;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
/**
@@ -96,11 +97,13 @@
assertTrue(indices.contains(4));
}
- private EventOrderingVerification getVerification(long ... timestamps) {
- EventOrderingVerification verification = new EventOrderingVerification();
+ private static EventOrderingVerification getVerification(long ... timestamps) {
+ Collection<TestSensorEvent> events = new ArrayList<>(timestamps.length);
for (long timestamp : timestamps) {
- verification.addSensorEvent(new TestSensorEvent(null, timestamp, 0, null));
+ events.add(new TestSensorEvent(null, timestamp, 0, null));
}
+ EventOrderingVerification verification = new EventOrderingVerification();
+ verification.addSensorEvents(events);
return verification;
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerificationTest.java
index 24349ce..bbf022a 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/FrequencyVerificationTest.java
@@ -22,6 +22,9 @@
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+
/**
* Tests for {@link EventOrderingVerification}.
*/
@@ -73,15 +76,17 @@
return new TestSensorEnvironment(getContext(), Sensor.TYPE_ALL, rateUs);
}
- private ISensorVerification getVerification(
+ private static FrequencyVerification getVerification(
double lowerThreshold,
double upperThreshold,
long ... timestamps) {
- ISensorVerification verification =
- new FrequencyVerification(lowerThreshold, upperThreshold);
+ Collection<TestSensorEvent> events = new ArrayList<>(timestamps.length);
for (long timestamp : timestamps) {
- verification.addSensorEvent(new TestSensorEvent(null, timestamp, 0, null));
+ events.add(new TestSensorEvent(null, timestamp, 0, null));
}
+ FrequencyVerification verification =
+ new FrequencyVerification(lowerThreshold, upperThreshold);
+ verification.addSensorEvents(events);
return verification;
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/ISensorVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/ISensorVerification.java
index 4f7b65a..2027f0f 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/ISensorVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/ISensorVerification.java
@@ -20,24 +20,25 @@
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.Collection;
+
/**
- * Interface describing the sensor verification. This class was designed for to handle streaming
- * events. The methods {@link #addSensorEvent(TestSensorEvent)} and
- * {@link #addSensorEvents(TestSensorEvent...)} should be called in the order that the events are
- * received. The method {@link #verify(TestSensorEnvironment, SensorStats)} should be called after
- * all events are added.
+ * Interface describing the sensor verification.
+ * This class was designed to handle streaming of events.
+ *
+ * The method {@link #addSensorEvents(Collection)} should be called in the order that the events are
+ * received.
+ *
+ * The method {@link #verify(TestSensorEnvironment, SensorStats)} should be called after all events
+ * are added.
*/
public interface ISensorVerification {
/**
- * Add a single {@link TestSensorEvent} to be evaluated.
+ * Add a list of {@link TestSensorEvent}s to be evaluated.
*/
- public void addSensorEvent(TestSensorEvent event);
-
- /**
- * Add multiple {@link TestSensorEvent}s to be evaluated.
- */
- public void addSensorEvents(TestSensorEvent ... events);
+ // TODO: refactor verifications to be stateless, and pass the list of events in verify()
+ void addSensorEvents(Collection<TestSensorEvent> events);
/**
* Evaluate all added {@link TestSensorEvent}s and update stats.
@@ -45,10 +46,10 @@
* @param stats a {@link SensorStats} object used to keep track of the stats.
* @throws AssertionError if the verification fails.
*/
- public void verify(TestSensorEnvironment environment, SensorStats stats);
+ void verify(TestSensorEnvironment environment, SensorStats stats);
/**
* Clones the {@link ISensorVerification}
*/
- public ISensorVerification clone();
+ ISensorVerification clone();
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerificationTest.java
index 0c85b63..50e288c 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/JitterVerificationTest.java
@@ -22,6 +22,8 @@
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
/**
@@ -98,11 +100,13 @@
assertEquals(3.0, jitterValues.get(3));
}
- private JitterVerification getVerification(int threshold, long ... timestamps) {
- JitterVerification verification = new JitterVerification(threshold);
+ private static JitterVerification getVerification(int threshold, long ... timestamps) {
+ Collection<TestSensorEvent> events = new ArrayList<>(timestamps.length);
for (long timestamp : timestamps) {
- verification.addSensorEvent(new TestSensorEvent(null, timestamp, 0, null));
+ events.add(new TestSensorEvent(null, timestamp, 0, null));
}
+ JitterVerification verification = new JitterVerification(threshold);
+ verification.addSensorEvents(events);
return verification;
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MagnitudeVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MagnitudeVerificationTest.java
index bb29330..ac873c1 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MagnitudeVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MagnitudeVerificationTest.java
@@ -22,6 +22,9 @@
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+
/**
* Tests for {@link MagnitudeVerification}.
*/
@@ -63,12 +66,14 @@
assertEquals(magnitude, (Float) stats.getValue(SensorStats.MAGNITUDE_KEY), 0.01);
}
- private MagnitudeVerification getVerification(float expected, float threshold,
+ private static MagnitudeVerification getVerification(float expected, float threshold,
float[] ... values) {
- MagnitudeVerification verification = new MagnitudeVerification(expected, threshold);
+ Collection<TestSensorEvent> events = new ArrayList<>(values.length);
for (float[] value : values) {
- verification.addSensorEvent(new TestSensorEvent(null, 0, 0, value));
+ events.add(new TestSensorEvent(null, 0, 0, value));
}
+ MagnitudeVerification verification = new MagnitudeVerification(expected, threshold);
+ verification.addSensorEvents(events);
return verification;
}
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MeanVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MeanVerificationTest.java
index b07ea50..d7fcf9f 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MeanVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/MeanVerificationTest.java
@@ -22,6 +22,9 @@
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+
/**
* Tests for {@link MeanVerification}.
*/
@@ -89,12 +92,14 @@
verifyStats(stats, false, new float[]{2.0f, 3.0f, 6.0f});
}
- private MeanVerification getVerification(float[] expected, float[] threshold,
+ private static MeanVerification getVerification(float[] expected, float[] threshold,
float[] ... values) {
- MeanVerification verification = new MeanVerification(expected, threshold);
+ Collection<TestSensorEvent> events = new ArrayList<>(values.length);
for (float[] value : values) {
- verification.addSensorEvent(new TestSensorEvent(null, 0, 0, value));
+ events.add(new TestSensorEvent(null, 0, 0, value));
}
+ MeanVerification verification = new MeanVerification(expected, threshold);
+ verification.addSensorEvents(events);
return verification;
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerificationTest.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerificationTest.java
index 5d958f5..617a438 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerificationTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/StandardDeviationVerificationTest.java
@@ -22,6 +22,9 @@
import android.hardware.cts.helpers.TestSensorEnvironment;
import android.hardware.cts.helpers.TestSensorEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+
/**
* Tests for {@link StandardDeviationVerification}.
*/
@@ -79,11 +82,15 @@
}
}
- private StandardDeviationVerification getVerification(float[] threshold, float[] ... values) {
- StandardDeviationVerification verification = new StandardDeviationVerification(threshold);
+ private static StandardDeviationVerification getVerification(
+ float[] threshold,
+ float[] ... values) {
+ Collection<TestSensorEvent> events = new ArrayList<>(values.length);
for (float[] value : values) {
- verification.addSensorEvent(new TestSensorEvent(null, 0, 0, value));
+ events.add(new TestSensorEvent(null, 0, 0, value));
}
+ StandardDeviationVerification verification = new StandardDeviationVerification(threshold);
+ verification.addSensorEvents(events);
return verification;
}
}