diff options
author | Netta Peterbursky <nettap@google.com> | 2017-05-23 10:23:11 -0700 |
---|---|---|
committer | Netta Peterbursky <nettap@google.com> | 2017-05-23 10:35:58 -0700 |
commit | 44e6c57bdf25abcf2b5b13cf958ed37eb55ae8a8 (patch) | |
tree | a0dbeb3d2adb56e4266a77111f868c40a8e823fa /src/com/android/loganalysis/parser | |
parent | da7b04cad4f3ef3deeca48ea44432fd01bcd6fb7 (diff) | |
download | loganalysis-44e6c57bdf25abcf2b5b13cf958ed37eb55ae8a8.tar.gz |
Add app versions to Bugreport parser (for event history view in stability dashboard).
Bug: 38415015
Test: BugreportParserTest, DumpsysPackageStatsParserTest, DumpsysParserTest
Change-Id: Id6e5ccbd39188be0b6908df751b310cd0f642593
Diffstat (limited to 'src/com/android/loganalysis/parser')
-rw-r--r-- | src/com/android/loganalysis/parser/DumpsysPackageStatsParser.java | 75 | ||||
-rw-r--r-- | src/com/android/loganalysis/parser/DumpsysParser.java | 5 |
2 files changed, 80 insertions, 0 deletions
diff --git a/src/com/android/loganalysis/parser/DumpsysPackageStatsParser.java b/src/com/android/loganalysis/parser/DumpsysPackageStatsParser.java new file mode 100644 index 0000000..d06cfd5 --- /dev/null +++ b/src/com/android/loganalysis/parser/DumpsysPackageStatsParser.java @@ -0,0 +1,75 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.loganalysis.parser; + +import com.android.loganalysis.item.AppVersionItem; +import com.android.loganalysis.item.DumpsysPackageStatsItem; + +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** A {@link IParser} to parse package stats and create a mapping table of packages and versions */ +public class DumpsysPackageStatsParser implements IParser { + + /** Matches: Package [com.google.android.googlequicksearchbox] (607929e): */ + private static final Pattern PACKAGE_NAME = Pattern.compile("^\\s*Package \\[(.*)\\].*"); + + /** Matches: versionCode=300734793 minSdk=10000 targetSdk=10000 */ + private static final Pattern VERSION_CODE = Pattern.compile("^\\s*versionCode=(\\d+).*"); + + /** Matches: versionName=6.16.35.26.arm64 */ + private static final Pattern VERSION_NAME = Pattern.compile("^\\s*versionName=(.*)$"); + + /** + * {@inheritDoc} + * + * @return The {@link DumpsysPackageStatsItem}. + */ + @Override + public DumpsysPackageStatsItem parse(List<String> lines) { + DumpsysPackageStatsItem item = new DumpsysPackageStatsItem(); + String packageName = null; + String versionCode = null; + String versionName = null; + + for (String line : lines) { + Matcher m = PACKAGE_NAME.matcher(line); + if (m.matches()) { + packageName = m.group(1); + versionCode = null; + versionName = null; + continue; + } + m = VERSION_CODE.matcher(line); + if (m.matches()) { + versionCode = m.group(1); + continue; + } + m = VERSION_NAME.matcher(line); + if (m.matches()) { + versionName = m.group(1).trim(); + if (packageName != null && versionCode != null) { + item.put( + packageName, + new AppVersionItem(Integer.parseInt(versionCode), versionName)); + } + packageName = null; + } + } + return item; + } +} diff --git a/src/com/android/loganalysis/parser/DumpsysParser.java b/src/com/android/loganalysis/parser/DumpsysParser.java index b74a86c..8c94e0b 100644 --- a/src/com/android/loganalysis/parser/DumpsysParser.java +++ b/src/com/android/loganalysis/parser/DumpsysParser.java @@ -18,6 +18,7 @@ package com.android.loganalysis.parser; import com.android.loganalysis.item.DumpsysBatteryStatsItem; import com.android.loganalysis.item.DumpsysItem; +import com.android.loganalysis.item.DumpsysPackageStatsItem; import com.android.loganalysis.item.DumpsysProcStatsItem; import com.android.loganalysis.item.DumpsysWifiStatsItem; @@ -29,11 +30,13 @@ import java.util.List; public class DumpsysParser extends AbstractSectionParser { private static final String BATTERY_STATS_SECTION_REGEX = "^DUMP OF SERVICE batterystats:$"; + private static final String PACKAGE_SECTION_REGEX = "^DUMP OF SERVICE package:"; private static final String PROC_STATS_SECTION_REGEX = "^DUMP OF SERVICE procstats:"; private static final String WIFI_SECTION_REGEX = "^DUMP OF SERVICE wifi:"; private static final String NOOP_SECTION_REGEX = "DUMP OF SERVICE .*"; private DumpsysBatteryStatsParser mBatteryStatsParser = new DumpsysBatteryStatsParser(); + private DumpsysPackageStatsParser mPackageStatsParser = new DumpsysPackageStatsParser(); private DumpsysProcStatsParser mProcStatsParser = new DumpsysProcStatsParser(); private DumpsysWifiStatsParser mWifiStatsParser = new DumpsysWifiStatsParser(); @@ -63,6 +66,7 @@ public class DumpsysParser extends AbstractSectionParser { */ protected void setup() { addSectionParser(mBatteryStatsParser, BATTERY_STATS_SECTION_REGEX); + addSectionParser(mPackageStatsParser, PACKAGE_SECTION_REGEX); addSectionParser(mProcStatsParser, PROC_STATS_SECTION_REGEX); addSectionParser(mWifiStatsParser, WIFI_SECTION_REGEX); addSectionParser(new NoopParser(), NOOP_SECTION_REGEX); @@ -80,6 +84,7 @@ public class DumpsysParser extends AbstractSectionParser { } if (mDumpsys != null) { mDumpsys.setBatteryInfo((DumpsysBatteryStatsItem) getSection(mBatteryStatsParser)); + mDumpsys.setPackageStats((DumpsysPackageStatsItem) getSection(mPackageStatsParser)); mDumpsys.setProcStats((DumpsysProcStatsItem) getSection(mProcStatsParser)); mDumpsys.setWifiStats((DumpsysWifiStatsItem) getSection(mWifiStatsParser)); } |