Fix NPE from onDestroy in sensor CtsVerifier tests
b/17834381

Clarify error message on timeout waiting for sensor events
b/17834380

- Update EventGap verification to skip first event

Change-Id: I2bbe210de09a6fab8ce13e5f5804f57765f9d317
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/base/SensorCtsTestActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/base/SensorCtsTestActivity.java
index 77f3a41..6e98121 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/sensors/base/SensorCtsTestActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/sensors/base/SensorCtsTestActivity.java
@@ -94,7 +94,9 @@
     @Override
     protected void onDestroy() {
         super.onDestroy();
-        mScreenManipulator.releaseScreenOn();
+        if (mScreenManipulator != null) {
+            mScreenManipulator.releaseScreenOn();
+        }
     }
 
     /**
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 5197184..4505633 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/TestSensorEventListener.java
@@ -169,8 +169,9 @@
             String message = SensorCtsHelper.formatAssertionMessage(
                     "WaitForEvents",
                     mEnvironment,
-                    "count:%d, available:%d",
-                    eventCount, mEventLatch.getCount());
+                    "requested:%d, received:%d",
+                    eventCount,
+                    eventCount - mEventLatch.getCount());
             Assert.assertTrue(message, mEventLatch.await(timeoutUs, TimeUnit.MICROSECONDS));
         } catch(InterruptedException e) {
             // Ignore
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java
index 962e5ad..156afa8 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/sensorverification/EventGapVerification.java
@@ -25,6 +25,9 @@
     // Number of indices to print in assert message before truncating
     private static final int TRUNCATE_MESSAGE_LENGTH = 3;
 
+    // Number of events to truncate (discard) from the initial events received
+    private static final int TRUNCATE_EVENTS_COUNT = 1;
+
     private final int mExpectedDelayUs;
 
     private final List<IndexedEventPair> mEventGaps = new LinkedList<IndexedEventPair>();
@@ -105,15 +108,16 @@
      */
     @Override
     protected void addSensorEventInternal(TestSensorEvent event) {
-        if (mPreviousEvent != null) {
-            long deltaNs = event.timestamp - mPreviousEvent.timestamp;
-            long deltaUs = TimeUnit.MICROSECONDS.convert(deltaNs, TimeUnit.NANOSECONDS);
-            if (deltaUs > mExpectedDelayUs * THRESHOLD) {
-                mEventGaps.add(new IndexedEventPair(mIndex, event, mPreviousEvent));
+        if (mIndex >= TRUNCATE_EVENTS_COUNT) {
+            if (mPreviousEvent != null) {
+                long deltaNs = event.timestamp - mPreviousEvent.timestamp;
+                long deltaUs = TimeUnit.MICROSECONDS.convert(deltaNs, TimeUnit.NANOSECONDS);
+                if (deltaUs > mExpectedDelayUs * THRESHOLD) {
+                    mEventGaps.add(new IndexedEventPair(mIndex, event, mPreviousEvent));
+                }
             }
+            mPreviousEvent = event;
         }
-
-        mPreviousEvent = event;
         mIndex++;
     }
 }