diff options
author | Treehugger Robot <treehugger-gerrit@google.com> | 2022-07-08 08:14:58 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-07-08 08:14:58 +0000 |
commit | 46d79c8eddae4c167c47fd4eb4f82d9d6fec09d5 (patch) | |
tree | 07085992cbe8f8ab10ae2bfa7f3b5721e3475ea8 | |
parent | 372d1f573fef129abe148f5eb1f3de341e0cdd0b (diff) | |
parent | 7fd66c6e796f03d48f0108fcb73f3e24aeebf249 (diff) | |
download | cts-46d79c8eddae4c167c47fd4eb4f82d9d6fec09d5.tar.gz |
Merge "Update parsing mechanism for testBatterystatsOutput testcase" into android12-tests-dev am: 7fd66c6e79
Original change: https://android-review.googlesource.com/c/platform/cts/+/2137856
Change-Id: I35a15157aa844040c6fc1c909a392c8661115155
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rwxr-xr-x | hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java b/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java index 11f24fad5d5..d6ac4851002 100755 --- a/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java +++ b/hostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java @@ -25,6 +25,7 @@ import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.StringReader; +import java.util.ArrayList; import java.util.HashSet; import java.util.Set; @@ -36,6 +37,41 @@ public class BatteryStatsDumpsysTest extends BaseDumpsysTest { private static final String TEST_PKG = "com.android.cts.framestatstestapp"; /** + * Parse each line from output of dumpsys to handle special fields such as + * 'aaa,"bbb,ccc",ddd', to capture properly. + */ + private static String[] parseCsv(String line) { + ArrayList<String> parts = new ArrayList<>(); + String[] splitStrings = line.split(",", -1); + String s = ""; + boolean escaping = false; + for (String splitString : splitStrings) { + if (escaping) { + s += "," + splitString; + } else { + if (splitString.startsWith("\"")) { + // Field start with ". Start escaping. + s = splitString; + escaping = true; + } else { + parts.add(splitString); + } + } + if (escaping && s.length() > 1 && s.endsWith("\"")) { + // Field end with ". Stop escaping. + parts.add(s.substring(1, s.length() - 1)); + escaping = false; + } + } + if (escaping) { + // Unclosed escaping string. Add it anyway. + parts.add(s.substring(1)); + } + + return parts.toArray(new String[parts.size()]); + } + + /** * Tests the output of "dumpsys batterystats --checkin". * * @throws Exception @@ -58,11 +94,7 @@ public class BatteryStatsDumpsysTest extends BaseDumpsysTest { try { - // With a default limit of 0, empty strings at the end are discarded. - // We still consider the empty string as a valid value in some cases. - // Using any negative number for the limit will preserve a trailing empty string. - // @see String#split(String, int) - String[] parts = line.split(",", -1); + String[] parts = parseCsv(line); assertInteger(parts[0]); // old version assertInteger(parts[1]); // UID switch (parts[2]) { // aggregation type |