From 3a879098fe36a747ba884c02f6f3daf4eac9059f Mon Sep 17 00:00:00 2001 From: Netta Peterbursky Date: Tue, 1 Aug 2017 15:46:06 -0700 Subject: Fix LogAnalysis App Versions dump. (cherry-picked from unsubmitted change in oc-dev ag/2549006 and updated) Test: DumpsysPackageStatsItemTest, manual: java -classpath out/host/linux-x86/tradefed/loganalysis.jar com.android.loganalysis.LogAnalyzer --bugreport bugreport.txt Bug: b/38415015 Change-Id: I6bce38a18441712d2f182a0d3c60b7851f87470e --- .../loganalysis/item/DumpsysPackageStatsItem.java | 8 +++- .../item/DumpsysPackageStatsItemTest.java | 52 ++++++++++++++++++++++ .../parser/DumpsysPackageStatsParserTest.java | 2 +- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java diff --git a/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java index 14c4073..b10f055 100644 --- a/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java +++ b/src/com/android/loganalysis/item/DumpsysPackageStatsItem.java @@ -19,6 +19,8 @@ package com.android.loganalysis.item; import org.json.JSONException; import org.json.JSONObject; +import java.util.Map; + /** An {@link IItem} used to store apps and their version codes and names. */ public class DumpsysPackageStatsItem extends GenericMapItem { private static final long serialVersionUID = 1L; @@ -31,7 +33,11 @@ public class DumpsysPackageStatsItem extends GenericMapItem { public JSONObject toJson() { JSONObject object = new JSONObject(); try { - object.put(APP_VERSIONS, super.toJson()); + JSONObject appVersions = new JSONObject(); + for (Map.Entry entry : entrySet()) { + appVersions.put(entry.getKey(), entry.getValue().toJson()); + } + object.put(APP_VERSIONS, appVersions); } catch (JSONException e) { // Ignore } diff --git a/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java b/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java new file mode 100644 index 0000000..dd60500 --- /dev/null +++ b/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java @@ -0,0 +1,52 @@ +/* + * 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.item; + +import junit.framework.TestCase; + +import org.json.JSONException; +import org.json.JSONObject; + +/** Unit test for {@link DumpsysPackageStatsItem}. */ +public class DumpsysPackageStatsItemTest extends TestCase { + + /** Test that {@link DumpsysPackageStatsItem#toJson()} returns correctly. */ + public void testToJson() throws JSONException { + DumpsysPackageStatsItem item = new DumpsysPackageStatsItem(); + + item.put("com.google.android.calculator", new AppVersionItem(73000302, "7.3 (3821978)")); + item.put( + "com.google.android.googlequicksearchbox", + new AppVersionItem(300734793, "6.16.35.26.arm64")); + + // Convert to JSON string and back again + JSONObject output = new JSONObject(item.toJson().toString()); + + assertTrue(output.has(DumpsysPackageStatsItem.APP_VERSIONS)); + + JSONObject appVersionsJson = output.getJSONObject(DumpsysPackageStatsItem.APP_VERSIONS); + + assertEquals(2, appVersionsJson.length()); + final JSONObject calcAppVersionJson = + appVersionsJson.getJSONObject("com.google.android.calculator"); + assertEquals(73000302, calcAppVersionJson.getInt(AppVersionItem.VERSION_CODE)); + assertEquals("7.3 (3821978)", calcAppVersionJson.getString(AppVersionItem.VERSION_NAME)); + final JSONObject gsaAppVersionJson = + appVersionsJson.getJSONObject("com.google.android.googlequicksearchbox"); + assertEquals(300734793, gsaAppVersionJson.getInt(AppVersionItem.VERSION_CODE)); + assertEquals("6.16.35.26.arm64", gsaAppVersionJson.getString(AppVersionItem.VERSION_NAME)); + } +} diff --git a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java index faa51b2..ee15b78 100644 --- a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java +++ b/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java @@ -15,8 +15,8 @@ */ package com.android.loganalysis.parser; -import com.android.loganalysis.item.DumpsysPackageStatsItem; import com.android.loganalysis.item.AppVersionItem; +import com.android.loganalysis.item.DumpsysPackageStatsItem; import junit.framework.TestCase; -- cgit v1.2.3