Fix the NullPointerException errors.

The NullPointerExceptions happened when the test devices did not have
the sensor corresponding to the sensor type under the test. When the
sensor was  not found, the SensorRatePermissionDirectReportTestHelper
class returned a null object, which aborted the setUp() and test
methods, but this null object was used to call a method in tearDown(),
hence the NullPointerException.

Similarly for EventConnectionTest, when sensor is not found, setUp() was
aborted, thus the SensorRatePermissionEventConnectionTestHelper was
null, but was used in tearDown(), hence the NullPointerException.

For the ResamplingTest which extends SensorTestCase class, when Assume.assumeTrue() failed, instead of
aborting the test, it threw an exception. We fixed this by removing the
Assume.assumeTrue and just return when the sensor is not found.

Test: atest CtsSensorRatePermissionTestCases on cf_x86_auto-userdebug
Bug: 136069189
Change-Id: I311cc87d53898d9dc363e2ae051b599e6a2179e8
diff --git a/tests/sensor/sensorratepermission/DirectReportAPI30/src/android/sensorratepermission/cts/directreportapi30/DirectReportAPI30Test.java b/tests/sensor/sensorratepermission/DirectReportAPI30/src/android/sensorratepermission/cts/directreportapi30/DirectReportAPI30Test.java
index a2c82f4..b97a2cc 100644
--- a/tests/sensor/sensorratepermission/DirectReportAPI30/src/android/sensorratepermission/cts/directreportapi30/DirectReportAPI30Test.java
+++ b/tests/sensor/sensorratepermission/DirectReportAPI30/src/android/sensorratepermission/cts/directreportapi30/DirectReportAPI30Test.java
@@ -32,6 +32,7 @@
 
 import org.junit.After;
 import org.junit.Assert;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -72,6 +73,9 @@
         Context context = InstrumentationRegistry.getInstrumentation().getContext();
         mDirectReportTestHelper = new SensorRatePermissionDirectReportTestHelper(context,
                 sensorType);
+        Assume.assumeTrue("Failed to create mDirectReportTestHelper!",
+                mDirectReportTestHelper != null);
+
         mSensorManager = context.getSystemService(SensorManager.class);
         mSensorPrivacyManager = context.getSystemService(SensorPrivacyManager.class);
         mUserID = UserHandle.myUserId();
@@ -79,7 +83,9 @@
 
     @After
     public void tearDown() throws InterruptedException {
-        mDirectReportTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        if (mDirectReportTestHelper != null) {
+            mDirectReportTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        }
     }
 
     @Test
@@ -126,9 +132,6 @@
         // the sensor corresponds to a sampling rate of > 200 Hz and that the sensor supports
         // direct channel.
         Sensor s = mDirectReportTestHelper.getSensor();
-        if (s == null) {
-            return;
-        }
         if (s.getHighestDirectReportRateLevel() <= SensorDirectChannel.RATE_FAST
                 || !s.isDirectChannelTypeSupported(SensorDirectChannel.TYPE_HARDWARE_BUFFER)) {
             return;
diff --git a/tests/sensor/sensorratepermission/DirectReportAPI31/src/android/sensorratepermission/cts/directreportapi31/DirectReportAPI31Test.java b/tests/sensor/sensorratepermission/DirectReportAPI31/src/android/sensorratepermission/cts/directreportapi31/DirectReportAPI31Test.java
index 50984bd..ff6d658 100644
--- a/tests/sensor/sensorratepermission/DirectReportAPI31/src/android/sensorratepermission/cts/directreportapi31/DirectReportAPI31Test.java
+++ b/tests/sensor/sensorratepermission/DirectReportAPI31/src/android/sensorratepermission/cts/directreportapi31/DirectReportAPI31Test.java
@@ -28,6 +28,7 @@
 
 import org.junit.After;
 import org.junit.Assert;
+import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -66,13 +67,18 @@
         Context context = InstrumentationRegistry.getInstrumentation().getContext();
         mDirectReportTestHelper = new SensorRatePermissionDirectReportTestHelper(context,
                 sensorType);
+        Assume.assumeTrue("Failed to create mDirectReportTestHelper!",
+                mDirectReportTestHelper != null);
+
         mSensorPrivacyManager = context.getSystemService(SensorPrivacyManager.class);
         mUserID = UserHandle.myUserId();
     }
 
     @After
     public void tearDown() throws InterruptedException {
-        mDirectReportTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        if (mDirectReportTestHelper != null) {
+            mDirectReportTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        }
     }
 
     @Test
diff --git a/tests/sensor/sensorratepermission/EventConnectionAPI30/src/android/sensorratepermission/cts/eventconnectionapi30/EventConnectionAPI30Test.java b/tests/sensor/sensorratepermission/EventConnectionAPI30/src/android/sensorratepermission/cts/eventconnectionapi30/EventConnectionAPI30Test.java
index c869bf1..59d909a 100644
--- a/tests/sensor/sensorratepermission/EventConnectionAPI30/src/android/sensorratepermission/cts/eventconnectionapi30/EventConnectionAPI30Test.java
+++ b/tests/sensor/sensorratepermission/EventConnectionAPI30/src/android/sensorratepermission/cts/eventconnectionapi30/EventConnectionAPI30Test.java
@@ -86,8 +86,13 @@
                 sensor,
                 SensorManager.SENSOR_DELAY_FASTEST,
                 (int) TimeUnit.SECONDS.toMicros(5));
+        Assume.assumeTrue("Failed to create mTestEnvironment!", mTestEnvironment != null);
+
         mEventConnectionTestHelper = new SensorRatePermissionEventConnectionTestHelper(
                 mTestEnvironment);
+        Assume.assumeTrue("Failed to create mEventConnectionTestHelper!",
+                mEventConnectionTestHelper != null);
+
         mSensorPrivacyManager = context.getSystemService(SensorPrivacyManager.class);
         // In context of this app (targetSDK = 30), this returns the original supported min delay
         // of the sensor
@@ -99,7 +104,9 @@
 
     @After
     public void tearDown() throws InterruptedException {
-        mEventConnectionTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        if (mEventConnectionTestHelper != null) {
+            mEventConnectionTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        }
     }
 
     @Test
diff --git a/tests/sensor/sensorratepermission/EventConnectionAPI31/src/android/sensorratepermission/cts/eventconnectionapi31/EventConnectionAPI31Test.java b/tests/sensor/sensorratepermission/EventConnectionAPI31/src/android/sensorratepermission/cts/eventconnectionapi31/EventConnectionAPI31Test.java
index b912cc0..ff909e5 100644
--- a/tests/sensor/sensorratepermission/EventConnectionAPI31/src/android/sensorratepermission/cts/eventconnectionapi31/EventConnectionAPI31Test.java
+++ b/tests/sensor/sensorratepermission/EventConnectionAPI31/src/android/sensorratepermission/cts/eventconnectionapi31/EventConnectionAPI31Test.java
@@ -79,15 +79,22 @@
                 sensor,
                 SensorManager.SENSOR_DELAY_FASTEST,
                 (int) TimeUnit.SECONDS.toMicros(5));
+        Assume.assumeTrue("Failed to create mTestEnvironment!", mTestEnvironment != null);
+
         mEventConnectionTestHelper = new SensorRatePermissionEventConnectionTestHelper(
                 mTestEnvironment);
+        Assume.assumeTrue("Failed to create mEventConnectionTestHelper!",
+                mEventConnectionTestHelper != null);
+
         mSensorPrivacyManager = context.getSystemService(SensorPrivacyManager.class);
         mUserID = UserHandle.myUserId();
     }
 
     @After
     public void tearDown() throws InterruptedException {
-        mEventConnectionTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        if (mEventConnectionTestHelper != null) {
+            mEventConnectionTestHelper.flipAndAssertMicToggleOff(mUserID, mSensorPrivacyManager);
+        }
     }
 
     @Test
diff --git a/tests/sensor/sensorratepermission/EventConnectionResampling/src/android/sensorratepermission/cts/resampling/ResamplingTest.java b/tests/sensor/sensorratepermission/EventConnectionResampling/src/android/sensorratepermission/cts/resampling/ResamplingTest.java
index c52e4d6..653c22f 100644
--- a/tests/sensor/sensorratepermission/EventConnectionResampling/src/android/sensorratepermission/cts/resampling/ResamplingTest.java
+++ b/tests/sensor/sensorratepermission/EventConnectionResampling/src/android/sensorratepermission/cts/resampling/ResamplingTest.java
@@ -39,7 +39,6 @@
 import androidx.test.platform.app.InstrumentationRegistry;
 
 import org.junit.Assert;
-import org.junit.Assume;
 
 import java.util.List;
 import java.util.concurrent.TimeUnit;
@@ -72,8 +71,9 @@
         mContext = InstrumentationRegistry.getInstrumentation().getContext();
         SensorManager sensorManager = mContext.getSystemService(SensorManager.class);
         Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
-        Assume.assumeTrue("Failed to find a sensor!", sensor != null);
-
+        if (sensor == null) {
+            return;
+        }
         mTestEnvironment = new TestSensorEnvironment(
                 mContext,
                 sensor,
@@ -84,6 +84,9 @@
     }
 
     public void testResamplingEventConnections() throws Exception {
+        if (mTestEnvironment == null || mEventConnectionTestHelper == null) {
+            return;
+        }
         // Start an app that registers a listener with high sampling rate
         Intent intent = new Intent();
         intent.setComponent(new ComponentName(
@@ -104,6 +107,9 @@
     }
 
     public void testSensorDefaultVerifications() throws Exception {
+        if (mTestEnvironment == null) {
+            return;
+        }
         TestSensorOperation op = TestSensorOperation.createOperation(
                 mTestEnvironment,
                 NUM_EVENTS_COUNT);