Dump and reset coverage from system_server.
Collect coverage from system_server when doing cross-process coverage.
Test: Unit tests
Bug: 137857876
Change-Id: Ibf226dbc41e3794860d6ea2fd64c1f26c8f6dca3
Merged-In: Ibf226dbc41e3794860d6ea2fd64c1f26c8f6dca3
Merged-In: I10a4079b38f92d85446c4ed2bb3180b5e05a9513
(cherry picked from commit d4221665f8c369a7475675af8cf4307a7f31b03d)
diff --git a/src/com/android/tradefed/util/JavaCodeCoverageFlusher.java b/src/com/android/tradefed/util/JavaCodeCoverageFlusher.java
index 5377163..88a562a 100644
--- a/src/com/android/tradefed/util/JavaCodeCoverageFlusher.java
+++ b/src/com/android/tradefed/util/JavaCodeCoverageFlusher.java
@@ -103,6 +103,9 @@
mDevice.executeShellCommand(String.format(COVERAGE_RESET_FORMAT, processName));
}
}
+
+ // Reset coverage for system_server.
+ mDevice.executeShellCommand("cmd coverage reset");
}
/**
@@ -134,6 +137,10 @@
}
}
+ // Flush coverage for system_server.
+ mDevice.executeShellCommand("cmd coverage dump /data/misc/trace/system_server.ec");
+ coverageFiles.add("/data/misc/trace/system_server.ec");
+
return coverageFiles;
}
}
diff --git a/tests/src/com/android/tradefed/util/JavaCodeCoverageFlusherTest.java b/tests/src/com/android/tradefed/util/JavaCodeCoverageFlusherTest.java
index fcbd4f4..a8cb7de 100644
--- a/tests/src/com/android/tradefed/util/JavaCodeCoverageFlusherTest.java
+++ b/tests/src/com/android/tradefed/util/JavaCodeCoverageFlusherTest.java
@@ -16,6 +16,7 @@
package com.android.tradefed.util;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.contains;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
@@ -85,6 +86,8 @@
verify(mMockDevice)
.executeShellCommand(
"am attach-agent com.android.phone /system/lib/libdumpcoverage.so=reset");
+
+ verify(mMockDevice).executeShellCommand("cmd coverage reset");
}
@Test
@@ -102,6 +105,8 @@
verify(mMockDevice)
.executeShellCommand(
"am attach-agent com.android.phone /system/lib/libdumpcoverage.so=reset");
+
+ verify(mMockDevice).executeShellCommand("cmd coverage reset");
}
@Test
@@ -122,7 +127,8 @@
.containsExactly(
"/data/misc/trace/com.android.bluetooth-123.ec",
"/data/misc/trace/com.google.android.gms.persistent-4567.ec",
- "/data/misc/trace/com.android.phone-890.ec");
+ "/data/misc/trace/com.android.phone-890.ec",
+ "/data/misc/trace/system_server.ec");
verify(mMockDevice)
.executeShellCommand(
@@ -137,6 +143,8 @@
.executeShellCommand(
"am attach-agent com.android.phone /system/lib/libdumpcoverage.so="
+ "dump:/data/misc/trace/com.android.phone-890.ec");
+
+ verify(mMockDevice).executeShellCommand(contains("cmd coverage dump"));
}
@Test
@@ -156,12 +164,16 @@
// com.google.android.gms.persistent (not a valid process, coverage is not flushed).
List<String> coverageFiles = mFlusher.forceCoverageFlush();
- assertThat(coverageFiles).containsExactly("/data/misc/trace/com.android.bluetooth-234.ec");
+ assertThat(coverageFiles)
+ .containsExactly(
+ "/data/misc/trace/com.android.bluetooth-234.ec",
+ "/data/misc/trace/system_server.ec");
verify(mMockDevice).executeShellCommand("pm list packages -a");
verify(mMockDevice)
.executeShellCommand(
"am attach-agent com.android.bluetooth /system/lib/libdumpcoverage.so"
+ "=dump:/data/misc/trace/com.android.bluetooth-234.ec");
+ verify(mMockDevice).executeShellCommand(contains("cmd coverage dump"));
}
}