Benchmark fix.
Previous change removed full GC from uninstall flow. Add a shell command to force full GC. Use the shell command to get to a clean state after install/uninstall cycle. ========================================================================================================================================================== (previous) Runtime.getRuntime().gc(); --------------------------------- com.android.perftests.packagemanager (1 Test(s)) [1/1] android.content.pm.PackageInstallerBenchmark#commit_threeMultiplePackageSessions_untilFinishBenchmark: PASSED (02m10.101s) commit_threeMultiplePackageSessions_untilFinishBenchmark_min (ns): 689576794 commit_threeMultiplePackageSessions_untilFinishBenchmark_median (ns): 714554346 commit_threeMultiplePackageSessions_untilFinishBenchmark_mean (ns): 711425403 commit_threeMultiplePackageSessions_untilFinishBenchmark_standardDeviation: 17602400 --------------------------------- com.android.perftests.packagemanager (1 Test(s)) [1/1] android.content.pm.PackageInstallerBenchmark#commit_threeMultiplePackageSessions_untilFinishBenchmark: PASSED (02m24.778s) commit_threeMultiplePackageSessions_untilFinishBenchmark_min (ns): 733331347 commit_threeMultiplePackageSessions_untilFinishBenchmark_median (ns): 761475101 commit_threeMultiplePackageSessions_untilFinishBenchmark_mean (ns): 768526419 commit_threeMultiplePackageSessions_untilFinishBenchmark_standardDeviation: 30700805 ========================================================================================================================================================== (current) VMRuntime.getRuntime().requestConcurrentGC(); --------------------------------- com.android.perftests.packagemanager (1 Test(s)) [1/1] android.content.pm.PackageInstallerBenchmark#commit_threeMultiplePackageSessions_untilFinishBenchmark: PASSED (01m42.290s) commit_threeMultiplePackageSessions_untilFinishBenchmark_min (ns): 781405493 commit_threeMultiplePackageSessions_untilFinishBenchmark_median (ns): 793544987 commit_threeMultiplePackageSessions_untilFinishBenchmark_mean (ns): 802736110 commit_threeMultiplePackageSessions_untilFinishBenchmark_standardDeviation: 21416153 --------------------------------- com.android.perftests.packagemanager (1 Test(s)) [1/1] android.content.pm.PackageInstallerBenchmark#commit_threeMultiplePackageSessions_untilFinishBenchmark: PASSED (01m55.299s) commit_threeMultiplePackageSessions_untilFinishBenchmark_min (ns): 834772461 commit_threeMultiplePackageSessions_untilFinishBenchmark_median (ns): 845870959 commit_threeMultiplePackageSessions_untilFinishBenchmark_mean (ns): 853225375 commit_threeMultiplePackageSessions_untilFinishBenchmark_standardDeviation: 20008646 ========================================================================================================================================================== (fixed) --------------------------------- com.android.perftests.packagemanager (1 Test(s)) [1/1] android.content.pm.PackageInstallerBenchmark#commit_threeMultiplePackageSessions_untilFinishBenchmark: PASSED (01m53.377s) commit_threeMultiplePackageSessions_untilFinishBenchmark_min (ns): 692397872 commit_threeMultiplePackageSessions_untilFinishBenchmark_median (ns): 724355473 commit_threeMultiplePackageSessions_untilFinishBenchmark_mean (ns): 718845819 commit_threeMultiplePackageSessions_untilFinishBenchmark_standardDeviation: 24269029 --------------------------------- com.android.perftests.packagemanager (1 Test(s)) [1/1] android.content.pm.PackageInstallerBenchmark#commit_threeMultiplePackageSessions_untilFinishBenchmark: PASSED (02m12.683s) commit_threeMultiplePackageSessions_untilFinishBenchmark_min (ns): 745539006 commit_threeMultiplePackageSessions_untilFinishBenchmark_median (ns): 793251286 commit_threeMultiplePackageSessions_untilFinishBenchmark_mean (ns): 788150394 commit_threeMultiplePackageSessions_untilFinishBenchmark_standardDeviation: 27868293 Bug: 222961573 Fixes: 222961573 Test: atest PackageInstallerBenchmark Change-Id: I0dda41781b0de5f3350498a7ca3a6d1296f63a04
This commit is contained in:
parent
4cff41a3f2
commit
2f038309e0
@ -17,10 +17,12 @@
|
||||
package android.content.pm;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.UiAutomation;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentSender;
|
||||
import android.os.HandlerThread;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
import android.perftests.utils.BenchmarkState;
|
||||
import android.perftests.utils.PerfStatusReporter;
|
||||
import android.util.Log;
|
||||
@ -39,7 +41,10 @@ import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
@ -203,13 +208,33 @@ public class PackageInstallerBenchmark {
|
||||
}
|
||||
|
||||
private void uninstallSession(BenchmarkState state, String...packageNames)
|
||||
throws InterruptedException {
|
||||
throws Exception {
|
||||
state.pauseTiming();
|
||||
uninstall(true /* stop at fail */, packageNames);
|
||||
mPackageInstaller.unregisterSessionCallback(mSessionCallback);
|
||||
executeShellCommand("pm gc");
|
||||
state.resumeTiming();
|
||||
}
|
||||
|
||||
private static String executeShellCommand(String command) throws IOException {
|
||||
UiAutomation uiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation();
|
||||
final ParcelFileDescriptor stdout = uiAutomation.executeShellCommand(command);
|
||||
try (InputStream inputStream = new ParcelFileDescriptor.AutoCloseInputStream(stdout);
|
||||
ByteArrayOutputStream result = new ByteArrayOutputStream()) {
|
||||
writeFullStream(inputStream, result);
|
||||
return result.toString("UTF-8");
|
||||
}
|
||||
}
|
||||
|
||||
private static void writeFullStream(InputStream inputStream, OutputStream outputStream)
|
||||
throws IOException {
|
||||
final byte[] buffer = new byte[1024];
|
||||
int length;
|
||||
while ((length = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, length);
|
||||
}
|
||||
}
|
||||
|
||||
@Test(timeout = 600_000L)
|
||||
public void commit_aSingleApkSession_untilFinishBenchmark() throws Exception {
|
||||
uninstall(false /* stop at fail */, TestApp.A);
|
||||
@ -247,8 +272,7 @@ public class PackageInstallerBenchmark {
|
||||
}
|
||||
|
||||
@Test(timeout = 600_000L)
|
||||
public void commit_aMultiplePackagesSession_untilFinishBenchmark()
|
||||
throws IOException, InterruptedException {
|
||||
public void commit_aMultiplePackagesSession_untilFinishBenchmark() throws Exception {
|
||||
uninstall(false /* stop at fail */, TestApp.A, TestApp.B, TestApp.C);
|
||||
|
||||
final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
|
||||
@ -269,8 +293,7 @@ public class PackageInstallerBenchmark {
|
||||
}
|
||||
|
||||
@Test(timeout = 600_000L)
|
||||
public void commit_threeMultiplePackageSessions_untilFinishBenchmark()
|
||||
throws Exception {
|
||||
public void commit_threeMultiplePackageSessions_untilFinishBenchmark() throws Exception {
|
||||
uninstall(false /* stop at fail */, TestApp.A, TestApp.B, TestApp.C);
|
||||
|
||||
final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
|
||||
@ -293,8 +316,7 @@ public class PackageInstallerBenchmark {
|
||||
}
|
||||
|
||||
@Test(timeout = 600_000L)
|
||||
public void commit_aMultipleApksSession_untilFinishBenchmark()
|
||||
throws IOException, InterruptedException {
|
||||
public void commit_aMultipleApksSession_untilFinishBenchmark() throws Exception {
|
||||
uninstall(false /* stop at fail */, TestApp.A);
|
||||
|
||||
final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
|
||||
|
@ -188,6 +188,8 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
return runDump();
|
||||
case "list":
|
||||
return runList();
|
||||
case "gc":
|
||||
return runGc();
|
||||
case "resolve-activity":
|
||||
return runResolveActivity();
|
||||
case "query-activities":
|
||||
@ -687,6 +689,13 @@ class PackageManagerShellCommand extends ShellCommand {
|
||||
return -1;
|
||||
}
|
||||
|
||||
private int runGc() throws RemoteException {
|
||||
Runtime.getRuntime().gc();
|
||||
final PrintWriter pw = getOutPrintWriter();
|
||||
pw.println("Ok");
|
||||
return 0;
|
||||
}
|
||||
|
||||
private int runListFeatures() throws RemoteException {
|
||||
final PrintWriter pw = getOutPrintWriter();
|
||||
final List<FeatureInfo> list = mInterface.getSystemAvailableFeatures().getList();
|
||||
|
Loading…
x
Reference in New Issue
Block a user