Add support for ReportLog
Like I672b7bc41009ddee534a30bb428369ad916bb42c but doesn't break the
build. Move SensorTestCase out of the helpers library since it depends
on ctsdeviceutil and ctstestrunner.
Change-Id: I30e9ccf24c4c10370b93599c523cee7dad0b0094
diff --git a/libs/deviceutil/src/android/cts/util/DeviceReportLog.java b/libs/deviceutil/src/android/cts/util/DeviceReportLog.java
index b707fc8..a3ceecf 100644
--- a/libs/deviceutil/src/android/cts/util/DeviceReportLog.java
+++ b/libs/deviceutil/src/android/cts/util/DeviceReportLog.java
@@ -16,19 +16,24 @@
package android.cts.util;
-import com.android.cts.util.ReportLog;
-
import android.app.Instrumentation;
import android.os.Bundle;
import android.util.Log;
+import com.android.cts.util.ReportLog;
+
public class DeviceReportLog extends ReportLog {
private static final String TAG = "DeviceCtsReport";
private static final String CTS_RESULT = "CTS_RESULT";
private static final int INST_STATUS_IN_PROGRESS = 2;
+ private static final int BASE_DEPTH = 4;
- DeviceReportLog() {
- mDepth = 4;
+ public DeviceReportLog() {
+ mDepth = BASE_DEPTH;
+ }
+
+ public DeviceReportLog(int depth) {
+ mDepth = BASE_DEPTH + depth;
}
@Override
diff --git a/tests/tests/hardware/Android.mk b/tests/tests/hardware/Android.mk
index 7fb0d5a..110b291 100644
--- a/tests/tests/hardware/Android.mk
+++ b/tests/tests/hardware/Android.mk
@@ -32,7 +32,7 @@
LOCAL_MODULE_TAGS := tests
-LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner mockito-target android-ex-camera2
+LOCAL_STATIC_JAVA_LIBRARIES := ctsdeviceutil ctstestrunner mockito-target android-ex-camera2
LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
index 1c62981..d5d7972 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorIntegrationTests.java
@@ -20,7 +20,6 @@
import android.hardware.SensorManager;
import android.hardware.cts.helpers.SensorCtsHelper;
import android.hardware.cts.helpers.SensorStats;
-import android.hardware.cts.helpers.SensorTestCase;
import android.hardware.cts.helpers.sensoroperations.ParallelSensorOperation;
import android.hardware.cts.helpers.sensoroperations.RepeatingSensorOperation;
import android.hardware.cts.helpers.sensoroperations.SequentialSensorOperation;
diff --git a/tests/tests/hardware/src/android/hardware/cts/SensorTestCase.java b/tests/tests/hardware/src/android/hardware/cts/SensorTestCase.java
new file mode 100644
index 0000000..222da56
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/SensorTestCase.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2013 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;
+
+import android.app.Instrumentation;
+import android.cts.util.CtsAndroidTestCase;
+import android.cts.util.DeviceReportLog;
+import android.hardware.cts.helpers.SensorNotSupportedException;
+import android.hardware.cts.helpers.SensorStats;
+import android.util.Log;
+
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+
+/**
+ * Test Case class that handles gracefully sensors that are not available in the device.
+ */
+public abstract class SensorTestCase extends CtsAndroidTestCase {
+ protected final String LOG_TAG = "TestRunner";
+
+ protected SensorTestCase() {}
+
+ @Override
+ public void runTest() throws Throwable {
+ try {
+ super.runTest();
+ } catch (SensorNotSupportedException e) {
+ // the sensor is not supported/available in the device, log a warning and skip the test
+ Log.w(LOG_TAG, e.getMessage());
+ }
+ }
+
+ /**
+ * Utility method to log selected stats to a {@link ReportLog} object. The stats must be
+ * a number or an array of numbers.
+ */
+ public static void logSelectedStatsToReportLog(Instrumentation instrumentation, int depth,
+ String[] keys, SensorStats stats) {
+ DeviceReportLog reportLog = new DeviceReportLog(depth);
+
+ for (String key : keys) {
+ Object value = stats.getValue(key);
+ if (value instanceof Integer) {
+ reportLog.printValue(key, (Integer) value, ResultType.NEUTRAL, ResultUnit.NONE);
+ } else if (value instanceof Double) {
+ reportLog.printValue(key, (Double) value, ResultType.NEUTRAL, ResultUnit.NONE);
+ } else if (value instanceof Float) {
+ reportLog.printValue(key, (Float) value, ResultType.NEUTRAL, ResultUnit.NONE);
+ } else if (value instanceof double[]) {
+ reportLog.printArray(key, (double[]) value, ResultType.NEUTRAL, ResultUnit.NONE);
+ } else if (value instanceof float[]) {
+ float[] tmpFloat = (float[]) value;
+ double[] tmpDouble = new double[tmpFloat.length];
+ for (int i = 0; i < tmpDouble.length; i++) tmpDouble[i] = tmpFloat[i];
+ reportLog.printArray(key, tmpDouble, ResultType.NEUTRAL, ResultUnit.NONE);
+ }
+ }
+
+ reportLog.printSummary("summary", 0, ResultType.NEUTRAL, ResultUnit.NONE);
+ reportLog.deliverReportToHost(instrumentation);
+ }
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java b/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
index 35c312f..cd6adb1 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
@@ -20,7 +20,6 @@
import android.hardware.SensorManager;
import android.hardware.cts.helpers.SensorCtsHelper;
import android.hardware.cts.helpers.SensorStats;
-import android.hardware.cts.helpers.SensorTestCase;
import android.hardware.cts.helpers.SensorTestInformation;
import android.hardware.cts.helpers.sensoroperations.TestSensorOperation;
@@ -98,6 +97,15 @@
private static final int RATE_5HZ = 200000;
private static final int RATE_1HZ = 1000000;
+ private static final String[] STAT_KEYS = {
+ SensorStats.FREQUENCY_KEY,
+ SensorStats.JITTER_95_PERCENTILE_KEY,
+ SensorStats.EVENT_OUT_OF_ORDER_COUNT_KEY,
+ SensorStats.MAGNITUDE_KEY,
+ SensorStats.MEAN_KEY,
+ SensorStats.STANDARD_DEVIATION_KEY,
+ };
+
/**
* This test verifies that the sensor's properties complies with the required properites set in
* the CDD.
@@ -123,7 +131,6 @@
sensorName, sensor.getMinDelay(), expected);
assertTrue(msg, sensor.getMinDelay() <= expected);
}
-
}
}
@@ -214,6 +221,7 @@
runSensorTest(Sensor.TYPE_ORIENTATION, SensorManager.SENSOR_DELAY_FASTEST, BATCHING_OFF);
}
+ @SuppressWarnings("deprecation")
public void testOrientation_100hz() throws Throwable {
runSensorTest(Sensor.TYPE_ORIENTATION, RATE_100HZ, BATCHING_OFF);
}
@@ -594,6 +602,10 @@
op.setLogEvents(true);
try {
op.execute();
+
+ // Only report stats if it passes.
+ logSelectedStatsToReportLog(getInstrumentation(), 2, STAT_KEYS,
+ op.getStats());
} finally {
SensorStats.logStats(TAG, op.getStats());
@@ -609,6 +621,8 @@
String fileName = String.format("single_sensor_%s_%s%s.txt",
sensorName, sensorRate, batching);
SensorStats.logStatsToFile(fileName, op.getStats());
+
+
}
}
}
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java
deleted file mode 100644
index 4bd0eed..0000000
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2013 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.test.AndroidTestCase;
-
-import android.util.Log;
-
-/**
- * Test Case class that handles gracefully sensors that are not available in the device.
- */
-public abstract class SensorTestCase extends AndroidTestCase {
- protected final String LOG_TAG = "TestRunner";
-
- protected SensorTestCase() {}
-
- @Override
- public void runTest() throws Throwable {
- try {
- super.runTest();
- } catch (SensorNotSupportedException e) {
- // the sensor is not supported/available in the device, log a warning and skip the test
- Log.w(LOG_TAG, e.getMessage());
- }
- }
-}