[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
This commit is contained in:
Songchun Fan
2020-03-31 18:38:52 -07:00
parent 34d2844601
commit c296cf746a
2 changed files with 33 additions and 0 deletions

View File

@@ -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;
}
@@ -9307,6 +9308,25 @@ message TvSettingsUIInteracted {
optional string additional_info = 3;
}
/**
* 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.
*

View File

@@ -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} */