diff options
author | Gopinath Elanchezhian <gelanchezhian@google.com> | 2019-02-19 22:24:30 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-02-19 22:24:30 -0800 |
commit | f9c5cc4fa3f296e42f2b15f6f8f48a7658f56ce0 (patch) | |
tree | 2eaec95c1eeacb580684b882ed0a3dff03949b4c | |
parent | bb2eacf38ac5eec344c192c25e3e463a348dc58f (diff) | |
parent | 81fb4f23b304f72420d890c7520a461c38856129 (diff) | |
download | loganalysis-f9c5cc4fa3f296e42f2b15f6f8f48a7658f56ce0.tar.gz |
Merge "Parse "Wait for property" duration from dmesg." am: 5775f059d0 am: 6483d06252
am: 81fb4f23b3
Change-Id: I38735db2d15a520d0f989ec3f15787ba6e4d2f16
-rw-r--r-- | src/com/android/loganalysis/parser/DmesgParser.java | 17 | ||||
-rw-r--r-- | tests/src/com/android/loganalysis/parser/DmesgParserTest.java | 8 |
2 files changed, 22 insertions, 3 deletions
diff --git a/src/com/android/loganalysis/parser/DmesgParser.java b/src/com/android/loganalysis/parser/DmesgParser.java index 63026d4..be292ff 100644 --- a/src/com/android/loganalysis/parser/DmesgParser.java +++ b/src/com/android/loganalysis/parser/DmesgParser.java @@ -42,6 +42,7 @@ public class DmesgParser implements IParser { private static final String ACTION = "ACTION"; private static final String DURATION = "DURATION"; private static final String UEVENTD = "ueventd"; + private static final String INIT = "init"; // Matches: [ 14.822691] init: private static final String SERVICE_PREFIX = String.format("^\\[\\s+(?<%s>.*)\\] init:\\s+", @@ -94,6 +95,11 @@ public class DmesgParser implements IParser { private static final Pattern UEVENTD_STAGE_INFO = Pattern.compile( String.format("%s%s", UEVENTD_PREFIX, STAGE_SUFFIX)); + private static final String PROPERTY_SUFFIX= String.format( + "(?<%s>.*)\\s+took\\s+(?<%s>.*)ms$", STAGE, DURATION); + // Matches [ 7.270487] init: Wait for property 'apexd.status=ready' took 230ms + private static final Pattern WAIT_FOR_PROPERTY_INFO = Pattern.compile( + String.format("%s%s", SERVICE_PREFIX, PROPERTY_SUFFIX)); private DmesgItem mDmesgItem = new DmesgItem(); @@ -142,6 +148,7 @@ public class DmesgParser implements IParser { * @param line individual line of the dmesg log */ private void parse(String line) { + if (parseServiceInfo(line)) { return; } @@ -210,7 +217,17 @@ public class DmesgParser implements IParser { stageInfoItem.setDuration((long) (Double.parseDouble( match.group(DURATION)) * 1000)); mDmesgItem.addStageInfoItem(stageInfoItem); + return true; + } + if((match = matches(WAIT_FOR_PROPERTY_INFO, line)) != null) { + DmesgStageInfoItem stageInfoItem = new DmesgStageInfoItem(); + stageInfoItem.setStageName(String.format("%s_%s", INIT, match.group(STAGE))); + stageInfoItem.setDuration((long) (Double.parseDouble( + match.group(DURATION)))); + mDmesgItem.addStageInfoItem(stageInfoItem); + return true; } + return false; } diff --git a/tests/src/com/android/loganalysis/parser/DmesgParserTest.java b/tests/src/com/android/loganalysis/parser/DmesgParserTest.java index 20665ea..7cdbd36 100644 --- a/tests/src/com/android/loganalysis/parser/DmesgParserTest.java +++ b/tests/src/com/android/loganalysis/parser/DmesgParserTest.java @@ -40,6 +40,7 @@ public class DmesgParserTest extends TestCase { private static final String NETD = "netd"; private static final String[] LINES = new String[] { + "[ 2.471163] init: Wait for property 'apexd.status=ready' took 403ms", "[ 3.786943] ueventd: Coldboot took 0.701291 seconds", "[ 22.962730] init: starting service 'bootanim'...", "[ 23.252321] init: starting service 'netd'...", @@ -96,7 +97,7 @@ public class DmesgParserTest extends TestCase { assertEquals("Service info items list size should be 2", 2, dmesgParser.getServiceInfoItems().size()); - assertEquals("Stage info items list size should be 2",2, + assertEquals("Stage info items list size should be 3",3, dmesgParser.getStageInfoItems().size()); assertEquals("Action info items list size should be 9",9, dmesgParser.getActionInfoItems().size()); @@ -116,7 +117,7 @@ public class DmesgParserTest extends TestCase { dmesgParser.parseInfo(bufferedReader); assertEquals("Service info items list size should be 2", 2, dmesgParser.getServiceInfoItems().size()); - assertEquals("Stage info items list size should be 2", 2, + assertEquals("Stage info items list size should be 3", 3, dmesgParser.getStageInfoItems().size()); assertEquals("Action info items list size should be 9",9, dmesgParser.getActionInfoItems().size()); @@ -197,7 +198,7 @@ public class DmesgParserTest extends TestCase { dmesgParser.parseStageInfo(line); } List<DmesgStageInfoItem> stageInfoItems = dmesgParser.getStageInfoItems(); - assertEquals(2, stageInfoItems.size()); + assertEquals(3, stageInfoItems.size()); assertEquals(EXPECTED_STAGE_INFO_ITEMS, stageInfoItems); } @@ -234,6 +235,7 @@ public class DmesgParserTest extends TestCase { private static List<DmesgStageInfoItem> getExpectedStageInfoItems() { return Arrays.asList( + new DmesgStageInfoItem("init_Wait for property 'apexd.status=ready'", null, 403L), new DmesgStageInfoItem("ueventd_Coldboot", null, 701L), new DmesgStageInfoItem("first", 41665L, null)); } |