diff options
author | Nikolas Havrikov <havrikov@google.com> | 2023-02-09 12:17:32 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-02-09 12:17:32 +0000 |
commit | 1ed1e0c89b5956db27834f9339bd9149a53034d0 (patch) | |
tree | b4b31b522dc65628f02c9bb21f346636c86f3a9b | |
parent | 2563f18213b5398a6e7e431948490717b89e0e78 (diff) | |
parent | db4b875c4447f9251622f9294017f2f77d2f0cdb (diff) | |
download | loganalysis-android-14.0.0_r26.tar.gz |
Make DmesgParser support Kernel 5.15 format am: 36b917de5d am: b7635edede am: db4b875c44android-vts-14.0_r4android-vts-14.0_r3android-vts-14.0_r2android-cts-14.0_r4android-cts-14.0_r3android-cts-14.0_r2android-14.0.0_r45android-14.0.0_r44android-14.0.0_r43android-14.0.0_r42android-14.0.0_r41android-14.0.0_r40android-14.0.0_r39android-14.0.0_r38android-14.0.0_r27android-14.0.0_r26android-14.0.0_r25android-14.0.0_r24android-14.0.0_r23android-14.0.0_r22android-14.0.0_r21android-14.0.0_r20android-14.0.0_r19android-14.0.0_r18android-14.0.0_r17android-14.0.0_r16aml_hef_341613000aml_hef_341512030aml_hef_341415040aml_hef_341311010aml_hef_341114030aml_cfg_341510000android14-tests-releaseandroid14-tests-devandroid14-qpr1-s2-releaseandroid14-qpr1-releaseandroid14-mainline-healthfitness-releaseandroid14-devandroid14-d2-s5-releaseandroid14-d2-s4-releaseandroid14-d2-s3-releaseandroid14-d2-s2-releaseandroid14-d2-s1-releaseandroid14-d2-release
Original change: https://android-review.googlesource.com/c/platform/tools/loganalysis/+/2425005
Change-Id: I0aa341c4b09c70d7d94b3eedfe1a86236a00935c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | javatests/com/android/loganalysis/parser/DmesgParserTest.java | 25 | ||||
-rw-r--r-- | src/com/android/loganalysis/parser/DmesgParser.java | 16 |
2 files changed, 37 insertions, 4 deletions
diff --git a/javatests/com/android/loganalysis/parser/DmesgParserTest.java b/javatests/com/android/loganalysis/parser/DmesgParserTest.java index cc79db7..a7705e3 100644 --- a/javatests/com/android/loganalysis/parser/DmesgParserTest.java +++ b/javatests/com/android/loganalysis/parser/DmesgParserTest.java @@ -220,6 +220,31 @@ public class DmesgParserTest extends TestCase { assertEquals("No service info should be available", 0, serviceInfoItems.size()); } + public void testCompleteStageInfo_onKernel_5_15() { + DmesgParser dmesgParser = new DmesgParser(); + String[] lines = + new String[] { + "[ 0.370107] [@2 init][....] init: Loading module /lib/modules/foo.ko " + + "with args ''", + "[ 0.372497] [@2 init][....] init: Loaded kernel module /lib/modules/foo.ko", + "[ 0.372500] [@2 init][....] init: Loading module /lib/modules/bar.ko " + + "with args ''", + "[ 1.115467] [@2 init][....] init: Loaded 198 kernel modules took 748 ms", + "[ 2.471163] [@2 init][....] init: Wait for property 'apexd.status=ready' " + + "took 403ms", + "[ 3.786943] [@2 init][....] ueventd: Coldboot took 0.701291 seconds", + "[ 4.295667] [@2 init][....] init: Command 'mount_all --late' action=late-fs" + + " /vendor/etc/init/hw/init.rc:347) took 250ms and succeeded", + "[ 41.665818] [@2 init][....] init: init first stage started!" + }; + for (String line : lines) { + dmesgParser.parseStageInfo(line); + } + List<DmesgStageInfoItem> stageInfoItems = dmesgParser.getStageInfoItems(); + assertEquals(4, stageInfoItems.size()); + assertEquals(EXPECTED_STAGE_INFO_ITEMS, stageInfoItems); + } + /** * Test init stages' start time logs */ diff --git a/src/com/android/loganalysis/parser/DmesgParser.java b/src/com/android/loganalysis/parser/DmesgParser.java index f7aac4d..1b83ca4 100644 --- a/src/com/android/loganalysis/parser/DmesgParser.java +++ b/src/com/android/loganalysis/parser/DmesgParser.java @@ -49,12 +49,20 @@ public class DmesgParser implements IParser { private static final String TOTAL_MODULE = "TOTAL_MODULE"; private static final String MOUNT_ALL = "mount_all"; + private static final String TIMESTAMP_PATTERN = + String.format("\\[\\s+(?<%s>[\\d.]+)]", TIMESTAMP); + + // This is optionally present in dmesg output on some kernels + // Matches possibly repeated pairs of square brackets enclosing arbitrary text + // An example is [ 10.258464] [@3 insmod][....] aml dvb init + private static final String CPU_INFO_PATTERN = "(\\[[^]]+])+"; + // Matches: [ 14.822691] init: - private static final String SERVICE_PREFIX = String.format("^\\[\\s+(?<%s>.*)\\] init:\\s+", - TIMESTAMP); + private static final String SERVICE_PREFIX = + String.format("^%s( %s)? init:\\s+", TIMESTAMP_PATTERN, CPU_INFO_PATTERN); // Matches: [ 3.791635] ueventd: - private static final String UEVENTD_PREFIX = String.format("^\\[\\s+(?<%s>.*)\\] ueventd:\\s+", - TIMESTAMP); + private static final String UEVENTD_PREFIX = + String.format("^%s( %s)? ueventd:\\s+", TIMESTAMP_PATTERN, CPU_INFO_PATTERN); // Matches: starting service 'ueventd'... private static final String START_SERVICE_SUFFIX = String.format("starting service " |