Only run Car tests if feature automotive is present.
Refactor car test module to use junit 4 -- which in turn allows use of assume.
Assume provides a convenient way to skip tests if the automotive feature is not found. (see CarApiTestBase.java)
bug: 119354262
Test: m cts && cts-tradefed run cts
Change-Id: I64c271c6781e635cef1c5648b27a69d147bd5c62
Merged-In: Ib49b3d7a5e654f8e7345ebafb2aa3b50118ed50b
diff --git a/tests/tests/car/Android.mk b/tests/tests/car/Android.mk
index 7310085..049a8a6 100644
--- a/tests/tests/car/Android.mk
+++ b/tests/tests/car/Android.mk
@@ -24,7 +24,10 @@
# When built, explicitly put it in the data partition.
LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner android-support-test
+LOCAL_STATIC_JAVA_LIBRARIES := \
+ android-support-test \
+ compatibility-device-util \
+ ctstestrunner
LOCAL_JAVA_LIBRARIES := android.car android.test.base.stubs
diff --git a/tests/tests/car/AndroidManifest.xml b/tests/tests/car/AndroidManifest.xml
index 984d896..caa896a 100644
--- a/tests/tests/car/AndroidManifest.xml
+++ b/tests/tests/car/AndroidManifest.xml
@@ -17,6 +17,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.car.cts">
<uses-feature android:name="android.hardware.type.automotive" />
+ <uses-permission android:name="android.car.permission.CAR_INFO" />
+
<application>
<uses-library android:name="android.test.runner" />
</application>
diff --git a/tests/tests/car/AndroidTest.xml b/tests/tests/car/AndroidTest.xml
index c931169..558e7be 100644
--- a/tests/tests/car/AndroidTest.xml
+++ b/tests/tests/car/AndroidTest.xml
@@ -23,4 +23,5 @@
<test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="android.car.cts" />
</test>
+ <object type="module_controller" class="com.android.tradefed.testtype.suite.module.CarModuleController"/>
</configuration>
diff --git a/tests/tests/car/src/android/car/cts/CarApiTestBase.java b/tests/tests/car/src/android/car/cts/CarApiTestBase.java
index d982c1b..7cf6a73 100644
--- a/tests/tests/car/src/android/car/cts/CarApiTestBase.java
+++ b/tests/tests/car/src/android/car/cts/CarApiTestBase.java
@@ -16,18 +16,31 @@
package android.car.cts;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assume.assumeTrue;
+
import android.car.Car;
import android.content.ComponentName;
+import android.content.Context;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.os.Looper;
+import android.support.test.InstrumentationRegistry;
import android.test.AndroidTestCase;
+import com.android.compatibility.common.util.FeatureUtil;
+
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
+import org.junit.After;
-public class CarApiTestBase extends AndroidTestCase {
+public abstract class CarApiTestBase {
protected static final long DEFAULT_WAIT_TIMEOUT_MS = 1000;
private Car mCar;
@@ -39,18 +52,21 @@
assertTrue(Looper.getMainLooper().isCurrentThread());
}
- @Override
protected void setUp() throws Exception {
- super.setUp();
- mCar = Car.createCar(getContext(), mConnectionListener, null);
+ assumeTrue(FeatureUtil.isAutomotive());
+
+ Context context =
+ InstrumentationRegistry.getInstrumentation().getTargetContext();
+ mCar = Car.createCar(context, mConnectionListener, null);
mCar.connect();
mConnectionListener.waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- mCar.disconnect();
+ @After
+ public void disconnectCar() throws Exception {
+ if (mCar != null) {
+ mCar.disconnect();
+ }
}
protected synchronized Car getCar() {
diff --git a/tests/tests/car/src/android/car/cts/CarAppFocusManagerTest.java b/tests/tests/car/src/android/car/cts/CarAppFocusManagerTest.java
index 2dd0a81..910819d 100644
--- a/tests/tests/car/src/android/car/cts/CarAppFocusManagerTest.java
+++ b/tests/tests/car/src/android/car/cts/CarAppFocusManagerTest.java
@@ -15,30 +15,44 @@
*/
package android.car.cts;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import static android.car.CarAppFocusManager.APP_FOCUS_REQUEST_SUCCEEDED;
import static android.car.CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION;
import static android.car.CarAppFocusManager.APP_FOCUS_TYPE_VOICE_COMMAND;
import android.car.Car;
import android.car.CarAppFocusManager;
+import android.content.Context;
import android.platform.test.annotations.RequiresDevice;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
+
import android.util.Log;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
+import org.junit.After;
import org.junit.Assert;
-
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
@SmallTest
@RequiresDevice
+@RunWith(AndroidJUnit4.class)
public class CarAppFocusManagerTest extends CarApiTestBase {
private static final String TAG = CarAppFocusManagerTest.class.getSimpleName();
private CarAppFocusManager mManager;
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
mManager = (CarAppFocusManager) getCar().getCarManager(Car.APP_FOCUS_SERVICE);
assertNotNull(mManager);
@@ -57,6 +71,7 @@
}
+ @Test
public void testSetActiveNullListener() throws Exception {
try {
mManager.requestAppFocus(CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, null);
@@ -66,6 +81,7 @@
}
}
+ @Test
public void testRegisterNull() throws Exception {
try {
mManager.addFocusListener(null, 0);
@@ -75,6 +91,7 @@
}
}
+ @Test
public void testRegisterUnregister() throws Exception {
FocusChangedListerner listener = new FocusChangedListerner();
FocusChangedListerner listener2 = new FocusChangedListerner();
@@ -84,10 +101,14 @@
mManager.removeFocusListener(listener2);
}
+ @Test
public void testFocusChange() throws Exception {
+ Context context =
+ InstrumentationRegistry.getInstrumentation().getTargetContext();
+
DefaultServiceConnectionListener connectionListener =
new DefaultServiceConnectionListener();
- Car car2 = Car.createCar(getContext(), connectionListener, null);
+ Car car2 = Car.createCar(context, connectionListener, null);
car2.connect();
connectionListener.waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
CarAppFocusManager manager2 = (CarAppFocusManager)
@@ -216,10 +237,13 @@
manager2.removeFocusListener(change2);
}
+ @Test
public void testFilter() throws Exception {
DefaultServiceConnectionListener connectionListener =
new DefaultServiceConnectionListener();
- Car car2 = Car.createCar(getContext(), connectionListener);
+ Context context =
+ InstrumentationRegistry.getInstrumentation().getTargetContext();
+ Car car2 = Car.createCar(context, connectionListener);
car2.connect();
connectionListener.waitForConnection(DEFAULT_WAIT_TIMEOUT_MS);
CarAppFocusManager manager2 = (CarAppFocusManager)
@@ -274,6 +298,7 @@
CarAppFocusManager.APP_FOCUS_TYPE_NAVIGATION, false));
}
+ @Test
public void testMultipleChangeListenersPerManager() throws Exception {
FocusChangedListerner listener = new FocusChangedListerner();
FocusChangedListerner listener2 = new FocusChangedListerner();
diff --git a/tests/tests/car/src/android/car/cts/CarInfoManagerTest.java b/tests/tests/car/src/android/car/cts/CarInfoManagerTest.java
index e9de083..51cd291 100644
--- a/tests/tests/car/src/android/car/cts/CarInfoManagerTest.java
+++ b/tests/tests/car/src/android/car/cts/CarInfoManagerTest.java
@@ -15,29 +15,38 @@
*/
package android.car.cts;
+import static org.junit.Assert.assertNotNull;
+
import android.car.Car;
import android.car.CarInfoManager;
import android.os.Bundle;
import android.platform.test.annotations.RequiresDevice;
+import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
@SmallTest
@RequiresDevice
+@RunWith(AndroidJUnit4.class)
public class CarInfoManagerTest extends CarApiTestBase {
private CarInfoManager mCarInfoManager;
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
mCarInfoManager = (CarInfoManager) getCar().getCarManager(Car.INFO_SERVICE);
}
+ @Test
public void testVehicleId() throws Exception {
assertNotNull(mCarInfoManager.getVehicleId());
}
+ @Test
public void testNullables() throws Exception {
// no guarantee of existence. just call and check if it throws exception.
mCarInfoManager.getManufacturer();
diff --git a/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java b/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java
index 4ba2cbf..0c3aebc 100644
--- a/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java
+++ b/tests/tests/car/src/android/car/cts/CarPackageManagerTest.java
@@ -15,20 +15,35 @@
*/
package android.car.cts;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
import android.car.Car;
import android.car.CarNotConnectedException;
import android.car.content.pm.CarPackageManager;
+import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.platform.test.annotations.RequiresDevice;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
import java.util.List;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
@SmallTest
@RequiresDevice
+@RunWith(AndroidJUnit4.class)
public class CarPackageManagerTest extends CarApiTestBase {
private CarPackageManager mCarPm;
@@ -37,14 +52,14 @@
/** Name of the meta-data attribute for the automotive application XML resource */
private static final String METADATA_ATTRIBUTE = "android.car.application";
-
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
mCarPm = (CarPackageManager) getCar().getCarManager(Car.PACKAGE_SERVICE);
}
- public void testActivityDistractionOptimized() throws Exception {
+ @Test
+ public void testActivityDistractionOptimized() throws Exception {
assertFalse(mCarPm.isActivityDistractionOptimized("com.basic.package", "DummyActivity"));
// Real system activity is not allowed as well.
assertFalse(mCarPm.isActivityDistractionOptimized("com.android.phone", "CallActivity"));
@@ -69,8 +84,10 @@
}
}
+ @Test
public void testSystemActivitiesAllowed() throws CarNotConnectedException {
- List<PackageInfo> packages = getContext().getPackageManager().getInstalledPackages(
+ Context context = InstrumentationRegistry.getInstrumentation().getTargetContext();
+ List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(
PackageManager.GET_ACTIVITIES | PackageManager.GET_META_DATA);
for (PackageInfo info : packages) {
@@ -95,6 +112,8 @@
}
}
+ @Test
+ @Ignore // Enable when b/120125891 is fixed
public void testServiceDistractionOptimized() throws Exception {
assertFalse(mCarPm.isServiceDistractionOptimized("com.basic.package", ""));
assertTrue(mCarPm.isServiceDistractionOptimized("com.android.settings", "Any"));
diff --git a/tests/tests/car/src/android/car/cts/CarSensorManagerTest.java b/tests/tests/car/src/android/car/cts/CarSensorManagerTest.java
index 21358a6..84338be 100644
--- a/tests/tests/car/src/android/car/cts/CarSensorManagerTest.java
+++ b/tests/tests/car/src/android/car/cts/CarSensorManagerTest.java
@@ -16,24 +16,38 @@
package android.car.cts;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
+
import android.car.Car;
import android.car.hardware.CarSensorEvent;
import android.car.hardware.CarSensorManager;
import android.platform.test.annotations.RequiresDevice;
+import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
@SmallTest
@RequiresDevice
+@RunWith(AndroidJUnit4.class)
public class CarSensorManagerTest extends CarApiTestBase {
private CarSensorManager mCarSensorManager;
- @Override
- protected void setUp() throws Exception {
+ @Before
+ public void setUp() throws Exception {
super.setUp();
mCarSensorManager = (CarSensorManager) getCar().getCarManager(Car.SENSOR_SERVICE);
}
+ @Test
+ @Ignore // Enable when b/120125891 is fixed
public void testRequiredSensorsForDrivingState() throws Exception {
int[] supportedSensors = mCarSensorManager.getSupportedSensors();
assertNotNull(supportedSensors);
diff --git a/tests/tests/car/src/android/car/cts/CarTest.java b/tests/tests/car/src/android/car/cts/CarTest.java
index 61b16bb..e406008 100644
--- a/tests/tests/car/src/android/car/cts/CarTest.java
+++ b/tests/tests/car/src/android/car/cts/CarTest.java
@@ -15,30 +15,53 @@
*/
package android.car.cts;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+
import android.car.Car;
import android.content.ComponentName;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.platform.test.annotations.RequiresDevice;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
import android.test.AndroidTestCase;
import android.test.suitebuilder.annotation.SmallTest;
+import com.android.compatibility.common.util.FeatureUtil;
+
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
@SmallTest
@RequiresDevice
-public class CarTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class CarTest {
private static final long DEFAULT_WAIT_TIMEOUT_MS = 2000;
private Car mCar;
private DefaultServiceConnectionListener mServiceConnectionListener;
+ @Before
+ public void setUp() {
+ assumeTrue(FeatureUtil.isAutomotive());
+ }
+
+ @Test
public void testConnection() throws Exception {
mServiceConnectionListener = new DefaultServiceConnectionListener();
- mCar = Car.createCar(getContext(), mServiceConnectionListener);
+ mCar = Car.createCar(
+ InstrumentationRegistry.getInstrumentation().getTargetContext(),
+ mServiceConnectionListener);
assertFalse(mCar.isConnected());
assertFalse(mCar.isConnecting());
mCar.connect();
diff --git a/tests/tests/car/src/android/car/cts/ExceptionsTest.java b/tests/tests/car/src/android/car/cts/ExceptionsTest.java
index 904650f..4a14de9 100644
--- a/tests/tests/car/src/android/car/cts/ExceptionsTest.java
+++ b/tests/tests/car/src/android/car/cts/ExceptionsTest.java
@@ -15,18 +15,35 @@
*/
package android.car.cts;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assume.assumeTrue;
+
import android.car.CarNotConnectedException;
import android.platform.test.annotations.RequiresDevice;
-import android.test.AndroidTestCase;
+import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.SmallTest;
+import com.android.compatibility.common.util.FeatureUtil;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
@SmallTest
@RequiresDevice
-public class ExceptionsTest extends AndroidTestCase {
+@RunWith(AndroidJUnit4.class)
+public class ExceptionsTest {
private static final String MESSAGE = "Oops!";
private static final Exception CAUSE = new RuntimeException();
+ @Before
+ public void setUp() {
+ assumeTrue(FeatureUtil.isAutomotive());
+ }
+
+ @Test
public void testCarNotConnectedException() {
CarNotConnectedException exception = new CarNotConnectedException();
assertNull(exception.getMessage());