summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-02-10 05:31:43 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-02-10 05:31:43 +0000
commit88cb603b64391d87365b8ae81acc87b2e0b534ee (patch)
treeb4b31b522dc65628f02c9bb21f346636c86f3a9b
parente378d6406ddd5492776edb901dbf9ef39c8a217d (diff)
parentaf714d084f6475b735891b6625c5a6664900ba1c (diff)
downloadloganalysis-android14-d1-s4-release.tar.gz
Change-Id: I8dd9c38375fb2d52af10d395a9299b1111a5b2cc
-rw-r--r--Android.bp2
-rw-r--r--javatests/com/android/loganalysis/parser/DmesgParserTest.java25
-rw-r--r--src/com/android/loganalysis/parser/DmesgParser.java16
3 files changed, 39 insertions, 4 deletions
diff --git a/Android.bp b/Android.bp
index 0e77526..6791bf4 100644
--- a/Android.bp
+++ b/Android.bp
@@ -26,4 +26,6 @@ tradefed_java_library_host {
"guava",
"json-prebuilt",
],
+ // b/267831518: Pin tradefed and dependencies to Java 11.
+ java_version: "11",
}
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 "