Sort INSTRUMENTATION_STATUS keys on am instrument output
Previously the output from perftests was printed in a random order:
INSTRUMENTATION_STATUS: timeGetDataCapacity_standardDeviation=5
INSTRUMENTATION_STATUS: timeGetDataCapacity_median=486
INSTRUMENTATION_STATUS: timeGetDataCapacity_mean=489
INSTRUMENTATION_STATUS: timeGetDataCapacity_min=484
INSTRUMENTATION_STATUS_CODE: -1
Now it's always printed in the same (sorted) order.
INSTRUMENTATION_STATUS: timeGetDataCapacity_mean=489
INSTRUMENTATION_STATUS: timeGetDataCapacity_median=486
INSTRUMENTATION_STATUS: timeGetDataCapacity_min=484
INSTRUMENTATION_STATUS: timeGetDataCapacity_standardDeviation=5
INSTRUMENTATION_STATUS_CODE: -1
Test: manual test
Change-Id: I807aa05e6523b70a132ab97fc099156bb3dc1f96
diff --git a/cmds/am/src/com/android/commands/am/Instrument.java b/cmds/am/src/com/android/commands/am/Instrument.java
index 4966b43..c6d83f5 100644
--- a/cmds/am/src/com/android/commands/am/Instrument.java
+++ b/cmds/am/src/com/android/commands/am/Instrument.java
@@ -25,7 +25,6 @@
import android.content.pm.InstrumentationInfo;
import android.os.Build;
import android.os.Bundle;
-import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.AndroidException;
@@ -34,6 +33,8 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
@@ -95,6 +96,12 @@
public void onError(String errorText, boolean commandError);
}
+ private static Collection<String> sorted(Collection<String> list) {
+ final ArrayList<String> copy = new ArrayList<>(list);
+ Collections.sort(copy);
+ return copy;
+ }
+
/**
* Printer for the 'classic' text based status reporting.
*/
@@ -124,7 +131,7 @@
System.out.print(pretty);
} else {
if (results != null) {
- for (String key : results.keySet()) {
+ for (String key : sorted(results.keySet())) {
System.out.println(
"INSTRUMENTATION_STATUS: " + key + "=" + results.get(key));
}
@@ -214,7 +221,7 @@
private void writeBundle(ProtoOutputStream proto, long fieldId, Bundle bundle) {
final long bundleToken = proto.startObject(fieldId);
- for (final String key: bundle.keySet()) {
+ for (final String key: sorted(bundle.keySet())) {
final long entryToken = proto.startRepeatedObject(
InstrumentationData.ResultsBundle.ENTRIES);