summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Rowe <erowe@google.com>2014-02-24 12:10:47 -0800
committerEric Rowe <erowe@google.com>2014-02-24 12:10:47 -0800
commit352916e3ed194bcae51744741486ddbeb2764002 (patch)
tree78840ec2cc15e84ac1a661d8cd4dbdf47d26a3b5
parenta45914a68f31b8f20c55affc63a1f07120a005c7 (diff)
downloadloganalysis-352916e3ed194bcae51744741486ddbeb2764002.tar.gz
Fix ANR traces parsing
Bug: 12903905 Change-Id: I0a7551f4ad7bc000f006e4adf82140427b1265bc
-rw-r--r--src/com/android/loganalysis/parser/TracesParser.java2
-rw-r--r--tests/src/com/android/loganalysis/parser/TracesParserTest.java60
2 files changed, 61 insertions, 1 deletions
diff --git a/src/com/android/loganalysis/parser/TracesParser.java b/src/com/android/loganalysis/parser/TracesParser.java
index 4d0f581..46f2d6b 100644
--- a/src/com/android/loganalysis/parser/TracesParser.java
+++ b/src/com/android/loganalysis/parser/TracesParser.java
@@ -39,7 +39,7 @@ public class TracesParser implements IParser {
/**
* Matches: Cmd line: APP
*/
- private static final Pattern APP = Pattern.compile("^Cmd line: (\\S+)$");
+ private static final Pattern APP = Pattern.compile("^Cmd ?line: (\\S+).*$");
/**
* Matches: "main" prio=5 tid=1 STATE
diff --git a/tests/src/com/android/loganalysis/parser/TracesParserTest.java b/tests/src/com/android/loganalysis/parser/TracesParserTest.java
index b5636e0..c5046e3 100644
--- a/tests/src/com/android/loganalysis/parser/TracesParserTest.java
+++ b/tests/src/com/android/loganalysis/parser/TracesParserTest.java
@@ -104,4 +104,64 @@ public class TracesParserTest extends TestCase {
assertEquals("com.android.package", traces.getApp());
assertEquals(ArrayUtil.join("\n", expectedStack), traces.getStack());
}
+
+ /**
+ * Test that both forms of cmd line match for the trace.
+ */
+ public void testTracesParser_cmdline() {
+ List<String> expectedStack = Arrays.asList(
+ "\"main\" prio=5 tid=1 SUSPENDED",
+ " | group=\"main\" sCount=1 dsCount=0 obj=0x00000001 self=0x00000001",
+ " | sysTid=2887 nice=0 sched=0/0 cgrp=foreground handle=0000000001",
+ " | schedstat=( 0 0 0 ) utm=5954 stm=1017 core=0",
+ " at class.method1(Class.java:1)",
+ " at class.method2(Class.java:2)",
+ " at class.method2(Class.java:2)");
+
+ List<String> lines = Arrays.asList(
+ "",
+ "",
+ "----- pid 2887 at 2012-05-02 16:43:41 -----",
+ "Cmd line: com.android.package",
+ "",
+ "DALVIK THREADS:",
+ "(mutexes: tll=0 tsl=0 tscl=0 ghl=0)",
+ "",
+ "\"main\" prio=5 tid=1 SUSPENDED",
+ " | group=\"main\" sCount=1 dsCount=0 obj=0x00000001 self=0x00000001",
+ " | sysTid=2887 nice=0 sched=0/0 cgrp=foreground handle=0000000001",
+ " | schedstat=( 0 0 0 ) utm=5954 stm=1017 core=0",
+ " at class.method1(Class.java:1)",
+ " at class.method2(Class.java:2)",
+ " at class.method2(Class.java:2)",
+ "");
+
+ TracesItem traces = new TracesParser().parse(lines);
+ assertEquals(2887, traces.getPid().intValue());
+ assertEquals("com.android.package", traces.getApp());
+ assertEquals(ArrayUtil.join("\n", expectedStack), traces.getStack());
+
+ lines = Arrays.asList(
+ "",
+ "",
+ "----- pid 2887 at 2012-05-02 16:43:41 -----",
+ "Cmdline: com.android.package Original command line: <unset>",
+ "",
+ "DALVIK THREADS:",
+ "(mutexes: tll=0 tsl=0 tscl=0 ghl=0)",
+ "",
+ "\"main\" prio=5 tid=1 SUSPENDED",
+ " | group=\"main\" sCount=1 dsCount=0 obj=0x00000001 self=0x00000001",
+ " | sysTid=2887 nice=0 sched=0/0 cgrp=foreground handle=0000000001",
+ " | schedstat=( 0 0 0 ) utm=5954 stm=1017 core=0",
+ " at class.method1(Class.java:1)",
+ " at class.method2(Class.java:2)",
+ " at class.method2(Class.java:2)",
+ "");
+
+ traces = new TracesParser().parse(lines);
+ assertEquals(2887, traces.getPid().intValue());
+ assertEquals("com.android.package", traces.getApp());
+ assertEquals(ArrayUtil.join("\n", expectedStack), traces.getStack());
+ }
}