From d8928ba2a3cbf893332451066d02b19a91f6a585 Mon Sep 17 00:00:00 2001 From: Hector Tellez <htellez@google.com> Date: Tue, 20 Sep 2016 17:59:55 -0700 Subject: [PATCH] Updates bugreport parser to handle newest version of bugreports. fixes: 31397868 Change-Id: Ie5b73d3916f15893ef372d26dd4b47239f5c1fcc --- .../loganalysis/parser/WakelockParser.java | 17 ++++++------- .../parser/WakelockParserTest.java | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/com/android/loganalysis/parser/WakelockParser.java b/src/com/android/loganalysis/parser/WakelockParser.java index a7db455..a6a36d5 100644 --- a/src/com/android/loganalysis/parser/WakelockParser.java +++ b/src/com/android/loganalysis/parser/WakelockParser.java @@ -30,7 +30,7 @@ public class WakelockParser implements IParser { private static final String WAKE_LOCK_PAT_SUFFIX = "(?:(\\d+)d)?\\s?(?:(\\d+)h)?\\s?(?:(\\d+)m)?\\s?(?:(\\d+)s)?\\s?(?:(\\d+)ms)?" - + "\\s?\\((\\d+) times\\) realtime"; + + "\\s?\\((\\d+) times\\)(?: max=\\d+)? realtime"; /** * Match a valid line such as: @@ -57,26 +57,25 @@ public class WakelockParser implements IParser { Matcher m = null; int wakelockCounter = 0; for (String line : lines) { - if ("".equals(line.trim())) { + if (wakelockCounter >= TOP_WAKELOCK_COUNT || "".equals(line.trim())) { // Done with wakelock parsing break; } m = KERNEL_WAKE_LOCK_PAT.matcher(line); - if (m.matches()) { - if (wakelockCounter < TOP_WAKELOCK_COUNT && - !line.contains("PowerManagerService.WakeLocks")) { - parseKernelWakeLock(line, WakeLockCategory.KERNEL_WAKELOCK); - wakelockCounter++; - } + if (m.matches() && !line.contains("PowerManagerService.WakeLocks")) { + parseKernelWakeLock(line, WakeLockCategory.KERNEL_WAKELOCK); + wakelockCounter++; continue; } + m = PARTIAL_WAKE_LOCK_PAT.matcher(line); - if (m.matches() && wakelockCounter < TOP_WAKELOCK_COUNT) { + if (m.matches()) { parsePartialWakeLock(line, WakeLockCategory.PARTIAL_WAKELOCK); wakelockCounter++; } } + return mItem; } diff --git a/tests/src/com/android/loganalysis/parser/WakelockParserTest.java b/tests/src/com/android/loganalysis/parser/WakelockParserTest.java index 735362f..eff4ec8 100644 --- a/tests/src/com/android/loganalysis/parser/WakelockParserTest.java +++ b/tests/src/com/android/loganalysis/parser/WakelockParserTest.java @@ -56,6 +56,31 @@ public class WakelockParserTest extends TestCase { } public void testPartialWakelockParser() { + List<String> inputBlock = Arrays.asList( + " All partial wake locks:", + " Wake lock u0a7 NlpWakeLock: 8m 13s 203ms (1479 times) max=0 realtime", + " Wake lock u0a7 NlpCollectorWakeLock: 6m 29s 18ms (238 times) max=0 realtime", + " Wake lock u0a7 GCM_CONN_ALARM: 6m 8s 587ms (239 times) max=0 realtime", + " Wake lock 1000 *alarm*: 5m 11s 316ms (1469 times) max=0 realtime", + " Wake lock u10 xxx: 4m 11s 316ms (1469 times) max=0 realtime", + " Wake lock u30 cst: 2m 11s 316ms (1469 times) max=0 realtime", + ""); + + WakelockItem wakelock = new WakelockParser().parse(inputBlock); + + assertEquals(WakelockParser.TOP_WAKELOCK_COUNT, + wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK).size()); + assertEquals("NlpWakeLock", wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK). + get(0).getName()); + assertEquals("u0a7", wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK). + get(0).getProcessUID()); + assertEquals(493203, wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK). + get(0).getHeldTime()); + assertEquals(1479, wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK). + get(0).getLockedCount()); + } + + public void testPartialWakelockParserOnOldFormat() { List<String> inputBlock = Arrays.asList( " All partial wake locks:", " Wake lock u0a7 NlpWakeLock: 8m 13s 203ms (1479 times) realtime", -- GitLab