summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2022-07-08 08:14:58 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-07-08 08:14:58 +0000
commit46d79c8eddae4c167c47fd4eb4f82d9d6fec09d5 (patch)
tree07085992cbe8f8ab10ae2bfa7f3b5721e3475ea8
parent372d1f573fef129abe148f5eb1f3de341e0cdd0b (diff)
parent7fd66c6e796f03d48f0108fcb73f3e24aeebf249 (diff)
downloadcts-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-xhostsidetests/dumpsys/src/android/dumpsys/cts/BatteryStatsDumpsysTest.java42
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