EDI: Ignore all double values that is NaN or Infinite
am: 35c1ec53fa
Change-Id: I525d6109363346b6a215a2b39b95c7a210ccca27
diff --git a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfo.java b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfo.java
index 8aa3380..750e45f 100644
--- a/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfo.java
+++ b/common/device-side/device-info/src/com/android/compatibility/common/deviceinfo/DeviceInfo.java
@@ -87,7 +87,7 @@
mResultCode = ResultCode.COMPLETED;
}
} catch (Exception e) {
- failed("Could not collect device info: " + e.getMessage());
+ failed("Could not collect device info", e);
}
}
@@ -136,6 +136,12 @@
Log.e(LOG_TAG, message, exception);
}
+ private void failed(String message, Throwable exception) {
+ mResultCode = ResultCode.FAILED;
+ mErrorMessage = message;
+ Log.e(LOG_TAG, message, exception);
+ }
+
private void failed(String message) {
mResultCode = ResultCode.FAILED;
mErrorMessage = message;
diff --git a/common/device-side/util/src/com/android/compatibility/common/util/DeviceInfoStore.java b/common/device-side/util/src/com/android/compatibility/common/util/DeviceInfoStore.java
index 9f1bda5..735b955 100644
--- a/common/device-side/util/src/com/android/compatibility/common/util/DeviceInfoStore.java
+++ b/common/device-side/util/src/com/android/compatibility/common/util/DeviceInfoStore.java
@@ -135,9 +135,7 @@
*/
@Override
public void addResult(String name, float value) throws IOException {
- checkName(name);
- mJsonWriter.name(name);
- mJsonWriter.value(value);
+ addResult(name, (double) value);
}
/**
@@ -146,8 +144,12 @@
@Override
public void addResult(String name, double value) throws IOException {
checkName(name);
- mJsonWriter.name(name);
- mJsonWriter.value(value);
+ if (isDoubleNaNOrInfinite(value)) {
+ return;
+ } else {
+ mJsonWriter.name(name);
+ mJsonWriter.value(value);
+ }
}
/**
@@ -203,13 +205,11 @@
*/
@Override
public void addArrayResult(String name, float[] array) throws IOException {
- checkName(name);
- mJsonWriter.name(name);
- mJsonWriter.beginArray();
- for (float value : checkArray(array)) {
- mJsonWriter.value(value);
+ double[] doubleArray = new double[array.length];
+ for (int i = 0; i < array.length; i++) {
+ doubleArray[i] = array[i];
}
- mJsonWriter.endArray();
+ addArrayResult(name, doubleArray);
}
/**
@@ -221,6 +221,9 @@
mJsonWriter.name(name);
mJsonWriter.beginArray();
for (double value : checkArray(array)) {
+ if (isDoubleNaNOrInfinite(value)) {
+ continue;
+ }
mJsonWriter.value(value);
}
mJsonWriter.endArray();
diff --git a/common/util/src/com/android/compatibility/common/util/InfoStore.java b/common/util/src/com/android/compatibility/common/util/InfoStore.java
index 6c5cc0d..b8014f7 100644
--- a/common/util/src/com/android/compatibility/common/util/InfoStore.java
+++ b/common/util/src/com/android/compatibility/common/util/InfoStore.java
@@ -189,4 +189,8 @@
}
return value;
}
+
+ protected static boolean isDoubleNaNOrInfinite(Double value) {
+ return Double.isNaN(value) || Double.isInfinite(value);
+ }
}
diff --git a/tools/cts-device-info/src/com/android/cts/deviceinfo/SampleDeviceInfo.java b/tools/cts-device-info/src/com/android/cts/deviceinfo/SampleDeviceInfo.java
index 8d3d7ada..67db187 100644
--- a/tools/cts-device-info/src/com/android/cts/deviceinfo/SampleDeviceInfo.java
+++ b/tools/cts-device-info/src/com/android/cts/deviceinfo/SampleDeviceInfo.java
@@ -33,6 +33,7 @@
double[] doubles = {Double.MAX_VALUE, Double.MIN_VALUE};
int[] ints = {Integer.MAX_VALUE, Integer.MIN_VALUE};
long[] longs = {Long.MAX_VALUE, Long.MIN_VALUE};
+ float[] floats = {Float.MAX_VALUE, Float.MIN_VALUE, Float.NaN};
// Group Foo
store.startGroup("foo");
@@ -49,12 +50,16 @@
store.addArrayResult("bar_double", doubles);
store.addArrayResult("bar_int", ints);
store.addArrayResult("bar_long", longs);
+ store.addArrayResult("bar_float", floats);
store.endGroup(); // bar
store.addResult("foo_double", Double.MAX_VALUE);
store.addResult("foo_int", Integer.MAX_VALUE);
store.addResult("foo_long", Long.MAX_VALUE);
store.addResult("foo_string", "foo-string");
+ store.addResult("foo_float_nan", Float.NaN);
+ store.addResult("foo_float_max", Float.MAX_VALUE + 1);
+ store.addResult("foo_float_min", Float.MIN_VALUE - 1);
store.endGroup(); // foo
}
}