diff options
author | avellore <avellore@google.com> | 2015-06-25 16:46:28 -0700 |
---|---|---|
committer | avellore <avellore@google.com> | 2015-06-25 16:53:19 -0700 |
commit | 8fbbc70563619f83cec64358fb3f230cdcc168c0 (patch) | |
tree | bba226922733b30ea1a858ffb8b472e43ba63141 | |
parent | 69155df867ac697a430ab9a998400ef727cffa1b (diff) | |
download | loganalysis-8fbbc70563619f83cec64358fb3f230cdcc168c0.tar.gz |
Separate kernel and partial wakelock parsing
In some bugreports kernel wakelock section is missing. This prevents
parsing of partial wakelock as well. So this fix is to separate kernel
and partial wakelock parsing
Change-Id: I196dcd9438976cb5d3fcd3b0a81839903aebac15
4 files changed, 46 insertions, 31 deletions
diff --git a/src/com/android/loganalysis/parser/BatteryStatsDetailedInfoParser.java b/src/com/android/loganalysis/parser/BatteryStatsDetailedInfoParser.java index b800371..85188a4 100644 --- a/src/com/android/loganalysis/parser/BatteryStatsDetailedInfoParser.java +++ b/src/com/android/loganalysis/parser/BatteryStatsDetailedInfoParser.java @@ -34,7 +34,8 @@ import java.util.regex.Pattern; public class BatteryStatsDetailedInfoParser extends AbstractSectionParser { private static final String BATTERY_USAGE_SECTION_REGEX = "^\\s*Estimated power use \\(mAh\\):$"; - private static final String WAKELOCK_SECTION_REGEX = "^\\s*All kernel wake locks:$"; + private static final String KERNEL_WAKELOCK_SECTION_REGEX = "^\\s*All kernel wake locks:$"; + private static final String PARTIAL_WAKELOCK_SECTION_REGEX = "^\\s*All partial wake locks:$"; private static final String INTERRUPT_SECTION_REGEX = "^\\s*All wakeup reasons:$"; private static final String PROCESS_USAGE_SECTION_REGEX = "^\\s*0:$"; @@ -127,7 +128,8 @@ public class BatteryStatsDetailedInfoParser extends AbstractSectionParser { protected void setup() { setParser(mBatteryTimeParser); addSectionParser(mBatteryUsageParser, BATTERY_USAGE_SECTION_REGEX); - addSectionParser(mWakelockParser, WAKELOCK_SECTION_REGEX); + addSectionParser(mWakelockParser, KERNEL_WAKELOCK_SECTION_REGEX); + addSectionParser(mWakelockParser, PARTIAL_WAKELOCK_SECTION_REGEX); addSectionParser(mInterruptParser, INTERRUPT_SECTION_REGEX); addSectionParser(mProcessUsageParser, PROCESS_USAGE_SECTION_REGEX); } diff --git a/src/com/android/loganalysis/parser/WakelockParser.java b/src/com/android/loganalysis/parser/WakelockParser.java index 91652f7..a7db455 100644 --- a/src/com/android/loganalysis/parser/WakelockParser.java +++ b/src/com/android/loganalysis/parser/WakelockParser.java @@ -28,9 +28,6 @@ import java.util.regex.Pattern; */ public class WakelockParser implements IParser { - private static final Pattern PARTIAL_WAKE_LOCK_START_PAT = Pattern.compile( - "^\\s*All partial wake locks:$"); - 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"; @@ -57,21 +54,14 @@ public class WakelockParser implements IParser { */ @Override public WakelockItem parse(List<String> lines) { - boolean inPartialWakeLock = false; Matcher m = null; int wakelockCounter = 0; for (String line : lines) { if ("".equals(line.trim())) { - if (inPartialWakeLock) { - // Done with parsing wakelock sections - break; - } else { - // Done with parsing kernel wakelocks and continue with - // partial wakelock - wakelockCounter = 0; - continue; - } + // Done with wakelock parsing + break; } + m = KERNEL_WAKE_LOCK_PAT.matcher(line); if (m.matches()) { if (wakelockCounter < TOP_WAKELOCK_COUNT && @@ -81,11 +71,6 @@ public class WakelockParser implements IParser { } continue; } - m = PARTIAL_WAKE_LOCK_START_PAT.matcher(line); - if (m.matches()) { - inPartialWakeLock = true; - continue; - } m = PARTIAL_WAKE_LOCK_PAT.matcher(line); if (m.matches() && wakelockCounter < TOP_WAKELOCK_COUNT) { parsePartialWakeLock(line, WakeLockCategory.PARTIAL_WAKELOCK); diff --git a/tests/src/com/android/loganalysis/parser/BugreportParserTest.java b/tests/src/com/android/loganalysis/parser/BugreportParserTest.java index ea7537f..b36e834 100644 --- a/tests/src/com/android/loganalysis/parser/BugreportParserTest.java +++ b/tests/src/com/android/loganalysis/parser/BugreportParserTest.java @@ -124,7 +124,7 @@ public class BugreportParserTest extends TestCase { " +45s702ms (2) 001 80080000 volt=4187", " +1m15s525ms (2) 001 80080000 temp=299 volt=4155", "Statistics since last charged:", - " Time on battery: 1h 5m 2s 4ms (9%) realtime, 1h 5m 2s 4ms (9%) uptime", + " Time on battery: 1h 5m 2s 4ms (9%) realtime, 1h 5m 2s 4ms (9%) uptime", " Time on battery screen off: 1h 4m 5s 8ms (9%) realtime, 1h 4m 5s 8ms (9%) uptime", " All kernel wake locks:", " Kernel Wake lock PowerManagerService.WakeLocks: 5m 10s 6ms (2 times) realtime", @@ -133,8 +133,9 @@ public class BugreportParserTest extends TestCase { " All partial wake locks:", " Wake lock 1001 ProxyController: 1h 4m 47s 565ms (4 times) realtime", " Wake lock 1013 AudioMix: 1s 979ms (3 times) realtime", + "", " All wakeup reasons:", - " Wakeup reason 2:bcmsdh_sdmmc:2:qcom,smd:2:msmgio: 1m 5s 4ms (2 times) realtime", + " Wakeup reason 2:bcmsdh_sdmmc:2:qcom,smd:2:msmgio: 1m 5s 4ms (2 times) realtime", " Wakeup reason 2:qcom,smd-rpm:2:fc4c.qcom,spmi: 7m 1s 914ms (7 times) realtime", ""); diff --git a/tests/src/com/android/loganalysis/parser/WakelockParserTest.java b/tests/src/com/android/loganalysis/parser/WakelockParserTest.java index bed831b..735362f 100644 --- a/tests/src/com/android/loganalysis/parser/WakelockParserTest.java +++ b/tests/src/com/android/loganalysis/parser/WakelockParserTest.java @@ -31,7 +31,7 @@ public class WakelockParserTest extends TestCase { /** * Test that normal input is parsed. */ - public void testWakelockParser() { + public void testKernelWakelockParser() { List<String> inputBlock = Arrays.asList( " All kernel wake locks:", " Kernel Wake lock PowerManagerService.WakeLocks: 1h 3m 50s 5ms (8 times) realtime", @@ -40,14 +40,8 @@ public class WakelockParserTest extends TestCase { " Kernel Wake lock wlan_rx_wake: 3m 19s 887ms (225 times) realtime", " Kernel Wake lock wlan_tx_wake: 2m 19s 887ms (225 times) realtime", " Kernel Wake lock tx_wake: 1m 19s 887ms (225 times) realtime", - " ", - " All partial wake locks:", - " Wake lock u0a7 NlpWakeLock: 8m 13s 203ms (1479 times) realtime", - " Wake lock u0a7 NlpCollectorWakeLock: 6m 29s 18ms (238 times) realtime", - " Wake lock u0a7 GCM_CONN_ALARM: 6m 8s 587ms (239 times) realtime", - " Wake lock 1000 *alarm*: 5m 11s 316ms (1469 times) realtime", - " Wake lock u10 xxx: 4m 11s 316ms (1469 times) realtime", - " Wake lock u30 cst: 2m 11s 316ms (1469 times) realtime"); + " " + ); WakelockItem wakelock = new WakelockParser().parse(inputBlock); @@ -59,6 +53,20 @@ public class WakelockParserTest extends TestCase { get(0).getHeldTime()); assertEquals(2399, wakelock.getWakeLocks(WakeLockCategory.KERNEL_WAKELOCK). get(0).getLockedCount()); + } + + public void testPartialWakelockParser() { + List<String> inputBlock = Arrays.asList( + " All partial wake locks:", + " Wake lock u0a7 NlpWakeLock: 8m 13s 203ms (1479 times) realtime", + " Wake lock u0a7 NlpCollectorWakeLock: 6m 29s 18ms (238 times) realtime", + " Wake lock u0a7 GCM_CONN_ALARM: 6m 8s 587ms (239 times) realtime", + " Wake lock 1000 *alarm*: 5m 11s 316ms (1469 times) realtime", + " Wake lock u10 xxx: 4m 11s 316ms (1469 times) realtime", + " Wake lock u30 cst: 2m 11s 316ms (1469 times) realtime", + ""); + + WakelockItem wakelock = new WakelockParser().parse(inputBlock); assertEquals(WakelockParser.TOP_WAKELOCK_COUNT, wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK).size()); @@ -71,5 +79,24 @@ public class WakelockParserTest extends TestCase { assertEquals(1479, wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK). get(0).getLockedCount()); } + + public void testInvalidInputWakelockParser() { + List<String> inputBlock = Arrays.asList( + " lock PowerManagerService.WakeLocks: 1h 3m 50s 5ms (8 times) realtime", + " lock event0-2656 : 3m 49s 268ms (2399 times) realtime", + " lock wlan_wd_wake: 3m 34s 639ms (1751 times) realtime", + " lock wlan_rx_wake: 3m 19s 887ms (225 times) realtime", + " wlan_tx_wake: 2m 19s 887ms (225 times) realtime", + " tx_wake: 1m 19s 887ms (225 times) realtime", + " " + ); + + WakelockItem wakelock = new WakelockParser().parse(inputBlock); + + assertEquals(0, + wakelock.getWakeLocks(WakeLockCategory.KERNEL_WAKELOCK).size()); + assertEquals(0, + wakelock.getWakeLocks(WakeLockCategory.PARTIAL_WAKELOCK).size()); + } } |