summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Songchun Fan <schfan@google.com> 2020-03-31 18:38:52 -0700
committer Songchun Fan <schfan@google.com> 2020-04-09 09:33:34 -0700
commitc296cf746a29f06ef0dbb0c2dfe17fd6ac60a4a4 (patch)
treea481b0a122572209099afe472005ba1f1a94969b
parent34d2844601ec620f6c5eb2c9de9274783ec9bef9 (diff)
[stats] add metrics for package installer v2
// Successful installation: $ out/host/linux-x86/bin/statsd_testdrive -s 98141FFBA005QD 263 ... event_metrics { data { elapsed_timestamp_nanos: 147291968369 atom { package_installer_v2_reported { is_incremental: true package_name: "com.unity.megacity" duration_millis: 1379 return_code: 1 } } } } ... // Failed installation: $ out/host/linux-x86/bin/statsd_testdrive -s 98141FFBA005QD 263 ... event_metrics { data { elapsed_timestamp_nanos: 94418812060 atom { package_installer_v2_reported { is_incremental: true package_name: "" duration_millis: 37 return_code: -20 } } } } ... Test: manual BUG: 152913040 Change-Id: Ibb02122e7007f8e3afd65cbb98236bc37c0d24db
-rw-r--r--cmds/statsd/src/atoms.proto20
-rw-r--r--services/core/java/com/android/server/pm/PackageInstallerSession.java13
2 files changed, 33 insertions, 0 deletions
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 2a1716e0ce2a..38b421f70477 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -420,6 +420,7 @@ message Atom {
RankingSelected ranking_selected = 260 [(module) = "framework"];
TvSettingsUIInteracted tvsettings_ui_interacted = 261 [(module) = "tv_settings"];
LauncherStaticLayout launcher_snapshot = 262 [(module) = "sysui"];
+ PackageInstallerV2Reported package_installer_v2_reported = 263 [(module) = "framework"];
SdkExtensionStatus sdk_extension_status = 354;
}
@@ -9308,6 +9309,25 @@ message TvSettingsUIInteracted {
}
/**
+ * Logs information about a package installation using package installer V2 APIs.
+ *
+ * Logged from:
+ * frameworks/base/services/core/java/com/android/server/pm/PackageInstallerSession.java
+ */
+message PackageInstallerV2Reported {
+ // Whether this installation uses Incremental File System
+ optional bool is_incremental = 1;
+ // Name of the package that is intended to be installed
+ optional string package_name = 2;
+ // The duration between when the install was requested to when the install has completed
+ optional int64 duration_millis = 3;
+ // Installation result in final integer, which are SystemApi's.
+ // Return_code 1 indicates success.
+ // For full list, see frameworks/base/core/java/android/content/pm/PackageManager.java
+ optional int32 return_code = 4;
+}
+
+/**
* Logs settings provider values.
*
* Use DeviceConfig.getProperties to get a list Setting key, query the data from content provider,
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index f07fa501d3a8..2221644bff47 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -128,6 +128,7 @@ import com.android.internal.content.PackageHelper;
import com.android.internal.messages.nano.SystemMessageProto;
import com.android.internal.os.SomeArgs;
import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FrameworkStatsLog;
import com.android.internal.util.IndentingPrintWriter;
import com.android.server.LocalServices;
import com.android.server.pm.Installer.InstallerException;
@@ -1801,6 +1802,15 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
}
+ private void logDataLoaderInstallationSession(int returnCode, String extraMessage) {
+ final long currentTimestamp = System.currentTimeMillis();
+ FrameworkStatsLog.write(FrameworkStatsLog.PACKAGE_INSTALLER_V2_REPORTED,
+ isIncrementalInstallation(),
+ mPackageName,
+ currentTimestamp - createdMillis,
+ returnCode);
+ }
+
/**
* Returns true if the session should attempt to inherit any existing native libraries already
* extracted at the current install location. This is necessary to prevent double loading of
@@ -2789,6 +2799,9 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
}
mCallback.onSessionFinished(this, success);
+ if (isDataLoaderInstallation()) {
+ logDataLoaderInstallationSession(returnCode, msg);
+ }
}
/** {@hide} */