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"));
     }
 }