Statsd CTS: check for Wifi EnhancedPowerReporting
Not all devices support WifiActivityInfo. We must check whether the
device claims to do so before running the test.
Bug: 77280656
Test: android.cts.statsd.atom.HostAtomTests#testWifiActivityInfo
Change-Id: I904b61f1dfb8f7db8e193b8546e2660f0af40748
diff --git a/hostsidetests/statsd/apps/statsdapp/src/com/android/server/cts/device/statsd/Checkers.java b/hostsidetests/statsd/apps/statsdapp/src/com/android/server/cts/device/statsd/Checkers.java
new file mode 100644
index 0000000..40c4f03
--- /dev/null
+++ b/hostsidetests/statsd/apps/statsdapp/src/com/android/server/cts/device/statsd/Checkers.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2018 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 com.android.server.cts.device.statsd;
+
+import android.net.wifi.WifiManager;
+import android.support.test.InstrumentationRegistry;
+
+import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+
+/**
+ * Methods to check device properties. They pass iff the check returns true.
+ */
+public class Checkers {
+ private static final String TAG = Checkers.class.getSimpleName();
+
+ @Test
+ public void checkWifiEnhancedPowerReportingSupported() {
+ WifiManager wm = InstrumentationRegistry.getContext().getSystemService(WifiManager.class);
+ assertTrue(wm.isEnhancedPowerReportingSupported());
+ }
+}
diff --git a/hostsidetests/statsd/src/android/cts/statsd/atom/AtomTestCase.java b/hostsidetests/statsd/src/android/cts/statsd/atom/AtomTestCase.java
index 2fa1ac4..225ebf5 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/atom/AtomTestCase.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/atom/AtomTestCase.java
@@ -15,6 +15,9 @@
*/
package android.cts.statsd.atom;
+import static android.cts.statsd.atom.DeviceAtomTestCase.DEVICE_SIDE_TEST_APK;
+import static android.cts.statsd.atom.DeviceAtomTestCase.DEVICE_SIDE_TEST_PACKAGE;
+
import android.os.BatteryStatsProto;
import android.service.batterystats.BatteryStatsServiceDumpProto;
import android.view.DisplayStateEnum;
@@ -86,11 +89,6 @@
if (statsdDisabled()) {
return;
}
- // TODO: need to do these before running real test:
- // 1. compile statsd and push to device
- // 2. make sure StatsCompanionService and incidentd is running
- // 3. start statsd
- // These should go away once we have statsd properly set up.
// Uninstall to clear the history in case it's still on the device.
removeConfig(CONFIG_ID);
@@ -100,6 +98,7 @@
@Override
protected void tearDown() throws Exception {
removeConfig(CONFIG_ID);
+ getDevice().uninstallPackage(DEVICE_SIDE_TEST_PACKAGE);
super.tearDown();
}
@@ -130,6 +129,18 @@
return log.contains(PERFETTO_STARTED_STRING);
}
+ protected boolean checkDeviceFor(String methodName) throws Exception {
+ try {
+ installPackage(DEVICE_SIDE_TEST_APK, true);
+ runDeviceTests(DEVICE_SIDE_TEST_PACKAGE, ".Checkers", methodName);
+ // Test passes, meaning that the answer is true.
+ return true;
+ } catch (AssertionError e) {
+ // Method is designed to fail if the answer is false.
+ return false;
+ }
+ }
+
protected static StatsdConfig.Builder createConfigBuilder() {
return StatsdConfig.newBuilder().setId(CONFIG_ID)
.addAllowedLogSource("AID_SYSTEM")
diff --git a/hostsidetests/statsd/src/android/cts/statsd/atom/BaseTestCase.java b/hostsidetests/statsd/src/android/cts/statsd/atom/BaseTestCase.java
index fc4a561..cd396ec 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/atom/BaseTestCase.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/atom/BaseTestCase.java
@@ -120,11 +120,11 @@
final TestRunResult result = listener.getCurrentRunResults();
if (result.isRunFailure()) {
- throw new AssertionError("Failed to successfully run device tests for "
+ throw new Error("Failed to successfully run device tests for "
+ result.getName() + ": " + result.getRunFailureMessage());
}
if (result.getNumTests() == 0) {
- throw new AssertionError("No tests were run on the device");
+ throw new Error("No tests were run on the device");
}
if (result.hasFailedTests()) {
diff --git a/hostsidetests/statsd/src/android/cts/statsd/atom/HostAtomTests.java b/hostsidetests/statsd/src/android/cts/statsd/atom/HostAtomTests.java
index eb96b83..5c7d244 100644
--- a/hostsidetests/statsd/src/android/cts/statsd/atom/HostAtomTests.java
+++ b/hostsidetests/statsd/src/android/cts/statsd/atom/HostAtomTests.java
@@ -522,6 +522,8 @@
}
if (!hasFeature(FEATURE_WIFI, true)) return;
if (!hasFeature(FEATURE_WATCH, false)) return;
+ if (!checkDeviceFor("checkWifiEnhancedPowerReportingSupported")) return;
+
StatsdConfig.Builder config = getPulledConfig();
addGaugeAtom(config, Atom.WIFI_ACTIVITY_INFO_FIELD_NUMBER, null);