Add support for ReportLog
Change-Id: I672b7bc41009ddee534a30bb428369ad916bb42c
diff --git a/libs/deviceutil/src/android/cts/util/DeviceReportLog.java b/libs/deviceutil/src/android/cts/util/DeviceReportLog.java
index b707fc8..a3ceecfa 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..8ec3fdc 100644
--- a/tests/tests/hardware/Android.mk
+++ b/tests/tests/hardware/Android.mk
@@ -14,25 +14,13 @@
LOCAL_PATH:= $(call my-dir)
-# Reusable Sensor test classes and helpers
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := cts-sensors-tests
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src/android/hardware/cts/helpers)
-
-include $(BUILD_STATIC_JAVA_LIBRARY)
-
-
# CtsHardwareTestCases package
include $(CLEAR_VARS)
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/SingleSensorTests.java b/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
index 35c312f..7cbe113 100644
--- a/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
+++ b/tests/tests/hardware/src/android/hardware/cts/SingleSensorTests.java
@@ -98,6 +98,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 +132,6 @@
sensorName, sensor.getMinDelay(), expected);
assertTrue(msg, sensor.getMinDelay() <= expected);
}
-
}
}
@@ -214,6 +222,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 +603,10 @@
op.setLogEvents(true);
try {
op.execute();
+
+ // Only report stats if it passes.
+ SensorStats.logSelectedStatsToReportLog(getInstrumentation(), 2, STAT_KEYS,
+ op.getStats());
} finally {
SensorStats.logStats(TAG, op.getStats());
@@ -609,6 +622,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/SensorStats.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorStats.java
index 1a500d4..b868ea6 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorStats.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorStats.java
@@ -16,10 +16,17 @@
package android.hardware.cts.helpers;
+import android.app.Instrumentation;
+import android.cts.util.DeviceReportLog;
import android.hardware.cts.helpers.sensoroperations.ISensorOperation;
+import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
+import com.android.cts.util.ReportLog;
+import com.android.cts.util.ResultType;
+import com.android.cts.util.ResultUnit;
+
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
@@ -148,6 +155,36 @@
}
}
+ /**
+ * 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);
+ }
+
private static List<String> getSortedKeys(Map<String, Object> flattenedStats) {
List<String> keys = new ArrayList<String>(flattenedStats.keySet());
Collections.sort(keys);
diff --git a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java
index 4bd0eed..a476dab 100644
--- a/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java
+++ b/tests/tests/hardware/src/android/hardware/cts/helpers/SensorTestCase.java
@@ -16,14 +16,13 @@
package android.hardware.cts.helpers;
-import android.test.AndroidTestCase;
-
+import android.cts.util.CtsAndroidTestCase;
import android.util.Log;
/**
* Test Case class that handles gracefully sensors that are not available in the device.
*/
-public abstract class SensorTestCase extends AndroidTestCase {
+public abstract class SensorTestCase extends CtsAndroidTestCase {
protected final String LOG_TAG = "TestRunner";
protected SensorTestCase() {}