summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp6
-rw-r--r--Android.mk29
-rw-r--r--javatests/.classpath (renamed from tests/.classpath)0
-rw-r--r--javatests/.project (renamed from tests/.project)0
-rw-r--r--javatests/Android.bp (renamed from tests/Android.bp)12
-rw-r--r--javatests/com/android/loganalysis/item/BatteryDischargeItemTest.java (renamed from tests/src/com/android/loganalysis/item/BatteryDischargeItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/BatteryUsageItemTest.java (renamed from tests/src/com/android/loganalysis/item/BatteryUsageItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java (renamed from tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/DvmLockSampleItemTest.java (renamed from tests/src/com/android/loganalysis/item/DvmLockSampleItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/GenericItemTest.java (renamed from tests/src/com/android/loganalysis/item/GenericItemTest.java)48
-rw-r--r--javatests/com/android/loganalysis/item/InterruptItemTest.java (renamed from tests/src/com/android/loganalysis/item/InterruptItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/LocationDumpsItemTest.java (renamed from tests/src/com/android/loganalysis/item/LocationDumpsItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/MemInfoItemTest.java (renamed from tests/src/com/android/loganalysis/item/MemInfoItemTest.java)4
-rw-r--r--javatests/com/android/loganalysis/item/MonkeyLogItemTest.java (renamed from tests/src/com/android/loganalysis/item/MonkeyLogItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/ProcrankItemTest.java (renamed from tests/src/com/android/loganalysis/item/ProcrankItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/SmartMonkeyLogItemTest.java (renamed from tests/src/com/android/loganalysis/item/SmartMonkeyLogItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/SystemPropsItemTest.java (renamed from tests/src/com/android/loganalysis/item/SystemPropsItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/TopItemTest.java (renamed from tests/src/com/android/loganalysis/item/TopItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/item/WakelockItemTest.java (renamed from tests/src/com/android/loganalysis/item/WakelockItemTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/AbstractSectionParserTest.java (renamed from tests/src/com/android/loganalysis/parser/AbstractSectionParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/ActivityServiceParserTest.java (renamed from tests/src/com/android/loganalysis/parser/ActivityServiceParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/AnrParserTest.java (renamed from tests/src/com/android/loganalysis/parser/AnrParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/BatteryDischargeStatsInfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/BatteryDischargeStatsInfoParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/BatteryStatsDetailedInfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/BatteryStatsDetailedInfoParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/BatteryStatsSummaryInfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/BatteryStatsSummaryInfoParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/BatteryUsageParserTest.java (renamed from tests/src/com/android/loganalysis/parser/BatteryUsageParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/BugreportParserTest.java (renamed from tests/src/com/android/loganalysis/parser/BugreportParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/CompactMemInfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/CompactMemInfoParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/CpuInfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/CpuInfoParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/DmesgParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DmesgParserTest.java)76
-rw-r--r--javatests/com/android/loganalysis/parser/DumpsysBatteryStatsParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DumpsysBatteryStatsParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/DumpsysParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DumpsysParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/DumpsysProcStatsParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DumpsysProcStatsParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/DumpsysProcessMeminfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DumpsysProcessMeminfoParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/DumpsysWifiStatsParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DumpsysWifiStatsParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/DvmLockSampleParserTest.java (renamed from tests/src/com/android/loganalysis/parser/DvmLockSampleParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/EventsLogParserTest.java (renamed from tests/src/com/android/loganalysis/parser/EventsLogParserTest.java)164
-rw-r--r--javatests/com/android/loganalysis/parser/GfxInfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/GfxInfoParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/InterruptParserTest.java (renamed from tests/src/com/android/loganalysis/parser/InterruptParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/JavaCrashParserTest.java (renamed from tests/src/com/android/loganalysis/parser/JavaCrashParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/KernelLogParserTest.java (renamed from tests/src/com/android/loganalysis/parser/KernelLogParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/LocationServiceParserTest.java (renamed from tests/src/com/android/loganalysis/parser/LocationServiceParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/LogcatParserTest.java (renamed from tests/src/com/android/loganalysis/parser/LogcatParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/MemHealthParserTest.java (renamed from tests/src/com/android/loganalysis/parser/MemHealthParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/MemInfoParserTest.java (renamed from tests/src/com/android/loganalysis/parser/MemInfoParserTest.java)12
-rw-r--r--javatests/com/android/loganalysis/parser/MonkeyLogParserTest.java (renamed from tests/src/com/android/loganalysis/parser/MonkeyLogParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/NativeCrashParserTest.java (renamed from tests/src/com/android/loganalysis/parser/NativeCrashParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/ProcessUsageParserTest.java (renamed from tests/src/com/android/loganalysis/parser/ProcessUsageParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/ProcrankParserTest.java (renamed from tests/src/com/android/loganalysis/parser/ProcrankParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/QtaguidParserTest.java (renamed from tests/src/com/android/loganalysis/parser/QtaguidParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/SmartMonkeyLogParserTest.java (renamed from tests/src/com/android/loganalysis/parser/SmartMonkeyLogParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/SystemPropsParserTest.java (renamed from tests/src/com/android/loganalysis/parser/SystemPropsParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/TimingsLogParserTest.java (renamed from tests/src/com/android/loganalysis/parser/TimingsLogParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/TopParserTest.java (renamed from tests/src/com/android/loganalysis/parser/TopParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/TraceFormatParserTest.java (renamed from tests/src/com/android/loganalysis/parser/TraceFormatParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/TracesParserTest.java (renamed from tests/src/com/android/loganalysis/parser/TracesParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/parser/WakelockParserTest.java (renamed from tests/src/com/android/loganalysis/parser/WakelockParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/rule/InterruptRuleTest.java (renamed from tests/src/com/android/loganalysis/rule/InterruptRuleTest.java)0
-rw-r--r--javatests/com/android/loganalysis/rule/LocationUsageRuleTest.java (renamed from tests/src/com/android/loganalysis/rule/LocationUsageRuleTest.java)0
-rw-r--r--javatests/com/android/loganalysis/rule/ProcessUsageRuleTest.java (renamed from tests/src/com/android/loganalysis/rule/ProcessUsageRuleTest.java)0
-rw-r--r--javatests/com/android/loganalysis/rule/WakelockRuleTest.java (renamed from tests/src/com/android/loganalysis/rule/WakelockRuleTest.java)0
-rw-r--r--javatests/com/android/loganalysis/rule/WifiStatsRuleTest.java (renamed from tests/src/com/android/loganalysis/rule/WifiStatsRuleTest.java)0
-rw-r--r--javatests/com/android/loganalysis/util/ArrayUtilTest.java (renamed from tests/src/com/android/loganalysis/util/ArrayUtilTest.java)0
-rw-r--r--javatests/com/android/loganalysis/util/LogPatternUtilTest.java (renamed from tests/src/com/android/loganalysis/util/LogPatternUtilTest.java)0
-rw-r--r--javatests/com/android/loganalysis/util/LogTailUtilTest.java (renamed from tests/src/com/android/loganalysis/util/LogTailUtilTest.java)0
-rw-r--r--javatests/com/android/loganalysis/util/RegexTrieTest.java (renamed from tests/src/com/android/loganalysis/util/RegexTrieTest.java)0
-rw-r--r--javatests/com/android/loganalysis/util/config/ArgsOptionParserTest.java (renamed from tests/src/com/android/loganalysis/util/config/ArgsOptionParserTest.java)0
-rw-r--r--javatests/com/android/loganalysis/util/config/OptionSetterTest.java (renamed from tests/src/com/android/loganalysis/util/config/OptionSetterTest.java)0
-rw-r--r--javatests/com/android/loganalysis/util/config/OptionUpdateRuleTest.java (renamed from tests/src/com/android/loganalysis/util/config/OptionUpdateRuleTest.java)0
-rw-r--r--src/com/android/loganalysis/item/BootEventItem.java54
-rw-r--r--src/com/android/loganalysis/item/DmesgItem.java14
-rw-r--r--src/com/android/loganalysis/item/DmesgModuleInfoItem.java122
-rw-r--r--src/com/android/loganalysis/parser/DmesgParser.java74
-rw-r--r--src/com/android/loganalysis/parser/EventsLogParser.java60
-rw-r--r--src/com/android/loganalysis/parser/LogcatParser.java3
-rw-r--r--tests/Android.mk25
-rw-r--r--tests/src/com/android/loganalysis/FuncTests.java41
-rw-r--r--tests/src/com/android/loganalysis/UnitTests.java174
-rw-r--r--tests/src/com/android/loganalysis/parser/BugreportParserFuncTest.java97
-rw-r--r--tests/src/com/android/loganalysis/parser/LogcatParserFuncTest.java71
-rw-r--r--tests/src/com/android/loganalysis/parser/MonkeyLogParserFuncTest.java113
82 files changed, 551 insertions, 648 deletions
diff --git a/Android.bp b/Android.bp
index d70ae95..0e77526 100644
--- a/Android.bp
+++ b/Android.bp
@@ -12,7 +12,11 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-java_library_host {
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+tradefed_java_library_host {
name: "loganalysis",
defaults: [ "tradefed_defaults" ],
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 8a99575..0000000
--- a/Android.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (C) 2013 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.
-
-LOCAL_PATH := $(call my-dir)
-
-# makefile rules to copy jars to HOST_OUT/tradefed
-# so tradefed.sh can automatically add to classpath
-
-DEST_JAR := $(HOST_OUT)/tradefed/loganalysis.jar
-BUILT_JAR := $(call intermediates-dir-for,JAVA_LIBRARIES,loganalysis,HOST)/javalib.jar
-$(DEST_JAR): $(BUILT_JAR)
- $(copy-file-to-new-target)
-
-# this dependency ensure the above rule will be executed if module is built
-$(HOST_OUT_JAVA_LIBRARIES)/loganalysis.jar : $(DEST_JAR)
-
-# Build all sub-directories
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/.classpath b/javatests/.classpath
index 55aa5dd..55aa5dd 100644
--- a/tests/.classpath
+++ b/javatests/.classpath
diff --git a/tests/.project b/javatests/.project
index f4a1c0b..f4a1c0b 100644
--- a/tests/.project
+++ b/javatests/.project
diff --git a/tests/Android.bp b/javatests/Android.bp
index 0547b23..e89738a 100644
--- a/tests/Android.bp
+++ b/javatests/Android.bp
@@ -12,17 +12,21 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-java_library_host {
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+java_test_host {
name: "loganalysis-tests",
defaults: ["tradefed_defaults"],
// Only compile source java files in this lib.
- srcs: ["src/**/*.java"],
+ srcs: ["com/**/*.java"],
- libs: [
+ static_libs: [
"loganalysis",
"json-prebuilt",
"junit",
- "easymock",
+ "guava",
],
}
diff --git a/tests/src/com/android/loganalysis/item/BatteryDischargeItemTest.java b/javatests/com/android/loganalysis/item/BatteryDischargeItemTest.java
index 5e27eb2..5e27eb2 100644
--- a/tests/src/com/android/loganalysis/item/BatteryDischargeItemTest.java
+++ b/javatests/com/android/loganalysis/item/BatteryDischargeItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/BatteryUsageItemTest.java b/javatests/com/android/loganalysis/item/BatteryUsageItemTest.java
index b44a432..b44a432 100644
--- a/tests/src/com/android/loganalysis/item/BatteryUsageItemTest.java
+++ b/javatests/com/android/loganalysis/item/BatteryUsageItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java b/javatests/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java
index dd60500..dd60500 100644
--- a/tests/src/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java
+++ b/javatests/com/android/loganalysis/item/DumpsysPackageStatsItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/DvmLockSampleItemTest.java b/javatests/com/android/loganalysis/item/DvmLockSampleItemTest.java
index 5d6054e..5d6054e 100644
--- a/tests/src/com/android/loganalysis/item/DvmLockSampleItemTest.java
+++ b/javatests/com/android/loganalysis/item/DvmLockSampleItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/GenericItemTest.java b/javatests/com/android/loganalysis/item/GenericItemTest.java
index e9ea31f..c8bae41 100644
--- a/tests/src/com/android/loganalysis/item/GenericItemTest.java
+++ b/javatests/com/android/loganalysis/item/GenericItemTest.java
@@ -26,12 +26,10 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-/**
- * Unit test for {@link GenericItem}.
- */
+/** Unit test for {@link GenericItem}. */
public class GenericItemTest extends TestCase {
- private static final Set<String> ATTRIBUTES = new HashSet<String>(Arrays.asList(
- "integer", "string"));
+ private static final Set<String> ATTRIBUTES =
+ new HashSet<String>(Arrays.asList("integer", "string"));
private String mStringAttribute = "String";
private Integer mIntegerAttribute = 1;
@@ -70,9 +68,7 @@ public class GenericItemTest extends TestCase {
mInconsistentItem.setAttribute("integer", 2);
}
- /**
- * Test for {@link GenericItem#mergeAttributes(IItem, Set)}.
- */
+ /** Test for {@link GenericItem#mergeAttributes(IItem, Set)}. */
public void testMergeAttributes() throws ConflictingItemException {
Map<String, Object> attributes;
@@ -120,9 +116,7 @@ public class GenericItemTest extends TestCase {
}
}
- /**
- * Test for {@link GenericItem#isConsistent(IItem)}.
- */
+ /** Test for {@link GenericItem#isConsistent(IItem)}. */
public void testIsConsistent() {
assertTrue(mEmptyItem1.isConsistent(mEmptyItem1));
assertFalse(mEmptyItem1.isConsistent(null));
@@ -154,8 +148,8 @@ public class GenericItemTest extends TestCase {
}
/**
- * Test for {@link GenericItem#setAttribute(String, Object)} and
- * {@link GenericItem#getAttribute(String)}.
+ * Test for {@link GenericItem#setAttribute(String, Object)} and {@link
+ * GenericItem#getAttribute(String)}.
*/
public void testAttributes() {
GenericItem item = new GenericItem(ATTRIBUTES);
@@ -183,9 +177,7 @@ public class GenericItemTest extends TestCase {
}
}
- /**
- * Test for {@link GenericItem#areEqual(Object, Object)}
- */
+ /** Test for {@link GenericItem#areEqual(Object, Object)} */
public void testAreEqual() {
assertTrue(GenericItem.areEqual(null, null));
assertTrue(GenericItem.areEqual("test", "test"));
@@ -194,9 +186,7 @@ public class GenericItemTest extends TestCase {
assertFalse(GenericItem.areEqual("test", ""));
}
- /**
- * Test for {@link GenericItem#areConsistent(Object, Object)}
- */
+ /** Test for {@link GenericItem#areConsistent(Object, Object)} */
public void testAreConsistent() {
assertTrue(GenericItem.areConsistent(null, null));
assertTrue(GenericItem.areConsistent("test", "test"));
@@ -205,9 +195,7 @@ public class GenericItemTest extends TestCase {
assertFalse(GenericItem.areConsistent("test", ""));
}
- /**
- * Test for {@link GenericItem#mergeObjects(Object, Object)}
- */
+ /** Test for {@link GenericItem#mergeObjects(Object, Object)} */
public void testMergeObjects() throws ConflictingItemException {
assertNull(GenericItem.mergeObjects(null, null));
assertEquals("test", GenericItem.mergeObjects("test", "test"));
@@ -222,12 +210,14 @@ public class GenericItemTest extends TestCase {
}
}
- /**
- * Test that {@link GenericItem#toJson()} returns correctly.
- */
+ /** Test that {@link GenericItem#toJson()} returns correctly. */
public void testToJson() throws JSONException {
- GenericItem item = new GenericItem(new HashSet<String>(Arrays.asList(
- "string", "date", "object", "integer", "long", "float", "double", "item", "null")));
+ GenericItem item =
+ new GenericItem(
+ new HashSet<String>(
+ Arrays.asList(
+ "string", "date", "object", "integer", "long", "float",
+ "double", "item", "null")));
Date date = new Date();
Object object = new Object();
NativeCrashItem subItem = new NativeCrashItem();
@@ -256,9 +246,9 @@ public class GenericItemTest extends TestCase {
assertTrue(output.has("long"));
assertEquals(1, output.get("long"));
assertTrue(output.has("float"));
- assertEquals(2.5, output.get("float"));
+ assertEquals("2.5", output.get("float").toString());
assertTrue(output.has("double"));
- assertEquals(3.5, output.get("double"));
+ assertEquals("3.5", output.get("double").toString());
assertTrue(output.has("item"));
assertTrue(output.get("item") instanceof JSONObject);
assertFalse(output.has("null"));
diff --git a/tests/src/com/android/loganalysis/item/InterruptItemTest.java b/javatests/com/android/loganalysis/item/InterruptItemTest.java
index 9e9df61..9e9df61 100644
--- a/tests/src/com/android/loganalysis/item/InterruptItemTest.java
+++ b/javatests/com/android/loganalysis/item/InterruptItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/LocationDumpsItemTest.java b/javatests/com/android/loganalysis/item/LocationDumpsItemTest.java
index a96bc0d..a96bc0d 100644
--- a/tests/src/com/android/loganalysis/item/LocationDumpsItemTest.java
+++ b/javatests/com/android/loganalysis/item/LocationDumpsItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/MemInfoItemTest.java b/javatests/com/android/loganalysis/item/MemInfoItemTest.java
index 7f25fe3..3a8f307 100644
--- a/tests/src/com/android/loganalysis/item/MemInfoItemTest.java
+++ b/javatests/com/android/loganalysis/item/MemInfoItemTest.java
@@ -30,8 +30,8 @@ public class MemInfoItemTest extends TestCase {
*/
public void testToJson() throws JSONException {
MemInfoItem item = new MemInfoItem();
- item.put("foo", 123l);
- item.put("bar", 456l);
+ item.put("foo", 123L);
+ item.put("bar", 456L);
item.setText("foo: 123 kB\nbar: 456 kB");
// Convert to JSON string and back again
diff --git a/tests/src/com/android/loganalysis/item/MonkeyLogItemTest.java b/javatests/com/android/loganalysis/item/MonkeyLogItemTest.java
index cc2867c..cc2867c 100644
--- a/tests/src/com/android/loganalysis/item/MonkeyLogItemTest.java
+++ b/javatests/com/android/loganalysis/item/MonkeyLogItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/ProcrankItemTest.java b/javatests/com/android/loganalysis/item/ProcrankItemTest.java
index 7f5d309..7f5d309 100644
--- a/tests/src/com/android/loganalysis/item/ProcrankItemTest.java
+++ b/javatests/com/android/loganalysis/item/ProcrankItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/SmartMonkeyLogItemTest.java b/javatests/com/android/loganalysis/item/SmartMonkeyLogItemTest.java
index 4dd5597..4dd5597 100644
--- a/tests/src/com/android/loganalysis/item/SmartMonkeyLogItemTest.java
+++ b/javatests/com/android/loganalysis/item/SmartMonkeyLogItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/SystemPropsItemTest.java b/javatests/com/android/loganalysis/item/SystemPropsItemTest.java
index b9b6675..b9b6675 100644
--- a/tests/src/com/android/loganalysis/item/SystemPropsItemTest.java
+++ b/javatests/com/android/loganalysis/item/SystemPropsItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/TopItemTest.java b/javatests/com/android/loganalysis/item/TopItemTest.java
index 2df01d0..2df01d0 100644
--- a/tests/src/com/android/loganalysis/item/TopItemTest.java
+++ b/javatests/com/android/loganalysis/item/TopItemTest.java
diff --git a/tests/src/com/android/loganalysis/item/WakelockItemTest.java b/javatests/com/android/loganalysis/item/WakelockItemTest.java
index f570a7b..f570a7b 100644
--- a/tests/src/com/android/loganalysis/item/WakelockItemTest.java
+++ b/javatests/com/android/loganalysis/item/WakelockItemTest.java
diff --git a/tests/src/com/android/loganalysis/parser/AbstractSectionParserTest.java b/javatests/com/android/loganalysis/parser/AbstractSectionParserTest.java
index 1092d0e..1092d0e 100644
--- a/tests/src/com/android/loganalysis/parser/AbstractSectionParserTest.java
+++ b/javatests/com/android/loganalysis/parser/AbstractSectionParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/ActivityServiceParserTest.java b/javatests/com/android/loganalysis/parser/ActivityServiceParserTest.java
index 57aff9a..57aff9a 100644
--- a/tests/src/com/android/loganalysis/parser/ActivityServiceParserTest.java
+++ b/javatests/com/android/loganalysis/parser/ActivityServiceParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/AnrParserTest.java b/javatests/com/android/loganalysis/parser/AnrParserTest.java
index e6afe80..e6afe80 100644
--- a/tests/src/com/android/loganalysis/parser/AnrParserTest.java
+++ b/javatests/com/android/loganalysis/parser/AnrParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/BatteryDischargeStatsInfoParserTest.java b/javatests/com/android/loganalysis/parser/BatteryDischargeStatsInfoParserTest.java
index 691810c..691810c 100644
--- a/tests/src/com/android/loganalysis/parser/BatteryDischargeStatsInfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/BatteryDischargeStatsInfoParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/BatteryStatsDetailedInfoParserTest.java b/javatests/com/android/loganalysis/parser/BatteryStatsDetailedInfoParserTest.java
index b176fa2..b176fa2 100644
--- a/tests/src/com/android/loganalysis/parser/BatteryStatsDetailedInfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/BatteryStatsDetailedInfoParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/BatteryStatsSummaryInfoParserTest.java b/javatests/com/android/loganalysis/parser/BatteryStatsSummaryInfoParserTest.java
index c6ba381..c6ba381 100644
--- a/tests/src/com/android/loganalysis/parser/BatteryStatsSummaryInfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/BatteryStatsSummaryInfoParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/BatteryUsageParserTest.java b/javatests/com/android/loganalysis/parser/BatteryUsageParserTest.java
index 20a9a2e..20a9a2e 100644
--- a/tests/src/com/android/loganalysis/parser/BatteryUsageParserTest.java
+++ b/javatests/com/android/loganalysis/parser/BatteryUsageParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/BugreportParserTest.java b/javatests/com/android/loganalysis/parser/BugreportParserTest.java
index 5f3fc10..5f3fc10 100644
--- a/tests/src/com/android/loganalysis/parser/BugreportParserTest.java
+++ b/javatests/com/android/loganalysis/parser/BugreportParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/CompactMemInfoParserTest.java b/javatests/com/android/loganalysis/parser/CompactMemInfoParserTest.java
index ed4b39b..ed4b39b 100644
--- a/tests/src/com/android/loganalysis/parser/CompactMemInfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/CompactMemInfoParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/CpuInfoParserTest.java b/javatests/com/android/loganalysis/parser/CpuInfoParserTest.java
index 196f6a2..196f6a2 100644
--- a/tests/src/com/android/loganalysis/parser/CpuInfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/CpuInfoParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/DmesgParserTest.java b/javatests/com/android/loganalysis/parser/DmesgParserTest.java
index 4362c7a..e4ea7af 100644
--- a/tests/src/com/android/loganalysis/parser/DmesgParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DmesgParserTest.java
@@ -20,6 +20,7 @@ import com.android.loganalysis.item.DmesgActionInfoItem;
import com.android.loganalysis.item.DmesgItem;
import com.android.loganalysis.item.DmesgServiceInfoItem;
import com.android.loganalysis.item.DmesgStageInfoItem;
+import com.android.loganalysis.item.DmesgModuleInfoItem;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
@@ -38,8 +39,15 @@ public class DmesgParserTest extends TestCase {
private static final String BOOT_ANIMATION = "bootanim";
private static final String NETD = "netd";
+ private static final String FOO = "foo";
+ private static final String BAR = "bar";
+ private static final String TOTAL_MODULE = "TOTAL_MODULE";
private static final String[] LINES =
new String[] {
+ "[ 0.370107] init: Loading module /lib/modules/foo.ko with args ''",
+ "[ 0.372497] init: Loaded kernel module /lib/modules/foo.ko",
+ "[ 0.372500] init: Loading module /lib/modules/bar.ko with args ''",
+ "[ 1.115467] init: Loaded 198 kernel modules took 748 ms",
"[ 2.471163] init: Wait for property 'apexd.status=ready' took 403ms",
"[ 3.786943] ueventd: Coldboot took 0.701291 seconds",
"[ 22.962730] init: starting service 'bootanim'...",
@@ -50,12 +58,17 @@ public class DmesgParserTest extends TestCase {
"[ 39.855818] init: Service 'bootanim' (pid 588) exited with status 0",
"[ 41.665818] init: init first stage started!",
"[ 44.942872] init: processing action (early-init) from (/init.rc:13)",
- "[ 47.233446] init: processing action (set_mmap_rnd_bits) from (<Builtin Action>:0)",
- "[ 47.240083] init: processing action (set_kptr_restrict) from (<Builtin Action>:0)",
+ "[ 47.233446] init: processing action (set_mmap_rnd_bits) from (<Builtin "
+ + "Action>:0)",
+ "[ 47.240083] init: processing action (set_kptr_restrict) from (<Builtin"
+ + " Action>:0)",
"[ 47.245778] init: processing action (keychord_init) from (<Builtin Action>:0)",
- "[ 52.361049] init: processing action (persist.sys.usb.config=* boot) from (<Builtin Action>:0)",
- "[ 52.361108] init: processing action (enable_property_trigger) from (<Builtin Action>:0)",
- "[ 52.361313] init: processing action (security.perf_harden=1) from (/init.rc:677)",
+ "[ 52.361049] init: processing action (persist.sys.usb.config=* boot) from"
+ + " (<Builtin Action>:0)",
+ "[ 52.361108] init: processing action (enable_property_trigger) from (<Builtin"
+ + " Action>:0)",
+ "[ 52.361313] init: processing action (security.perf_harden=1) from"
+ + " (/init.rc:677)",
"[ 52.361495] init: processing action (ro.debuggable=1) from (/init.rc:700)",
"[ 58.298293] init: processing action (sys.boot_completed=1)",
"[ 59.331069] ipa-wan ipa_wwan_ioctl:1428 dev(rmnet_data0) register to IPA",
@@ -73,6 +86,9 @@ public class DmesgParserTest extends TestCase {
private static final List<DmesgActionInfoItem> EXPECTED_ACTION_INFO_ITEMS =
getExpectedActionInfoItems();
+ private static final Map<String, DmesgModuleInfoItem> EXPECTED_MODULE_INFO_ITEMS =
+ getExpectedModuleInfoItems();
+
/**
* Test for empty dmesg logs passed to the DmesgParser
*/
@@ -101,10 +117,15 @@ public class DmesgParserTest extends TestCase {
dmesgParser.getStageInfoItems().size());
assertEquals("Action info items list size should be 9",9,
dmesgParser.getActionInfoItems().size());
+ assertEquals(
+ "Module info items list size should be 3",
+ 3,
+ dmesgParser.getModuleInfoItems().size());
assertEquals(EXPECTED_SERVICE_INFO_ITEMS, actualDmesgItem.getServiceInfoItems());
assertEquals(EXPECTED_STAGE_INFO_ITEMS, actualDmesgItem.getStageInfoItems());
assertEquals(EXPECTED_ACTION_INFO_ITEMS, actualDmesgItem.getActionInfoItems());
+ assertEquals(EXPECTED_MODULE_INFO_ITEMS, actualDmesgItem.getModuleInfoItems());
}
/**
@@ -121,6 +142,10 @@ public class DmesgParserTest extends TestCase {
dmesgParser.getStageInfoItems().size());
assertEquals("Action info items list size should be 9",9,
dmesgParser.getActionInfoItems().size());
+ assertEquals(
+ "Module info items list size should be 3",
+ 3,
+ dmesgParser.getModuleInfoItems().size());
}
}
@@ -213,13 +238,30 @@ public class DmesgParserTest extends TestCase {
assertEquals(EXPECTED_ACTION_INFO_ITEMS, actualActionInfoItems);
}
+ /** Test incomplete module loaded pattern */
+ public void testIncompleteModuleInfo() {
+ DmesgParser dmesgParser = new DmesgParser();
+ for (String line : LINES) {
+ dmesgParser.parseModuleInfo(line);
+ }
+ List<DmesgModuleInfoItem> actualModuleInfoItems =
+ new ArrayList<>(dmesgParser.getModuleInfoItems().values());
+ assertEquals(EXPECTED_MODULE_INFO_ITEMS, dmesgParser.getModuleInfoItems());
+ assertEquals(3, actualModuleInfoItems.size());
+ assertEquals(
+ "Duration should be -1L",
+ Long.valueOf(-1L),
+ actualModuleInfoItems.get(0).getModuleDuration());
+ }
+
private static List<DmesgActionInfoItem> getExpectedActionInfoItems() {
return Arrays.asList(
new DmesgActionInfoItem("/init.rc:13", "early-init", 44942L),
new DmesgActionInfoItem("<Builtin Action>:0", "set_mmap_rnd_bits", 47233L),
new DmesgActionInfoItem("<Builtin Action>:0", "set_kptr_restrict", 47240L),
new DmesgActionInfoItem("<Builtin Action>:0", "keychord_init", 47245L),
- new DmesgActionInfoItem("<Builtin Action>:0", "persist.sys.usb.config=* boot", 52361L),
+ new DmesgActionInfoItem(
+ "<Builtin Action>:0", "persist.sys.usb.config=* boot", 52361L),
new DmesgActionInfoItem("<Builtin Action>:0", "enable_property_trigger", 52361L),
new DmesgActionInfoItem("/init.rc:677", "security.perf_harden=1", 52361L),
new DmesgActionInfoItem("/init.rc:700", "ro.debuggable=1", 52361L),
@@ -250,4 +292,26 @@ public class DmesgParserTest extends TestCase {
return serviceInfoItemsMap;
}
+ private static Map<String, DmesgModuleInfoItem> getExpectedModuleInfoItems() {
+ Map<String, DmesgModuleInfoItem> moduleInfoItemsMap = new HashMap<>();
+ DmesgModuleInfoItem fooModuleInfo = new DmesgModuleInfoItem();
+ fooModuleInfo.setModuleName(FOO);
+ fooModuleInfo.setStartTime(370L);
+ fooModuleInfo.setEndTime(372L);
+
+ DmesgModuleInfoItem barModuleInfo = new DmesgModuleInfoItem();
+ barModuleInfo.setModuleName(BAR);
+ barModuleInfo.setStartTime(372L);
+
+ DmesgModuleInfoItem totalInfoItem = new DmesgModuleInfoItem();
+ totalInfoItem.setModuleName(TOTAL_MODULE);
+ totalInfoItem.setModuleCount("198");
+ totalInfoItem.setModuleDuration(748L);
+
+ moduleInfoItemsMap.put(FOO, fooModuleInfo);
+ moduleInfoItemsMap.put(BAR, barModuleInfo);
+ moduleInfoItemsMap.put(TOTAL_MODULE, totalInfoItem);
+
+ return moduleInfoItemsMap;
+ }
}
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysBatteryStatsParserTest.java b/javatests/com/android/loganalysis/parser/DumpsysBatteryStatsParserTest.java
index e96491a..e96491a 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysBatteryStatsParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DumpsysBatteryStatsParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java b/javatests/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
index ee15b78..ee15b78 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DumpsysPackageStatsParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysParserTest.java b/javatests/com/android/loganalysis/parser/DumpsysParserTest.java
index 020c724..020c724 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DumpsysParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysProcStatsParserTest.java b/javatests/com/android/loganalysis/parser/DumpsysProcStatsParserTest.java
index 27bb7a4..27bb7a4 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysProcStatsParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DumpsysProcStatsParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysProcessMeminfoParserTest.java b/javatests/com/android/loganalysis/parser/DumpsysProcessMeminfoParserTest.java
index b7042d3..b7042d3 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysProcessMeminfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DumpsysProcessMeminfoParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/DumpsysWifiStatsParserTest.java b/javatests/com/android/loganalysis/parser/DumpsysWifiStatsParserTest.java
index f52e432..f52e432 100644
--- a/tests/src/com/android/loganalysis/parser/DumpsysWifiStatsParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DumpsysWifiStatsParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/DvmLockSampleParserTest.java b/javatests/com/android/loganalysis/parser/DvmLockSampleParserTest.java
index cb85999..cb85999 100644
--- a/tests/src/com/android/loganalysis/parser/DvmLockSampleParserTest.java
+++ b/javatests/com/android/loganalysis/parser/DvmLockSampleParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/EventsLogParserTest.java b/javatests/com/android/loganalysis/parser/EventsLogParserTest.java
index 6956d16..2108d5d 100644
--- a/tests/src/com/android/loganalysis/parser/EventsLogParserTest.java
+++ b/javatests/com/android/loganalysis/parser/EventsLogParserTest.java
@@ -16,6 +16,7 @@
package com.android.loganalysis.parser;
+import com.android.loganalysis.item.BootEventItem;
import com.android.loganalysis.item.LatencyItem;
import com.android.loganalysis.item.TransitionDelayItem;
@@ -57,11 +58,13 @@ public class EventsLogParserTest extends TestCase {
* Test for no transition delay info in the events log
*/
public void testNoTransitionDelayInfo() throws IOException {
- List<String> lines = Arrays
- .asList(
- "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied setFocusedActivity]",
+ List<String> lines =
+ Arrays.asList(
+ "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied"
+ + " setFocusedActivity]",
"08-25 12:56:15.850 1152 8968 I wm_task_moved: [6,1,1]",
- "08-25 12:56:15.852 1152 8968 I am_focused_activity: [0,com.google.android.apps.nexuslauncher/.NexusLauncherActivity,appDied]",
+ "08-25 12:56:15.852 1152 8968 I am_focused_activity:"
+ + " [0,com.google.android.apps.nexuslauncher/.NexusLauncherActivity,appDied]",
"08-25 12:56:15.852 1152 8968 I wm_task_removed: [27,removeTask]",
"08-25 12:56:15.852 1152 8968 I wm_stack_removed: 1");
List<TransitionDelayItem> transitionItems =
@@ -74,9 +77,12 @@ public class EventsLogParserTest extends TestCase {
* Test for Cold launch transition delay and starting window delay info
*/
public void testValidColdTransitionDelay() throws IOException {
- List<String> lines = Arrays
- .asList("09-18 23:56:19.376 1140 1221 I sysui_multi_action: [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0,945,41]",
- "09-18 23:56:19.376 1140 1221 I sysui_multi_action: [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0,945,41]");
+ List<String> lines =
+ Arrays.asList(
+ "09-18 23:56:19.376 1140 1221 I sysui_multi_action:"
+ + " [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0,945,41]",
+ "09-18 23:56:19.376 1140 1221 I sysui_multi_action:"
+ + " [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0,945,41]");
List<TransitionDelayItem> transitionItems =
new EventsLogParser().parseTransitionDelayInfo(readInputBuffer(getTempFile(lines)));
assertEquals("Startinng Window Delay items list should have two item", 2,
@@ -96,11 +102,16 @@ public class EventsLogParserTest extends TestCase {
* Test for Hot launch transition delay and starting window delay info
*/
public void testValidHotTransitionDelay() throws IOException {
- List<String> lines = Arrays
- .asList("09-18 23:56:19.376 1140 1221 I sysui_multi_action: [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0]",
- "09-18 23:56:19.376 1140 1221 I sysui_multi_action: [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0]",
- "09-19 02:26:30.182 1143 1196 I sysui_multi_action: [319,87,322,75,325,212,757,761,758,9,759,2,806,com.google.android.apps.nexuslauncher,871,com.google.android.apps.nexuslauncher.NexusLauncherActivity,904,com.google.android.apps.nexuslauncher,905,0]",
- "09-19 02:26:30.182 1143 1196 I sysui_multi_action: [319,87,322,75,325,212,757,761,758,9,759,2,806,com.google.android.apps.nexuslauncher,871,com.google.android.apps.nexuslauncher.NexusLauncherActivity,905,0]");
+ List<String> lines =
+ Arrays.asList(
+ "09-18 23:56:19.376 1140 1221 I sysui_multi_action:"
+ + " [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0]",
+ "09-18 23:56:19.376 1140 1221 I sysui_multi_action:"
+ + " [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0]",
+ "09-19 02:26:30.182 1143 1196 I sysui_multi_action:"
+ + " [319,87,322,75,325,212,757,761,758,9,759,2,806,com.google.android.apps.nexuslauncher,871,com.google.android.apps.nexuslauncher.NexusLauncherActivity,904,com.google.android.apps.nexuslauncher,905,0]",
+ "09-19 02:26:30.182 1143 1196 I sysui_multi_action:"
+ + " [319,87,322,75,325,212,757,761,758,9,759,2,806,com.google.android.apps.nexuslauncher,871,com.google.android.apps.nexuslauncher.NexusLauncherActivity,905,0]");
List<TransitionDelayItem> transitionItems =
new EventsLogParser().parseTransitionDelayInfo(readInputBuffer(getTempFile(lines)));
assertEquals("Transition Delay items list should have four item", 4,
@@ -118,9 +129,12 @@ public class EventsLogParserTest extends TestCase {
* Test for same app transition delay items order after parsing from the events log
*/
public void testTransitionDelayOrder() throws IOException {
- List<String> lines = Arrays
- .asList("09-18 23:56:19.376 1140 1221 I sysui_multi_action: [319,51,321,59,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0,945,41]",
- "09-18 23:59:18.380 1140 1221 I sysui_multi_action: [319,55,321,65,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0,945,41]");
+ List<String> lines =
+ Arrays.asList(
+ "09-18 23:56:19.376 1140 1221 I sysui_multi_action:"
+ + " [319,51,321,59,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0,945,41]",
+ "09-18 23:59:18.380 1140 1221 I sysui_multi_action:"
+ + " [319,55,321,65,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0,945,41]");
List<TransitionDelayItem> transitionItems =
new EventsLogParser().parseTransitionDelayInfo(readInputBuffer(getTempFile(lines)));
assertEquals("Transition Delay items list should have two items", 2,
@@ -135,9 +149,12 @@ public class EventsLogParserTest extends TestCase {
* Test for two different different apps transition delay items
*/
public void testDifferentAppTransitionDelay() throws IOException {
- List<String> lines = Arrays
- .asList("09-18 23:56:19.376 1140 1221 I sysui_multi_action: [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0]",
- "09-19 02:26:30.182 1143 1196 I sysui_multi_action: [319,87,322,75,325,212,757,761,758,9,759,2,806,com.google.android.apps.nexuslauncher,871,com.google.android.apps.nexuslauncher.NexusLauncherActivity,904,com.google.android.apps.nexuslauncher,905,0]");
+ List<String> lines =
+ Arrays.asList(
+ "09-18 23:56:19.376 1140 1221 I sysui_multi_action:"
+ + " [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,com.android.calculator2.Calculator,904,com.google.android.apps.nexuslauncher,905,0]",
+ "09-19 02:26:30.182 1143 1196 I sysui_multi_action:"
+ + " [319,87,322,75,325,212,757,761,758,9,759,2,806,com.google.android.apps.nexuslauncher,871,com.google.android.apps.nexuslauncher.NexusLauncherActivity,904,com.google.android.apps.nexuslauncher,905,0]");
List<TransitionDelayItem> transitionItems =
new EventsLogParser().parseTransitionDelayInfo(readInputBuffer(getTempFile(lines)));
assertEquals("Transition Delay items list should have two items", 2,
@@ -155,13 +172,20 @@ public class EventsLogParserTest extends TestCase {
* Test for invalid transition delay items pattern having different code.
*/
public void testInvalidTransitionPattern() throws IOException {
- List<String> lines = Arrays
- .asList("01-02 08:11:58.691 934 986 I sysui_multi_action: a[319,48,322,82,325,84088,757,761,758,9,759,4,807,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0]",
- "01-02 08:12:03.639 934 970 I sysui_multi_action: [757,803,799,window_time_0,802,5]",
- "01-02 08:12:10.849 934 986 I sysui_multi_action: 319,42,321,59,322,208,325,84100,757,761,758,9,759,4,806,com.google.android.apps.maps,871,com.google.android.maps.MapsActivity,905,0]",
- "01-02 08:12:16.895 1446 1446 I sysui_multi_action: [757,803,799,overview_trigger_nav_btn,802,1]",
- "01-02 08:12:16.895 1446 1446 I sysui_multi_action: [757,803,799,overview_source_app,802,1]",
- "01-02 08:12:16.895 1446 1446 I sysui_multi_action: [757,804,799,overview_source_app_index,801,8,802,1]");
+ List<String> lines =
+ Arrays.asList(
+ "01-02 08:11:58.691 934 986 I sysui_multi_action:"
+ + " a[319,48,322,82,325,84088,757,761,758,9,759,4,807,com.google.android.calculator,871,com.android.calculator2.Calculator,905,0]",
+ "01-02 08:12:03.639 934 970 I sysui_multi_action:"
+ + " [757,803,799,window_time_0,802,5]",
+ "01-02 08:12:10.849 934 986 I sysui_multi_action:"
+ + " 319,42,321,59,322,208,325,84100,757,761,758,9,759,4,806,com.google.android.apps.maps,871,com.google.android.maps.MapsActivity,905,0]",
+ "01-02 08:12:16.895 1446 1446 I sysui_multi_action:"
+ + " [757,803,799,overview_trigger_nav_btn,802,1]",
+ "01-02 08:12:16.895 1446 1446 I sysui_multi_action:"
+ + " [757,803,799,overview_source_app,802,1]",
+ "01-02 08:12:16.895 1446 1446 I sysui_multi_action:"
+ + " [757,804,799,overview_source_app_index,801,8,802,1]");
List<TransitionDelayItem> transitionItems =
new EventsLogParser().parseTransitionDelayInfo(readInputBuffer(getTempFile(lines)));
assertEquals("Transition Delay items list should be empty", 0,
@@ -172,12 +196,15 @@ public class EventsLogParserTest extends TestCase {
* Test for valid latency item
*/
public void testValidLatencyInfo() throws IOException {
- List<String> lines = Arrays
- .asList("08-25 13:01:19.412 1152 9031 I am_restart_activity: [com.google.android.gm/.ConversationListActivityGmail,0,85290699,38]",
+ List<String> lines =
+ Arrays.asList(
+ "08-25 13:01:19.412 1152 9031 I am_restart_activity:"
+ + " [com.google.android.gm/.ConversationListActivityGmail,0,85290699,38]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [321,85]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [320,1]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [319,85]",
- "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied setFocusedActivity]",
+ "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied"
+ + " setFocusedActivity]",
"09-19 11:53:16.893 1080 1160 I sysui_latency: [1,50]");
List<LatencyItem> latencyItems =
new EventsLogParser().parseLatencyInfo(readInputBuffer(getTempFile(lines)));
@@ -190,12 +217,15 @@ public class EventsLogParserTest extends TestCase {
* Test for empty delay info
*/
public void testInvalidLatencyInfo() throws IOException {
- List<String> lines = Arrays
- .asList("08-25 13:01:19.412 1152 9031 I am_restart_activity: [com.google.android.gm/.ConversationListActivityGmail,0,85290699,38]",
+ List<String> lines =
+ Arrays.asList(
+ "08-25 13:01:19.412 1152 9031 I am_restart_activity:"
+ + " [com.google.android.gm/.ConversationListActivityGmail,0,85290699,38]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [321,85]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [320,1]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [319,85]",
- "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied setFocusedActivity]",
+ "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied"
+ + " setFocusedActivity]",
"09-19 11:53:16.893 1080 1160 I sysui_latency: [1]");
List<LatencyItem> latencyItems =
new EventsLogParser().parseLatencyInfo(readInputBuffer(getTempFile(lines)));
@@ -206,12 +236,15 @@ public class EventsLogParserTest extends TestCase {
* Test for empty latency info
*/
public void testEmptyLatencyInfo() throws IOException {
- List<String> lines = Arrays
- .asList("08-25 13:01:19.412 1152 9031 I am_restart_activity: [com.google.android.gm/.ConversationListActivityGmail,0,85290699,38]",
+ List<String> lines =
+ Arrays.asList(
+ "08-25 13:01:19.412 1152 9031 I am_restart_activity:"
+ + " [com.google.android.gm/.ConversationListActivityGmail,0,85290699,38]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [321,85]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [320,1]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [319,85]",
- "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied setFocusedActivity]",
+ "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied"
+ + " setFocusedActivity]",
"09-19 11:53:16.893 1080 1160 I sysui_latency: []");
List<LatencyItem> latencyItems =
new EventsLogParser().parseLatencyInfo(readInputBuffer(getTempFile(lines)));
@@ -223,12 +256,14 @@ public class EventsLogParserTest extends TestCase {
* Test for order of the latency items
*/
public void testLatencyInfoOrder() throws IOException {
- List<String> lines = Arrays
- .asList("09-19 11:53:16.893 1080 1160 I sysui_latency: [1,50]",
+ List<String> lines =
+ Arrays.asList(
+ "09-19 11:53:16.893 1080 1160 I sysui_latency: [1,50]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [321,85]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [320,1]",
"08-25 13:01:19.437 1152 1226 I sysui_action: [319,85]",
- "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied setFocusedActivity]",
+ "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied"
+ + " setFocusedActivity]",
"09-19 11:53:16.893 1080 1160 I sysui_latency: [2,100]");
List<LatencyItem> latencyItems =
new EventsLogParser().parseLatencyInfo(readInputBuffer(getTempFile(lines)));
@@ -237,6 +272,59 @@ public class EventsLogParserTest extends TestCase {
assertEquals("Second latency id is not 2", 2, latencyItems.get(1).getActionId());
}
+ /** Test for no boot event info in the events log */
+ public void testNoBootEventInfo() throws IOException {
+ List<String> lines =
+ Arrays.asList(
+ "08-25 12:56:15.850 1152 8968 I am_focused_stack: [0,0,1,appDied"
+ + " setFocusedActivity]",
+ "08-25 12:56:15.850 1152 8968 I wm_task_moved: [6,1,1]",
+ "08-25 12:56:15.852 1152 8968 I am_focused_activity:"
+ + " [0,com.google.android.apps.nexuslauncher/.NexusLauncherActivity,appDied]",
+ "08-25 12:56:15.852 1152 8968 I wm_task_removed: [27,removeTask]",
+ "08-25 12:56:15.852 1152 8968 I wm_stack_removed: 1");
+ List<BootEventItem> eventItems =
+ new EventsLogParser().parseBootEventInfo(readInputBuffer(getTempFile(lines)));
+ assertEquals("Boot item list should be empty", 0, eventItems.size());
+ }
+
+ /** Test for valid boot event items */
+ public void testValidBootEventInfo() throws IOException {
+ List<String> lines =
+ Arrays.asList(
+ "05-03 13:48:42.837 702 702 I boot_progress_preload_start: 12133",
+ "05-03 13:48:44.307 702 702 I boot_progress_preload_end: 13603",
+ "05-03 13:48:48.073 1797 1797 I boot_progress_ams_ready: 17369",
+ "05-03 13:48:48.073 1797 1797 I user_activity_timeout_override: 10000",
+ "05-03 13:48:51.074 486 2790 I sf_stop_bootanim: 20369");
+ List<BootEventItem> eventItems =
+ new EventsLogParser().parseBootEventInfo(readInputBuffer(getTempFile(lines)));
+ assertEquals("4 boot items should present in the list", 4, eventItems.size());
+ assertEquals(
+ "boot_progress event name is not correctly parsed",
+ "boot_progress_preload_start",
+ eventItems.get(0).getEventName());
+ assertEquals(
+ "sf_stop_anim event name is not correctly parsed",
+ "sf_stop_bootanim",
+ eventItems.get(3).getEventName());
+ assertEquals("Duration is not correct", 12133.0, eventItems.get(0).getDuration(), 0.00001);
+ }
+
+ /** Test for invalid boot event items */
+ public void testInvalidBootEventInfo() throws IOException {
+ List<String> lines =
+ Arrays.asList(
+ "05-03 13:48:48.073 1797 1797 I user_activity_timeout_override: 10000",
+ "05-03 13:48:50.307 702 702 I xxboot_progress_preload_end: 13603",
+ "05-03 13:48:50.307 702 702 I boot_progress_preload_end xx: 13603",
+ "05-03 13:48:51.073 486 2790 I sf_stop_bootanim: 20369, 20382",
+ "05-03 13:48:52.073 486 2790 I xxsf_stop_bootanim: 20369");
+ List<BootEventItem> eventItems =
+ new EventsLogParser().parseBootEventInfo(readInputBuffer(getTempFile(lines)));
+ assertEquals("Boot item list should be empty", 0, eventItems.size());
+ }
+
/**
* Write list of strings to file and use it for testing.
*/
@@ -255,6 +343,6 @@ public class EventsLogParserTest extends TestCase {
* Reader to read the input from the given temp file
*/
public BufferedReader readInputBuffer(File tempFile) throws IOException {
- return (new BufferedReader(new InputStreamReader(new FileInputStream(tempFile))));
+ return new BufferedReader(new InputStreamReader(new FileInputStream(tempFile)));
}
}
diff --git a/tests/src/com/android/loganalysis/parser/GfxInfoParserTest.java b/javatests/com/android/loganalysis/parser/GfxInfoParserTest.java
index fcd053b..fcd053b 100644
--- a/tests/src/com/android/loganalysis/parser/GfxInfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/GfxInfoParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/InterruptParserTest.java b/javatests/com/android/loganalysis/parser/InterruptParserTest.java
index d45f3af..d45f3af 100644
--- a/tests/src/com/android/loganalysis/parser/InterruptParserTest.java
+++ b/javatests/com/android/loganalysis/parser/InterruptParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/JavaCrashParserTest.java b/javatests/com/android/loganalysis/parser/JavaCrashParserTest.java
index a7d06b3..a7d06b3 100644
--- a/tests/src/com/android/loganalysis/parser/JavaCrashParserTest.java
+++ b/javatests/com/android/loganalysis/parser/JavaCrashParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/KernelLogParserTest.java b/javatests/com/android/loganalysis/parser/KernelLogParserTest.java
index 159a90e..159a90e 100644
--- a/tests/src/com/android/loganalysis/parser/KernelLogParserTest.java
+++ b/javatests/com/android/loganalysis/parser/KernelLogParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/LocationServiceParserTest.java b/javatests/com/android/loganalysis/parser/LocationServiceParserTest.java
index fc58e45..fc58e45 100644
--- a/tests/src/com/android/loganalysis/parser/LocationServiceParserTest.java
+++ b/javatests/com/android/loganalysis/parser/LocationServiceParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/LogcatParserTest.java b/javatests/com/android/loganalysis/parser/LogcatParserTest.java
index 1d4f72c..1d4f72c 100644
--- a/tests/src/com/android/loganalysis/parser/LogcatParserTest.java
+++ b/javatests/com/android/loganalysis/parser/LogcatParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/MemHealthParserTest.java b/javatests/com/android/loganalysis/parser/MemHealthParserTest.java
index 4659b76..4659b76 100644
--- a/tests/src/com/android/loganalysis/parser/MemHealthParserTest.java
+++ b/javatests/com/android/loganalysis/parser/MemHealthParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/MemInfoParserTest.java b/javatests/com/android/loganalysis/parser/MemInfoParserTest.java
index ab41b33..123db19 100644
--- a/tests/src/com/android/loganalysis/parser/MemInfoParserTest.java
+++ b/javatests/com/android/loganalysis/parser/MemInfoParserTest.java
@@ -44,12 +44,12 @@ public class MemInfoParserTest extends TestCase {
MemInfoItem item = new MemInfoParser().parse(inputBlock);
assertEquals(6, item.size());
- assertEquals((Long)353332l, item.get("MemTotal"));
- assertEquals((Long)65420l, item.get("MemFree"));
- assertEquals((Long)20800l, item.get("Buffers"));
- assertEquals((Long)86204l, item.get("Cached"));
- assertEquals((Long)0l, item.get("SwapCached"));
- assertEquals((Long)34359640152l, item.get("Long"));
+ assertEquals((Long) 353332L, item.get("MemTotal"));
+ assertEquals((Long) 65420L, item.get("MemFree"));
+ assertEquals((Long) 20800L, item.get("Buffers"));
+ assertEquals((Long) 86204L, item.get("Cached"));
+ assertEquals((Long) 0L, item.get("SwapCached"));
+ assertEquals((Long) 34359640152L, item.get("Long"));
assertNull(item.get("ExtraLongIgnore"));
assertEquals(ArrayUtil.join("\n", inputBlock), item.getText());
}
diff --git a/tests/src/com/android/loganalysis/parser/MonkeyLogParserTest.java b/javatests/com/android/loganalysis/parser/MonkeyLogParserTest.java
index b7e867d..b7e867d 100644
--- a/tests/src/com/android/loganalysis/parser/MonkeyLogParserTest.java
+++ b/javatests/com/android/loganalysis/parser/MonkeyLogParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/NativeCrashParserTest.java b/javatests/com/android/loganalysis/parser/NativeCrashParserTest.java
index 6c5cf98..6c5cf98 100644
--- a/tests/src/com/android/loganalysis/parser/NativeCrashParserTest.java
+++ b/javatests/com/android/loganalysis/parser/NativeCrashParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/ProcessUsageParserTest.java b/javatests/com/android/loganalysis/parser/ProcessUsageParserTest.java
index bfba620..bfba620 100644
--- a/tests/src/com/android/loganalysis/parser/ProcessUsageParserTest.java
+++ b/javatests/com/android/loganalysis/parser/ProcessUsageParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/ProcrankParserTest.java b/javatests/com/android/loganalysis/parser/ProcrankParserTest.java
index c47b750..c47b750 100644
--- a/tests/src/com/android/loganalysis/parser/ProcrankParserTest.java
+++ b/javatests/com/android/loganalysis/parser/ProcrankParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/QtaguidParserTest.java b/javatests/com/android/loganalysis/parser/QtaguidParserTest.java
index f9442a6..f9442a6 100644
--- a/tests/src/com/android/loganalysis/parser/QtaguidParserTest.java
+++ b/javatests/com/android/loganalysis/parser/QtaguidParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/SmartMonkeyLogParserTest.java b/javatests/com/android/loganalysis/parser/SmartMonkeyLogParserTest.java
index 1249f7c..1249f7c 100644
--- a/tests/src/com/android/loganalysis/parser/SmartMonkeyLogParserTest.java
+++ b/javatests/com/android/loganalysis/parser/SmartMonkeyLogParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/SystemPropsParserTest.java b/javatests/com/android/loganalysis/parser/SystemPropsParserTest.java
index f6dc8a1..f6dc8a1 100644
--- a/tests/src/com/android/loganalysis/parser/SystemPropsParserTest.java
+++ b/javatests/com/android/loganalysis/parser/SystemPropsParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/TimingsLogParserTest.java b/javatests/com/android/loganalysis/parser/TimingsLogParserTest.java
index 48881ea..48881ea 100644
--- a/tests/src/com/android/loganalysis/parser/TimingsLogParserTest.java
+++ b/javatests/com/android/loganalysis/parser/TimingsLogParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/TopParserTest.java b/javatests/com/android/loganalysis/parser/TopParserTest.java
index 9b2253b..9b2253b 100644
--- a/tests/src/com/android/loganalysis/parser/TopParserTest.java
+++ b/javatests/com/android/loganalysis/parser/TopParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/TraceFormatParserTest.java b/javatests/com/android/loganalysis/parser/TraceFormatParserTest.java
index 06ce9ec..06ce9ec 100644
--- a/tests/src/com/android/loganalysis/parser/TraceFormatParserTest.java
+++ b/javatests/com/android/loganalysis/parser/TraceFormatParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/TracesParserTest.java b/javatests/com/android/loganalysis/parser/TracesParserTest.java
index c5046e3..c5046e3 100644
--- a/tests/src/com/android/loganalysis/parser/TracesParserTest.java
+++ b/javatests/com/android/loganalysis/parser/TracesParserTest.java
diff --git a/tests/src/com/android/loganalysis/parser/WakelockParserTest.java b/javatests/com/android/loganalysis/parser/WakelockParserTest.java
index eff4ec8..eff4ec8 100644
--- a/tests/src/com/android/loganalysis/parser/WakelockParserTest.java
+++ b/javatests/com/android/loganalysis/parser/WakelockParserTest.java
diff --git a/tests/src/com/android/loganalysis/rule/InterruptRuleTest.java b/javatests/com/android/loganalysis/rule/InterruptRuleTest.java
index 7a08db0..7a08db0 100644
--- a/tests/src/com/android/loganalysis/rule/InterruptRuleTest.java
+++ b/javatests/com/android/loganalysis/rule/InterruptRuleTest.java
diff --git a/tests/src/com/android/loganalysis/rule/LocationUsageRuleTest.java b/javatests/com/android/loganalysis/rule/LocationUsageRuleTest.java
index 5dd7e9e..5dd7e9e 100644
--- a/tests/src/com/android/loganalysis/rule/LocationUsageRuleTest.java
+++ b/javatests/com/android/loganalysis/rule/LocationUsageRuleTest.java
diff --git a/tests/src/com/android/loganalysis/rule/ProcessUsageRuleTest.java b/javatests/com/android/loganalysis/rule/ProcessUsageRuleTest.java
index cc322dc..cc322dc 100644
--- a/tests/src/com/android/loganalysis/rule/ProcessUsageRuleTest.java
+++ b/javatests/com/android/loganalysis/rule/ProcessUsageRuleTest.java
diff --git a/tests/src/com/android/loganalysis/rule/WakelockRuleTest.java b/javatests/com/android/loganalysis/rule/WakelockRuleTest.java
index 6900c07..6900c07 100644
--- a/tests/src/com/android/loganalysis/rule/WakelockRuleTest.java
+++ b/javatests/com/android/loganalysis/rule/WakelockRuleTest.java
diff --git a/tests/src/com/android/loganalysis/rule/WifiStatsRuleTest.java b/javatests/com/android/loganalysis/rule/WifiStatsRuleTest.java
index 984ed20..984ed20 100644
--- a/tests/src/com/android/loganalysis/rule/WifiStatsRuleTest.java
+++ b/javatests/com/android/loganalysis/rule/WifiStatsRuleTest.java
diff --git a/tests/src/com/android/loganalysis/util/ArrayUtilTest.java b/javatests/com/android/loganalysis/util/ArrayUtilTest.java
index 98d85e6..98d85e6 100644
--- a/tests/src/com/android/loganalysis/util/ArrayUtilTest.java
+++ b/javatests/com/android/loganalysis/util/ArrayUtilTest.java
diff --git a/tests/src/com/android/loganalysis/util/LogPatternUtilTest.java b/javatests/com/android/loganalysis/util/LogPatternUtilTest.java
index 98226d4..98226d4 100644
--- a/tests/src/com/android/loganalysis/util/LogPatternUtilTest.java
+++ b/javatests/com/android/loganalysis/util/LogPatternUtilTest.java
diff --git a/tests/src/com/android/loganalysis/util/LogTailUtilTest.java b/javatests/com/android/loganalysis/util/LogTailUtilTest.java
index d7316c6..d7316c6 100644
--- a/tests/src/com/android/loganalysis/util/LogTailUtilTest.java
+++ b/javatests/com/android/loganalysis/util/LogTailUtilTest.java
diff --git a/tests/src/com/android/loganalysis/util/RegexTrieTest.java b/javatests/com/android/loganalysis/util/RegexTrieTest.java
index 4b689b6..4b689b6 100644
--- a/tests/src/com/android/loganalysis/util/RegexTrieTest.java
+++ b/javatests/com/android/loganalysis/util/RegexTrieTest.java
diff --git a/tests/src/com/android/loganalysis/util/config/ArgsOptionParserTest.java b/javatests/com/android/loganalysis/util/config/ArgsOptionParserTest.java
index 524cfa0..524cfa0 100644
--- a/tests/src/com/android/loganalysis/util/config/ArgsOptionParserTest.java
+++ b/javatests/com/android/loganalysis/util/config/ArgsOptionParserTest.java
diff --git a/tests/src/com/android/loganalysis/util/config/OptionSetterTest.java b/javatests/com/android/loganalysis/util/config/OptionSetterTest.java
index 308e895..308e895 100644
--- a/tests/src/com/android/loganalysis/util/config/OptionSetterTest.java
+++ b/javatests/com/android/loganalysis/util/config/OptionSetterTest.java
diff --git a/tests/src/com/android/loganalysis/util/config/OptionUpdateRuleTest.java b/javatests/com/android/loganalysis/util/config/OptionUpdateRuleTest.java
index 0e899ec..0e899ec 100644
--- a/tests/src/com/android/loganalysis/util/config/OptionUpdateRuleTest.java
+++ b/javatests/com/android/loganalysis/util/config/OptionUpdateRuleTest.java
diff --git a/src/com/android/loganalysis/item/BootEventItem.java b/src/com/android/loganalysis/item/BootEventItem.java
new file mode 100644
index 0000000..ec948bb
--- /dev/null
+++ b/src/com/android/loganalysis/item/BootEventItem.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2021 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 java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** An {@link IItem} used to store boot event info logged in event log. */
+public class BootEventItem extends GenericItem {
+
+ /** Constant for JSON output */
+ public static final String EVENT_NAME = "EVENT_NAME";
+
+ public static final String EVENT_DURATION = "DURATION";
+
+ private static final Set<String> ATTRIBUTES =
+ new HashSet<String>(Arrays.asList(EVENT_NAME, EVENT_DURATION));
+
+ /** The constructor for {@link BootEventItem}. */
+ public BootEventItem() {
+ super(ATTRIBUTES);
+ }
+
+ public String getEventName() {
+ return (String) getAttribute(EVENT_NAME);
+ }
+
+ public void setEventName(String eventName) {
+ setAttribute(EVENT_NAME, eventName);
+ }
+
+ public Double getDuration() {
+ return (Double) getAttribute(EVENT_DURATION);
+ }
+
+ public void setDuration(Double eventDuration) {
+ setAttribute(EVENT_DURATION, eventDuration);
+ }
+}
diff --git a/src/com/android/loganalysis/item/DmesgItem.java b/src/com/android/loganalysis/item/DmesgItem.java
index de70145..43fc04d 100644
--- a/src/com/android/loganalysis/item/DmesgItem.java
+++ b/src/com/android/loganalysis/item/DmesgItem.java
@@ -33,6 +33,8 @@ public class DmesgItem extends GenericItem {
private List<DmesgActionInfoItem> mActionInfoItems = new ArrayList<>();
+ private Map<String, DmesgModuleInfoItem> mModuleInfoItems = new HashMap<>();
+
public DmesgItem() {
super(Collections.emptySet());
}
@@ -80,4 +82,16 @@ public class DmesgItem extends GenericItem {
mActionInfoItems.add(actionInfoItem);
}
+ /** @return moduleInfoItem */
+ public Map<String, DmesgModuleInfoItem> getModuleInfoItems() {
+ return mModuleInfoItems;
+ }
+
+ /**
+ * @param key to identify module info item
+ * @param moduleInfoItem to be added to the list
+ */
+ public void addModuleInfoItem(String key, DmesgModuleInfoItem moduleInfoItem) {
+ mModuleInfoItems.put(key, moduleInfoItem);
+ }
}
diff --git a/src/com/android/loganalysis/item/DmesgModuleInfoItem.java b/src/com/android/loganalysis/item/DmesgModuleInfoItem.java
new file mode 100644
index 0000000..dca6721
--- /dev/null
+++ b/src/com/android/loganalysis/item/DmesgModuleInfoItem.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (C) 2021 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 java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+/** An {@link IItem} used to store Module info logged in dmesg. */
+public class DmesgModuleInfoItem extends GenericItem {
+
+ /** Constant for JSON output */
+ public static final String MODULE_NAME = "MODULE_NAME";
+
+ public static final String MODULE_START_TIME = "MODULE_START_TIME";
+
+ public static final String MODULE_END_TIME = "MODULE_END_TIME";
+
+ public static final String MODULE_COUNT = "MODULE_COUNT";
+
+ public static final String MODULE_DURATION = "MODULE_DURATION";
+
+ private static final Set<String> ATTRIBUTES =
+ new HashSet<String>(
+ Arrays.asList(
+ MODULE_NAME,
+ MODULE_START_TIME,
+ MODULE_END_TIME,
+ MODULE_COUNT,
+ MODULE_DURATION));
+
+ /** The constructor for {@link DmesgModuleInfoItem}. */
+ public DmesgModuleInfoItem() {
+ super(ATTRIBUTES);
+ }
+
+ /** Set the name of the Module */
+ public void setModuleName(String moduleName) {
+ setAttribute(MODULE_NAME, moduleName);
+ }
+
+ /** Get the name of the Module */
+ public String getModuleName() {
+ return (String) getAttribute(MODULE_NAME);
+ }
+
+ /** Get the count of modules */
+ public String getModuleCount() {
+ return (String) getAttribute(MODULE_COUNT);
+ }
+
+ /** Set the count of modules */
+ public void setModuleCount(String moduleName) {
+ setAttribute(MODULE_COUNT, moduleName);
+ }
+
+ /** Get the start time in msecs */
+ public Long getStartTime() {
+ return (Long) getAttribute(MODULE_START_TIME);
+ }
+
+ /** Set the start time in msecs */
+ public void setStartTime(Long startTime) {
+ setAttribute(MODULE_START_TIME, startTime);
+ }
+
+ /** Get the end time in msecs */
+ public Long getEndTime() {
+ return (Long) getAttribute(MODULE_END_TIME);
+ }
+
+ /** Set the end time in msecs */
+ public void setEndTime(Long endTime) {
+ setAttribute(MODULE_END_TIME, endTime);
+ }
+
+ /**
+ * Get the module loading time in msecs If the start or end time is not present then return -1
+ */
+ public Long getModuleDuration() {
+ if (null != getAttribute(MODULE_DURATION)) {
+ return (Long) getAttribute(MODULE_DURATION);
+ }
+ if (null != getAttribute(MODULE_END_TIME) && null != getAttribute(MODULE_START_TIME)) {
+ long duration = getEndTime() - getStartTime();
+ setModuleDuration(duration);
+ return duration;
+ }
+ return -1L;
+ }
+
+ /** Get the duration in msec */
+ public void setModuleDuration(Long duration) {
+ setAttribute(MODULE_DURATION, duration);
+ }
+
+ @Override
+ public String toString() {
+ return "ModuleInfoItem ["
+ + "getModuleName()="
+ + getModuleName()
+ + ", getStartTime()="
+ + getStartTime()
+ + ", getDuration()="
+ + getModuleDuration()
+ + "]";
+ }
+}
diff --git a/src/com/android/loganalysis/parser/DmesgParser.java b/src/com/android/loganalysis/parser/DmesgParser.java
index ffb6faa..53514d2 100644
--- a/src/com/android/loganalysis/parser/DmesgParser.java
+++ b/src/com/android/loganalysis/parser/DmesgParser.java
@@ -20,6 +20,7 @@ import com.android.loganalysis.item.DmesgActionInfoItem;
import com.android.loganalysis.item.DmesgItem;
import com.android.loganalysis.item.DmesgServiceInfoItem;
import com.android.loganalysis.item.DmesgStageInfoItem;
+import com.android.loganalysis.item.DmesgModuleInfoItem;
import com.google.common.annotations.VisibleForTesting;
@@ -44,6 +45,8 @@ public class DmesgParser implements IParser {
private static final String DURATION = "DURATION";
private static final String UEVENTD = "ueventd";
private static final String INIT = "init";
+ private static final String WAIT_PROPERTY = "Wait for property ";
+ private static final String TOTAL_MODULE = "TOTAL_MODULE";
// Matches: [ 14.822691] init:
private static final String SERVICE_PREFIX = String.format("^\\[\\s+(?<%s>.*)\\] init:\\s+",
@@ -82,14 +85,34 @@ public class DmesgParser implements IParser {
private static final Pattern START_PROCESSING_ACTION =
Pattern.compile(String.format("%s%s", SERVICE_PREFIX, START_PROCESSING_ACTION_PREFIX));
+ // Matches: [ 1.175984] [ T1] init: Loaded 198 kernel modules took 808 ms
+ private static final Pattern MODULES_INFO =
+ Pattern.compile(
+ String.format(
+ "%sLoaded (?<count>\\d+) kernel modules took (?<%s>\\d+) ms.*$",
+ SERVICE_PREFIX, DURATION));
+
+ // Matches: [ 0.503853] [ T1] init: Loading module /lib/modules/exynos_dit.ko with args ''
+ private static final Pattern MODULE_LOADING =
+ Pattern.compile(
+ String.format(
+ "%sLoading module \\S+\\/(?<koname>\\S+)\\.ko with args.*",
+ SERVICE_PREFIX));
+
+ // Matches: [ 0.503803] [ T1] init: Loaded kernel module /lib/modules/boot_device_spi.ko
+ private static final Pattern MODULE_LOADED =
+ Pattern.compile(
+ String.format(
+ "%sLoaded kernel module \\S+\\/(?<koname>\\S+)\\.ko", SERVICE_PREFIX));
+
// Matches: [ 3.791635] ueventd: Coldboot took 0.695055 seconds
private static final String STAGE_SUFFIX= String.format(
"(?<%s>.*)\\s+took\\s+(?<%s>.*)\\s+seconds$", STAGE, DURATION);
private static final Pattern UEVENTD_STAGE_INFO = Pattern.compile(
String.format("%s%s", UEVENTD_PREFIX, STAGE_SUFFIX));
- private static final String PROPERTY_SUFFIX= String.format(
- "(?<%s>.*)\\s+took\\s+(?<%s>.*)ms$", STAGE, DURATION);
+ private static final String PROPERTY_SUFFIX =
+ String.format("Wait for property\\s(?<%s>.*)\\s+took\\s+(?<%s>.*)ms$", STAGE, DURATION);
// Matches [ 7.270487] init: Wait for property 'apexd.status=ready' took 230ms
private static final Pattern WAIT_FOR_PROPERTY_INFO = Pattern.compile(
String.format("%s%s", SERVICE_PREFIX, PROPERTY_SUFFIX));
@@ -151,6 +174,9 @@ public class DmesgParser implements IParser {
if (parseActionInfo(line)) {
return;
}
+ if (parseModuleInfo(line)) {
+ return;
+ }
}
/**
@@ -214,7 +240,8 @@ public class DmesgParser implements IParser {
}
if((match = matches(WAIT_FOR_PROPERTY_INFO, line)) != null) {
DmesgStageInfoItem stageInfoItem = new DmesgStageInfoItem();
- stageInfoItem.setStageName(String.format("%s_%s", INIT, match.group(STAGE)));
+ stageInfoItem.setStageName(
+ String.format("%s_%s%s", INIT, WAIT_PROPERTY, match.group(STAGE)));
stageInfoItem.setDuration((long) Double.parseDouble(match.group(DURATION)));
mDmesgItem.addStageInfoItem(stageInfoItem);
return true;
@@ -249,6 +276,44 @@ public class DmesgParser implements IParser {
}
/**
+ * Parse modules from each {@code line} of dmesg log and store the module name and loading time
+ * in {@link DmesgModuleInfoItem} object
+ *
+ * @param individual {@code line} of the dmesg log
+ * @return {@code true}, if {@code line} indicates start, end of a module loading or the summary
+ * {@code false}, otherwise
+ */
+ @VisibleForTesting
+ boolean parseModuleInfo(String line) {
+ Matcher match = null;
+ if ((match = matches(MODULES_INFO, line)) != null) {
+ DmesgModuleInfoItem moduleInfoItem = new DmesgModuleInfoItem();
+ moduleInfoItem.setModuleName(TOTAL_MODULE);
+ moduleInfoItem.setModuleDuration((long) Double.parseDouble(match.group(DURATION)));
+ moduleInfoItem.setModuleCount(match.group("count"));
+ mDmesgItem.addModuleInfoItem(TOTAL_MODULE, moduleInfoItem);
+ return true;
+ }
+
+ if ((match = matches(MODULE_LOADING, line)) != null) {
+ DmesgModuleInfoItem moduleInfoItem = new DmesgModuleInfoItem();
+ moduleInfoItem.setModuleName(match.group("koname"));
+ moduleInfoItem.setStartTime((long) (Double.parseDouble(match.group(TIMESTAMP)) * 1000));
+ mDmesgItem.addModuleInfoItem(match.group("koname"), moduleInfoItem);
+ return true;
+ } else if ((match = matches(MODULE_LOADED, line)) != null) {
+ if (getModuleInfoItems().containsKey(match.group("koname"))) {
+ DmesgModuleInfoItem moduleInfoItem =
+ getModuleInfoItems().get(match.group("koname"));
+ moduleInfoItem.setEndTime(
+ (long) (Double.parseDouble(match.group(TIMESTAMP)) * 1000));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Checks whether {@code line} matches the given {@link Pattern}.
*
* @return The resulting {@link Matcher} obtained by matching the {@code line} against
@@ -277,4 +342,7 @@ public class DmesgParser implements IParser {
return mDmesgItem.getActionInfoItems();
}
+ public Map<String, DmesgModuleInfoItem> getModuleInfoItems() {
+ return mDmesgItem.getModuleInfoItems();
+ }
} \ No newline at end of file
diff --git a/src/com/android/loganalysis/parser/EventsLogParser.java b/src/com/android/loganalysis/parser/EventsLogParser.java
index 8dc2ca3..b2d6b06 100644
--- a/src/com/android/loganalysis/parser/EventsLogParser.java
+++ b/src/com/android/loganalysis/parser/EventsLogParser.java
@@ -17,6 +17,7 @@
package com.android.loganalysis.parser;
import com.android.loganalysis.item.IItem;
+import com.android.loganalysis.item.BootEventItem;
import com.android.loganalysis.item.LatencyItem;
import com.android.loganalysis.item.TransitionDelayItem;
@@ -34,6 +35,18 @@ import java.util.regex.Pattern;
*/
public class EventsLogParser implements IParser {
+ private static final String DATE = "date";
+ private static final String TIME = "time";
+ private static final String TRANSITION_INFO = "transitioninfo";
+ private static final String PACKAGE_KEY = "806";
+ private static final String ACTIVITY_KEY = "871";
+ private static final String TRANSITION_DELAY_KEY = "319";
+ private static final String STARTING_WINDOW_DELAY_KEY = "321";
+ private static final String COLD_LAUNCH_KEY = "945";
+ private static final String WINDOWS_DRAWN_DELAY_KEY = "322";
+ private static final String BOOT_PROGRESS = "boot_progress_";
+ private static final String STOP_ANIM = "sf_stop_bootanim";
+
// 09-18 23:56:19.376 1140 1221 I sysui_multi_action:
// [319,51,321,50,322,190,325,670,757,761,758,7,759,1,806,com.google.android.calculator,871,
// com.android.calculator2.Calculator,905,0,945,41]
@@ -46,15 +59,21 @@ public class EventsLogParser implements IParser {
+ "(?<time>[0-9:.]*)\\s+\\d+\\s+\\d+ I sysui_latency: \\[(?<action>.*),"
+ "(?<delay>.*)\\]$");
- private static final String DATE = "date";
- private static final String TIME = "time";
- private static final String TRANSITION_INFO = "transitioninfo";
- private static final String PACKAGE_KEY = "806";
- private static final String ACTIVITY_KEY = "871";
- private static final String TRANSITION_DELAY_KEY = "319";
- private static final String STARTING_WINDOW_DELAY_KEY = "321";
- private static final String COLD_LAUNCH_KEY = "945";
- private static final String WINDOWS_DRAWN_DELAY_KEY = "322";
+ // 05-24 09:14:59.999 720 720 I boot_progress_start: 40429
+ private static final Pattern BOOT_DURATION =
+ Pattern.compile(
+ String.format(
+ "^\\d+-\\d+\\s(?<time>[0-9:.]*)\\s+\\S+\\s+\\S+\\sI (?<event>%s\\S+): "
+ + "(?<duration>\\d+)$",
+ BOOT_PROGRESS));
+
+ // 05-24 09:15:20.737 516 542 I sf_stop_bootanim: 61167
+ private static final Pattern STOPANIM_DURATION =
+ Pattern.compile(
+ String.format(
+ "^\\d+-\\d+\\s(?<time>[0-9:.]*)\\s+\\S+\\s+\\S+\\sI (?<event>%s): "
+ + "(?<duration>\\d+)$",
+ STOP_ANIM));
@Override
public IItem parse(List<String> lines) {
@@ -143,6 +162,29 @@ public class EventsLogParser implements IParser {
}
/**
+ * Method to parse the boot information from the events log
+ *
+ * @param input
+ * @return
+ * @throws IOException
+ */
+ public List<BootEventItem> parseBootEventInfo(BufferedReader input) throws IOException {
+ List<BootEventItem> eventItems = new ArrayList<BootEventItem>();
+ String line;
+ while ((line = input.readLine()) != null) {
+ Matcher match = null;
+ if ((match = matches(BOOT_DURATION, line)) != null
+ || (match = matches(STOPANIM_DURATION, line)) != null) {
+ BootEventItem eventItem = new BootEventItem();
+ eventItem.setEventName(match.group("event"));
+ eventItem.setDuration(Double.parseDouble(match.group("duration")));
+ eventItems.add(eventItem);
+ }
+ }
+ return eventItems;
+ }
+
+ /**
* Checks whether {@code line} matches the given {@link Pattern}.
*
* @return The resulting {@link Matcher} obtained by matching the {@code line} against
diff --git a/src/com/android/loganalysis/parser/LogcatParser.java b/src/com/android/loganalysis/parser/LogcatParser.java
index b32536d..366b851 100644
--- a/src/com/android/loganalysis/parser/LogcatParser.java
+++ b/src/com/android/loganalysis/parser/LogcatParser.java
@@ -192,6 +192,9 @@ public class LogcatParser implements IParser {
@Override
public LogcatItem parse(List<String> lines) {
for (String line : lines) {
+ if (line == null) {
+ continue;
+ }
parseLine(line);
}
commit();
diff --git a/tests/Android.mk b/tests/Android.mk
deleted file mode 100644
index e3958cd..0000000
--- a/tests/Android.mk
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2013 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.
-
-LOCAL_PATH := $(call my-dir)
-
-# makefile rules to copy jars to HOST_OUT/tradefed
-# so tradefed.sh can automatically add to classpath
-
-DEST_JAR := $(HOST_OUT)/tradefed/loganalysis-tests.jar
-$(DEST_JAR): $(call intermediates-dir-for,JAVA_LIBRARIES,loganalysis-tests,HOST)/javalib.jar
- $(copy-file-to-new-target)
-
-# this dependency ensure the above rule will be executed if module is built
-$(HOST_OUT_JAVA_LIBRARIES)/loganalysis-tests.jar : $(DEST_JAR)
diff --git a/tests/src/com/android/loganalysis/FuncTests.java b/tests/src/com/android/loganalysis/FuncTests.java
deleted file mode 100644
index 7a06cbd..0000000
--- a/tests/src/com/android/loganalysis/FuncTests.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-import com.android.loganalysis.parser.BugreportParserFuncTest;
-import com.android.loganalysis.parser.LogcatParserFuncTest;
-import com.android.loganalysis.parser.MonkeyLogParserFuncTest;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-/**
- * A test suite for all log analysis functional tests.
- */
-public class FuncTests extends TestSuite {
-
- public FuncTests() {
- super();
-
- addTestSuite(BugreportParserFuncTest.class);
- addTestSuite(LogcatParserFuncTest.class);
- addTestSuite(MonkeyLogParserFuncTest.class);
- }
-
- public static Test suite() {
- return new FuncTests();
- }
-}
diff --git a/tests/src/com/android/loganalysis/UnitTests.java b/tests/src/com/android/loganalysis/UnitTests.java
deleted file mode 100644
index 35359ba..0000000
--- a/tests/src/com/android/loganalysis/UnitTests.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2013 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;
-
-import com.android.loganalysis.item.BatteryDischargeItemTest;
-import com.android.loganalysis.item.BatteryUsageItemTest;
-import com.android.loganalysis.item.DumpsysPackageStatsItemTest;
-import com.android.loganalysis.item.DvmLockSampleItemTest;
-import com.android.loganalysis.item.GenericItemTest;
-import com.android.loganalysis.item.InterruptItemTest;
-import com.android.loganalysis.item.LocationDumpsItemTest;
-import com.android.loganalysis.item.MemInfoItemTest;
-import com.android.loganalysis.item.MonkeyLogItemTest;
-import com.android.loganalysis.item.ProcrankItemTest;
-import com.android.loganalysis.item.SmartMonkeyLogItemTest;
-import com.android.loganalysis.item.SystemPropsItemTest;
-import com.android.loganalysis.item.TopItemTest;
-import com.android.loganalysis.item.WakelockItemTest;
-import com.android.loganalysis.parser.AbstractSectionParserTest;
-import com.android.loganalysis.parser.ActivityServiceParserTest;
-import com.android.loganalysis.parser.AnrParserTest;
-import com.android.loganalysis.parser.BatteryDischargeStatsInfoParserTest;
-import com.android.loganalysis.parser.BatteryStatsDetailedInfoParserTest;
-import com.android.loganalysis.parser.BatteryStatsSummaryInfoParserTest;
-import com.android.loganalysis.parser.BatteryUsageParserTest;
-import com.android.loganalysis.parser.TimingsLogParserTest;
-import com.android.loganalysis.parser.BugreportParserTest;
-import com.android.loganalysis.parser.CompactMemInfoParserTest;
-import com.android.loganalysis.parser.CpuInfoParserTest;
-import com.android.loganalysis.parser.DmesgParserTest;
-import com.android.loganalysis.parser.DumpsysBatteryStatsParserTest;
-import com.android.loganalysis.parser.DumpsysPackageStatsParserTest;
-import com.android.loganalysis.parser.DumpsysParserTest;
-import com.android.loganalysis.parser.DumpsysProcStatsParserTest;
-import com.android.loganalysis.parser.DumpsysProcessMeminfoParserTest;
-import com.android.loganalysis.parser.DumpsysWifiStatsParserTest;
-import com.android.loganalysis.parser.DvmLockSampleParserTest;
-import com.android.loganalysis.parser.EventsLogParserTest;
-import com.android.loganalysis.parser.GfxInfoParserTest;
-import com.android.loganalysis.parser.InterruptParserTest;
-import com.android.loganalysis.parser.JavaCrashParserTest;
-import com.android.loganalysis.parser.KernelLogParserTest;
-import com.android.loganalysis.parser.LocationServiceParserTest;
-import com.android.loganalysis.parser.LogcatParserTest;
-import com.android.loganalysis.parser.MemHealthParserTest;
-import com.android.loganalysis.parser.MemInfoParserTest;
-import com.android.loganalysis.parser.MonkeyLogParserTest;
-import com.android.loganalysis.parser.NativeCrashParserTest;
-import com.android.loganalysis.parser.ProcessUsageParserTest;
-import com.android.loganalysis.parser.ProcrankParserTest;
-import com.android.loganalysis.parser.QtaguidParserTest;
-import com.android.loganalysis.parser.SmartMonkeyLogParserTest;
-import com.android.loganalysis.parser.SystemPropsParserTest;
-import com.android.loganalysis.parser.TopParserTest;
-import com.android.loganalysis.parser.TraceFormatParserTest;
-import com.android.loganalysis.parser.TracesParserTest;
-import com.android.loganalysis.parser.WakelockParserTest;
-import com.android.loganalysis.rule.InterruptRuleTest;
-import com.android.loganalysis.rule.LocationUsageRuleTest;
-import com.android.loganalysis.rule.ProcessUsageRuleTest;
-import com.android.loganalysis.rule.WakelockRuleTest;
-import com.android.loganalysis.rule.WifiStatsRuleTest;
-import com.android.loganalysis.util.ArrayUtilTest;
-import com.android.loganalysis.util.LogPatternUtilTest;
-import com.android.loganalysis.util.LogTailUtilTest;
-import com.android.loganalysis.util.RegexTrieTest;
-import com.android.loganalysis.util.config.ArgsOptionParserTest;
-import com.android.loganalysis.util.config.OptionSetterTest;
-import com.android.loganalysis.util.config.OptionUpdateRuleTest;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-/**
- * A test suite for all log analysis unit tests.
- *
- * <p>All tests listed here should be self-contained, and should not require any external
- * dependencies.
- */
-@RunWith(Suite.class)
-@SuiteClasses({
- // item
- BatteryDischargeItemTest.class,
- BatteryUsageItemTest.class,
- DumpsysPackageStatsItemTest.class,
- DvmLockSampleItemTest.class,
- GenericItemTest.class,
- InterruptItemTest.class,
- LocationDumpsItemTest.class,
- MemInfoItemTest.class,
- MonkeyLogItemTest.class,
- ProcrankItemTest.class,
- SmartMonkeyLogItemTest.class,
- SystemPropsItemTest.class,
- TopItemTest.class,
- WakelockItemTest.class,
-
- // rule
- InterruptRuleTest.class,
- LocationUsageRuleTest.class,
- ProcessUsageRuleTest.class,
- WakelockRuleTest.class,
- WifiStatsRuleTest.class,
-
- // parser
- AbstractSectionParserTest.class,
- ActivityServiceParserTest.class,
- AnrParserTest.class,
- BatteryDischargeStatsInfoParserTest.class,
- BatteryStatsDetailedInfoParserTest.class,
- BatteryStatsSummaryInfoParserTest.class,
- BatteryUsageParserTest.class,
- TimingsLogParserTest.class,
- BugreportParserTest.class,
- CompactMemInfoParserTest.class,
- CpuInfoParserTest.class,
- DmesgParserTest.class,
- DumpsysBatteryStatsParserTest.class,
- DumpsysPackageStatsParserTest.class,
- DumpsysParserTest.class,
- DumpsysProcessMeminfoParserTest.class,
- DumpsysProcStatsParserTest.class,
- DumpsysWifiStatsParserTest.class,
- DvmLockSampleParserTest.class,
- EventsLogParserTest.class,
- GfxInfoParserTest.class,
- InterruptParserTest.class,
- JavaCrashParserTest.class,
- KernelLogParserTest.class,
- LocationServiceParserTest.class,
- LogcatParserTest.class,
- MemHealthParserTest.class,
- MemInfoParserTest.class,
- MonkeyLogParserTest.class,
- NativeCrashParserTest.class,
- ProcessUsageParserTest.class,
- ProcrankParserTest.class,
- QtaguidParserTest.class,
- SmartMonkeyLogParserTest.class,
- SystemPropsParserTest.class,
- TopParserTest.class,
- TraceFormatParserTest.class,
- TracesParserTest.class,
- WakelockParserTest.class,
-
- // util
- ArrayUtilTest.class,
- LogPatternUtilTest.class,
- LogTailUtilTest.class,
- RegexTrieTest.class,
-
- // util.config
- ArgsOptionParserTest.class,
- OptionSetterTest.class,
- OptionUpdateRuleTest.class,
-})
-public class UnitTests {
- // empty of purpose
-}
diff --git a/tests/src/com/android/loganalysis/parser/BugreportParserFuncTest.java b/tests/src/com/android/loganalysis/parser/BugreportParserFuncTest.java
deleted file mode 100644
index 802c5c0..0000000
--- a/tests/src/com/android/loganalysis/parser/BugreportParserFuncTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2011 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.BugreportItem;
-
-import junit.framework.TestCase;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-
-/**
- * Functional tests for {@link BugreportParser}
- */
-public class BugreportParserFuncTest extends TestCase {
- // FIXME: Make bugreport file configurable.
- private static final String BUGREPORT_PATH = "/tmp/bugreport.txt";
-
- /**
- * A test that is intended to force Brillopad to parse a bugreport. The purpose of this is to
- * assist a developer in checking why a given bugreport file might not be parsed correctly by
- * Brillopad.
- */
- public void testParse() throws Exception {
- BufferedReader bugreportReader = new BufferedReader(new FileReader(BUGREPORT_PATH));
- BugreportItem bugreport = null;
- try {
- long start = System.currentTimeMillis();
- bugreport = new BugreportParser().parse(bugreportReader);
- long stop = System.currentTimeMillis();
- System.out.println(String.format("Bugreport took %d ms to parse.", stop - start));
- } finally {
- if (bugreportReader != null) {
- try {
- bugreportReader.close();
- } catch (IOException e) {
- // Ignore
- }
- }
- }
-
- assertNotNull(bugreport);
- assertNotNull(bugreport.getTime());
-
- assertNotNull(bugreport.getSystemProps());
- assertTrue(bugreport.getSystemProps().size() > 0);
-
- assertNotNull(bugreport.getMemInfo());
- assertTrue(bugreport.getMemInfo().size() > 0);
-
- assertNotNull(bugreport.getProcrank());
- assertTrue(bugreport.getProcrank().getPids().size() > 0);
-
- assertNotNull(bugreport.getSystemLog());
- assertNotNull(bugreport.getSystemLog().getStartTime());
- assertNotNull(bugreport.getSystemLog().getStopTime());
-
- assertNotNull(bugreport.getLastKmsg());
-
- System.out.println(String.format("Stats for bugreport:\n" +
- " Time: %s\n" +
- " System Properties: %d items\n" +
- " Mem info: %d items\n" +
- " Procrank: %d items\n" +
- " System Log:\n" +
- " Start time: %s\n" +
- " Stop time: %s\n" +
- " %d ANR(s), %d Java Crash(es), %d Native Crash(es)\n" +
- " %d Kernel Reset(s), %d Kernel Error(s)",
- bugreport.getTime(),
- bugreport.getSystemProps().size(),
- bugreport.getMemInfo().size(),
- bugreport.getProcrank().getPids().size(),
- bugreport.getSystemLog().getStartTime().toString(),
- bugreport.getSystemLog().getStopTime().toString(),
- bugreport.getSystemLog().getAnrs().size(),
- bugreport.getSystemLog().getJavaCrashes().size(),
- bugreport.getSystemLog().getNativeCrashes().size(),
- bugreport.getLastKmsg().getMiscEvents(KernelLogParser.KERNEL_RESET).size(),
- bugreport.getLastKmsg().getMiscEvents(KernelLogParser.KERNEL_ERROR).size()));
- }
-}
-
diff --git a/tests/src/com/android/loganalysis/parser/LogcatParserFuncTest.java b/tests/src/com/android/loganalysis/parser/LogcatParserFuncTest.java
deleted file mode 100644
index 5c43b75..0000000
--- a/tests/src/com/android/loganalysis/parser/LogcatParserFuncTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2011 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.LogcatItem;
-
-import junit.framework.TestCase;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-
-/**
- * Functional tests for {@link LogcatParser}
- */
-public class LogcatParserFuncTest extends TestCase {
- // FIXME: Make logcat file configurable.
- private static final String LOGCAT_PATH = "/tmp/logcat.txt";
-
- /**
- * A test that is intended to force Brillopad to parse a logcat. The purpose of this is to
- * assist a developer in checking why a given logcat file might not be parsed correctly by
- * Brillopad.
- */
- public void testParse() throws Exception {
- BufferedReader logcatReader = new BufferedReader(new FileReader(LOGCAT_PATH));
-
- LogcatItem logcat = null;
- try {
- long start = System.currentTimeMillis();
- logcat = new LogcatParser().parse(logcatReader);
- long stop = System.currentTimeMillis();
- System.out.println(String.format("Logcat took %d ms to parse.", stop - start));
- } finally {
- if (logcatReader != null) {
- try {
- logcatReader.close();
- } catch (IOException e) {
- // Ignore
- }
- } }
-
- assertNotNull(logcat);
- assertNotNull(logcat.getStartTime());
- assertNotNull(logcat.getStopTime());
-
- System.out.println(String.format("Stats for logcat:\n" +
- " Start time: %s\n" +
- " Stop time: %s\n" +
- " %d ANR(s), %d Java Crash(es), %d Native Crash(es)",
- logcat.getStartTime().toString(),
- logcat.getStopTime().toString(),
- logcat.getAnrs().size(),
- logcat.getJavaCrashes().size(),
- logcat.getNativeCrashes().size()));
- }
-}
-
diff --git a/tests/src/com/android/loganalysis/parser/MonkeyLogParserFuncTest.java b/tests/src/com/android/loganalysis/parser/MonkeyLogParserFuncTest.java
deleted file mode 100644
index d4dec36..0000000
--- a/tests/src/com/android/loganalysis/parser/MonkeyLogParserFuncTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2011 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.AnrItem;
-import com.android.loganalysis.item.JavaCrashItem;
-import com.android.loganalysis.item.MonkeyLogItem;
-import com.android.loganalysis.item.MonkeyLogItem.DroppedCategory;
-
-import junit.framework.TestCase;
-
-import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.IOException;
-
-/**
- * Functional tests for {@link MonkeyLogParser}
- */
-public class MonkeyLogParserFuncTest extends TestCase {
- // FIXME: Make monkey log file configurable.
- private static final String MONKEY_LOG_PATH = "/tmp/monkey_log.txt";
-
- /**
- * A test that is intended to force Brillopad to parse a monkey log. The purpose of this is to
- * assist a developer in checking why a given monkey log file might not be parsed correctly by
- * Brillopad.
- */
- public void testParse() throws Exception {
- BufferedReader monkeyLogReader = new BufferedReader(new FileReader(MONKEY_LOG_PATH));
- MonkeyLogItem monkeyLog = null;
- try {
- long start = System.currentTimeMillis();
- monkeyLog = new MonkeyLogParser().parse(monkeyLogReader);
- long stop = System.currentTimeMillis();
- System.out.println(String.format("Monkey log took %d ms to parse.", stop - start));
- } finally {
- if (monkeyLogReader != null) {
- try {
- monkeyLogReader.close();
- } catch (IOException e) {
- // Ignore
- }
- } }
-
- assertNotNull(monkeyLog);
- assertNotNull(monkeyLog.getStartTime());
- assertNotNull(monkeyLog.getStopTime());
- assertNotNull(monkeyLog.getTargetCount());
- assertNotNull(monkeyLog.getThrottle());
- assertNotNull(monkeyLog.getSeed());
- assertNotNull(monkeyLog.getIgnoreSecurityExceptions());
- assertTrue(monkeyLog.getPackages().size() > 0);
- assertTrue(monkeyLog.getCategories().size() > 0);
- assertNotNull(monkeyLog.getIsFinished());
- assertNotNull(monkeyLog.getIntermediateCount());
- assertNotNull(monkeyLog.getTotalDuration());
- assertNotNull(monkeyLog.getStartUptimeDuration());
- assertNotNull(monkeyLog.getStopUptimeDuration());
-
-
- StringBuffer sb = new StringBuffer();
- sb.append("Stats for monkey log:\n");
- sb.append(String.format(" Start time: %s\n", monkeyLog.getStartTime()));
- sb.append(String.format(" Stop time: %s\n", monkeyLog.getStopTime()));
- sb.append(String.format(" Parameters: target-count=%d, throttle=%d, seed=%d, " +
- "ignore-security-exceptions=%b\n",
- monkeyLog.getTargetCount(), monkeyLog.getThrottle(), monkeyLog.getSeed(),
- monkeyLog.getIgnoreSecurityExceptions()));
- sb.append(String.format(" Packages: %s\n", monkeyLog.getPackages()));
- sb.append(String.format(" Categories: %s\n", monkeyLog.getCategories()));
- if (monkeyLog.getNoActivities()) {
- sb.append(" Status: no-activities=true\n");
- } else {
- sb.append(String.format(" Status: finished=%b, final-count=%d, " +
- "intermediate-count=%d\n", monkeyLog.getIsFinished(), monkeyLog.getFinalCount(),
- monkeyLog.getIntermediateCount()));
-
- sb.append(" Dropped events:");
- for (DroppedCategory drop : DroppedCategory.values()) {
- sb.append(String.format(" %s=%d,", drop.toString(),
- monkeyLog.getDroppedCount(drop)));
- }
- sb.deleteCharAt(sb.length()-1);
- sb.append("\n");
- }
- sb.append(String.format(" Run time: duration=%d ms, delta-uptime=%d (%d - %d) ms\n",
- monkeyLog.getTotalDuration(),
- monkeyLog.getStopUptimeDuration() - monkeyLog.getStartUptimeDuration(),
- monkeyLog.getStopUptimeDuration(), monkeyLog.getStartUptimeDuration()));
-
- if (monkeyLog.getCrash() != null && monkeyLog.getCrash() instanceof AnrItem) {
- sb.append(String.format(" Stopped due to ANR\n"));
- }
- if (monkeyLog.getCrash() != null && monkeyLog.getCrash() instanceof JavaCrashItem) {
- sb.append(String.format(" Stopped due to Java crash\n"));
- }
- System.out.println(sb.toString());
- }
-}
-