From 5caaa9d8542585e537ac762c35879eb42dd6bbb4 Mon Sep 17 00:00:00 2001 From: Chenjie Yu Date: Tue, 6 Mar 2018 15:48:54 -0800 Subject: [PATCH] Clean up atoms.proto changes are: 1) for pushed atoms, use attribution node in place of uid when appropriate 2) name changes to be more consistent Bug: 73823969 Test: manual test Change-Id: Iacf7186dbd7a2282f7fe481f43dbbf92e1165b47 --- cmds/statsd/benchmark/metric_util.cpp | 16 +- cmds/statsd/src/atoms.proto | 160 +++++++++--------- .../src/external/StatsPullerManagerImpl.cpp | 4 +- cmds/statsd/tests/FieldValue_test.cpp | 2 +- .../tests/e2e/GaugeMetric_e2e_push_test.cpp | 112 ++++++------ .../tests/guardrail/StatsdStats_test.cpp | 4 +- cmds/statsd/tests/statsd_test_util.cpp | 32 ++-- .../server/am/ActivityManagerService.java | 31 ++-- .../server/am/ActivityMetricsLogger.java | 18 +- .../java/com/android/server/am/AppErrors.java | 3 + .../server/am/BatteryStatsService.java | 20 +-- .../server/stats/StatsCompanionService.java | 6 +- 12 files changed, 205 insertions(+), 203 deletions(-) diff --git a/cmds/statsd/benchmark/metric_util.cpp b/cmds/statsd/benchmark/metric_util.cpp index b67764bd5130a..50b05cd5b1d86 100644 --- a/cmds/statsd/benchmark/metric_util.cpp +++ b/cmds/statsd/benchmark/metric_util.cpp @@ -127,25 +127,25 @@ AtomMatcher CreateSyncEndAtomMatcher() { } AtomMatcher CreateActivityForegroundStateChangedAtomMatcher( - const string& name, ActivityForegroundStateChanged::Activity activity) { + const string& name, ActivityForegroundStateChanged::State state) { AtomMatcher atom_matcher; atom_matcher.set_id(StringToId(name)); auto simple_atom_matcher = atom_matcher.mutable_simple_atom_matcher(); simple_atom_matcher->set_atom_id(android::util::ACTIVITY_FOREGROUND_STATE_CHANGED); auto field_value_matcher = simple_atom_matcher->add_field_value_matcher(); field_value_matcher->set_field(4); // Activity field. - field_value_matcher->set_eq_int(activity); + field_value_matcher->set_eq_int(state); return atom_matcher; } AtomMatcher CreateMoveToBackgroundAtomMatcher() { return CreateActivityForegroundStateChangedAtomMatcher( - "MoveToBackground", ActivityForegroundStateChanged::MOVE_TO_BACKGROUND); + "MoveToBackground", ActivityForegroundStateChanged::BACKGROUND); } AtomMatcher CreateMoveToForegroundAtomMatcher() { return CreateActivityForegroundStateChangedAtomMatcher( - "MoveToForeground", ActivityForegroundStateChanged::MOVE_TO_FOREGROUND); + "MoveToForeground", ActivityForegroundStateChanged::FOREGROUND); } Predicate CreateScheduledJobPredicate() { @@ -315,25 +315,25 @@ std::unique_ptr CreateReleaseWakelockEvent( } std::unique_ptr CreateActivityForegroundStateChangedEvent( - const int uid, const ActivityForegroundStateChanged::Activity activity, uint64_t timestampNs) { + const int uid, const ActivityForegroundStateChanged::State state, uint64_t timestampNs) { auto event = std::make_unique( android::util::ACTIVITY_FOREGROUND_STATE_CHANGED, timestampNs); event->write(uid); event->write("pkg_name"); event->write("class_name"); - event->write(activity); + event->write(state); event->init(); return event; } std::unique_ptr CreateMoveToBackgroundEvent(const int uid, uint64_t timestampNs) { return CreateActivityForegroundStateChangedEvent( - uid, ActivityForegroundStateChanged::MOVE_TO_BACKGROUND, timestampNs); + uid, ActivityForegroundStateChanged::BACKGROUND, timestampNs); } std::unique_ptr CreateMoveToForegroundEvent(const int uid, uint64_t timestampNs) { return CreateActivityForegroundStateChangedEvent( - uid, ActivityForegroundStateChanged::MOVE_TO_FOREGROUND, timestampNs); + uid, ActivityForegroundStateChanged::FOREGROUND, timestampNs); } std::unique_ptr CreateSyncStateChangedEvent( diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto index cfb9d87df87ba..7fe8e6208e1e8 100644 --- a/cmds/statsd/src/atoms.proto +++ b/cmds/statsd/src/atoms.proto @@ -16,7 +16,6 @@ syntax = "proto2"; -// TODO: Not the right package and class name package android.os.statsd; option java_package = "com.android.os"; option java_outer_classname = "AtomsProto"; @@ -49,7 +48,7 @@ message Atom { oneof pushed { // For StatsLog reasons, 1 is illegal and will not work. Must start at 2. BleScanStateChanged ble_scan_state_changed = 2; - // TODO: 3 is blank, but need not be + // 3 is available for use BleScanResultReceived ble_scan_result_received = 4; SensorStateChanged sensor_state_changed = 5; GpsScanStateChanged gps_scan_state_changed = 6; @@ -60,12 +59,12 @@ message Atom { LongPartialWakelockStateChanged long_partial_wakelock_state_changed = 11; MobileRadioPowerStateChanged mobile_radio_power_state_changed = 12; WifiRadioPowerStateChanged wifi_radio_power_state_changed = 13; - // TODO: 14-19 are blank, but need not be + // 14 - 19 are available BatterySaverModeStateChanged battery_saver_mode_state_changed = 20; DeviceIdleModeStateChanged device_idle_mode_state_changed = 21; DeviceIdlingModeStateChanged device_idling_mode_state_changed = 22; AudioStateChanged audio_state_changed = 23; - MediaCodecActivityChanged media_codec_activity_changed = 24; + MediaCodecStateChanged media_codec_state_changed = 24; CameraStateChanged camera_state_changed = 25; FlashlightStateChanged flashlight_state_changed = 26; UidProcessStateChanged uid_process_state_changed = 27; @@ -74,8 +73,7 @@ message Atom { BatteryLevelChanged battery_level_changed = 30; ChargingStateChanged charging_state_changed = 31; PluggedStateChanged plugged_state_changed = 32; - // TODO: 33 is blank, but is available for use. - DeviceOnStatusChanged device_on_status_changed = 34; + // 33 - 34 are available WakeupAlarmOccurred wakeup_alarm_occurred = 35; KernelWakeupReported kernel_wakeup_reported = 36; WifiLockStateChanged wifi_lock_state_changed = 37; @@ -86,12 +84,12 @@ message Atom { ActivityForegroundStateChanged activity_foreground_state_changed = 42; IsolatedUidChanged isolated_uid_changed = 43; PacketWakeupOccurred packet_wakeup_occurred = 44; - DropboxErrorChanged dropbox_error_changed = 45; + // 45 is available AnomalyDetected anomaly_detected = 46; AppBreadcrumbReported app_breadcrumb_reported = 47; - AppStartChanged app_start_changed = 48; - AppStartCancelChanged app_start_cancel_changed = 49; - AppStartFullyDrawnChanged app_start_fully_drawn_changed = 50; + AppStartOccurred app_start_occurred = 48; + AppStartCanceled app_start_canceled = 49; + AppStartFullyDrawn app_start_fully_drawn = 50; LmkKillOccurred lmk_kill_occurred = 51; PictureInPictureStateChanged picture_in_picture_state_changed = 52; WifiMulticastLockStateChanged wifi_multicast_lock_state_changed = 53; @@ -106,7 +104,7 @@ message Atom { KeyguardStateChanged keyguard_state_changed = 62; KeyguardBouncerStateChanged keyguard_bouncer_state_changed = 63; KeyguardBouncerPasswordEntered keyguard_bouncer_password_entered = 64; - AppDied app_died=65; + AppDied app_died = 65; ResourceConfigurationChanged resource_configuration_changed = 66; BluetoothEnabledStateChanged bluetooth_enabled_state_changed = 67; BluetoothConnectionStateChanged bluetooth_connection_state_changed = 68; @@ -119,6 +117,12 @@ message Atom { MobileConnectionStateChanged mobile_connection_state_changed = 75; MobileRadioTechnologyChanged mobile_radio_technology_changed = 76; UsbDeviceAttached usb_device_attached = 77; + AppCrashOccurred app_crash_occurred = 78; + ANROccurred anr_occurred = 79; + WTFOccurred wtf_occurred = 80; + LowMemReported low_mem_reported = 81; + + } // Pulled events will start at field 10000. @@ -134,7 +138,7 @@ message Atom { CpuTimePerFreq cpu_time_per_freq = 10008; CpuTimePerUid cpu_time_per_uid = 10009; CpuTimePerUidFreq cpu_time_per_uid_freq = 10010; - WifiActivityEnergyInfo wifi_activity_energy_info = 10011; + WifiActivityInfo wifi_activity_info = 10011; ModemActivityInfo modem_activity_info = 10012; BluetoothActivityInfo bluetooth_activity_info = 10007; ProcessMemoryState process_memory_state = 10013; @@ -224,21 +228,19 @@ message UidProcessStateChanged { * frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java */ message ProcessLifeCycleStateChanged { - // TODO: should be a string tagged w/ uid annotation optional int32 uid = 1 [(is_uid) = true]; // The process name (usually same as the app name). - optional string name = 2; + optional string process_name = 2; // What lifecycle state the process changed to. // This enum is specific to atoms.proto. - enum Event { - PROCESS_FINISHED = 0; - PROCESS_STARTED = 1; - PROCESS_CRASHED = 2; - PROCESS_ANRED = 3; + enum State { + FINISHED = 0; + STARTED = 1; + CRASHED = 2; } - optional Event event = 3; + optional State state = 3; } /** @@ -247,7 +249,6 @@ message ProcessLifeCycleStateChanged { * Logged from: * packages/apps/Bluetooth/src/com/android/bluetooth/gatt/AppScanStats.java */ -// TODO: Consider changing to tracking per-scanner-id (log from AppScanStats). message BleScanStateChanged { repeated AttributionNode attribution_node = 1; @@ -278,7 +279,7 @@ message BleScanResultReceived { repeated AttributionNode attribution_node = 1; // Number of ble scan results returned. - optional int32 num_of_results = 2; + optional int32 num_results = 2; } /** @@ -290,7 +291,6 @@ message BleScanResultReceived { message SensorStateChanged { repeated AttributionNode attribution_node = 1; - // TODO: Is there a way to get the actual name of the sensor? // The id (int) of the sensor. optional int32 sensor_id = 2; @@ -329,7 +329,7 @@ message SyncStateChanged { repeated AttributionNode attribution_node = 1; // Name of the sync (as named in the app). Can be chosen at run-time. - optional string name = 2; + optional string sync_name = 2; enum State { OFF = 0; @@ -348,7 +348,7 @@ message ScheduledJobStateChanged { repeated AttributionNode attribution_node = 1; // Name of the job (as named in the app) - optional string name = 2; + optional string job_name = 2; enum State { FINISHED = 0; @@ -387,7 +387,7 @@ message AudioStateChanged { * Logged from: * frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java */ -message MediaCodecActivityChanged { +message MediaCodecStateChanged { repeated AttributionNode attribution_node = 1; enum State { @@ -561,22 +561,6 @@ message PluggedStateChanged { optional android.os.BatteryPluggedStateEnum state = 1; } -// TODO: Define this more precisely. -// TODO: Log the ON state somewhere. It isn't currently logged anywhere. -/** - * Logs when the device turns off or on. - * - * Logged from: - * frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java - */ -message DeviceOnStatusChanged { - enum State { - OFF = 0; - ON = 1; - } - optional State state = 1; -} - /** * Logs when an app's wakeup alarm fires. * @@ -598,8 +582,7 @@ message WakeupAlarmOccurred { * frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java */ message MobileRadioPowerStateChanged { - // TODO: Add attribution instead of uid? - optional int32 uid = 1 [(is_uid) = true]; + repeated AttributionNode attribution_node = 1; // Power state, from frameworks/base/core/proto/android/telephony/enums.proto. optional android.telephony.DataConnectionPowerStateEnum state = 2; @@ -613,8 +596,7 @@ message MobileRadioPowerStateChanged { * frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java */ message WifiRadioPowerStateChanged { - // TODO: Add attribution instead of uid? - optional int32 uid = 1 [(is_uid) = true]; + repeated AttributionNode attribution_node = 1; // Power state, from frameworks/base/core/proto/android/telephony/enums.proto. optional android.telephony.DataConnectionPowerStateEnum state = 2; @@ -1154,7 +1136,6 @@ message ChargeCyclesReported { message DaveyOccurred { // The UID that logged this atom. optional int32 uid = 1 [(is_uid) = true]; - ; // Amount of time it took to render the frame. Should be >=700ms. optional int64 jank_duration_millis = 2; @@ -1221,42 +1202,70 @@ message ActivityForegroundStateChanged { optional string pkg_name = 2; optional string class_name = 3; - enum Activity { - MOVE_TO_BACKGROUND = 0; - MOVE_TO_FOREGROUND = 1; + enum State { + BACKGROUND = 0; + FOREGROUND = 1; } - optional Activity activity = 4; + optional State state = 4; } /** - * Logs when an error is written to dropbox. + * Logs when an app crashes. * Logged from: * frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java */ -message DropboxErrorChanged { - // The uid if available. -1 means not available. +message AppCrashOccurred { optional int32 uid = 1 [(is_uid) = true]; - // Tag used when recording this error to dropbox. Contains data_ or system_ prefix. - optional string tag = 2; + optional string event_type = 2; // The name of the process. + // system_server if it is not by an app optional string process_name = 3; // The pid if available. -1 means not available. optional sint32 pid = 4; +} - // 1 indicates is instant app. -1 indicates Not applicable. - optional sint32 is_instant_app = 5; +/** + * Logs when a WTF (What a Terrible Failure) happened. + * Logged from: + * frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java + */ +message WTFOccurred { + optional int32 uid = 1 [(is_uid) = true]; - // The activity name if available. - optional string activity_name = 6; + optional string tag = 2; - // The package name if available. - optional string package_name = 7; + // The name of the process. + // system_server if it is not by an app + optional string process_name = 3; - // 1 indicates in foreground. -1 indicates not available. - optional sint32 is_foreground = 8; + // The pid if available. -1 means not available. + optional sint32 pid = 4; +} + +/** + * Logs when system server reports low memory. + * Logged from: + * frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java + */ +message LowMemReported { +} + +/** + * Logs when an app ANR (App Not Responding) occurs. + * Logged from: + * frameworks/base/services/core/java/com/android/server/am/AppErrors.java + */ +message ANROccurred { + optional int32 uid = 1 [(is_uid) = true]; + + optional string process_name = 2; + + optional string short_component_name = 3; + + optional string reason = 4; } /* @@ -1299,7 +1308,7 @@ message AnomalyDetected { optional int64 alert_id = 3; } -message AppStartChanged { +message AppStartOccurred { // The uid if available. -1 means not available. optional int32 uid = 1 [(is_uid) = true]; @@ -1307,7 +1316,7 @@ message AppStartChanged { optional string pkg_name = 2; enum TransitionType { - APP_START_TRANSITION_TYPE_UNKNOWN = 0; + UNKNOWN = 0; WARM = 1; HOT = 2; COLD = 3; @@ -1346,7 +1355,7 @@ message AppStartChanged { optional int32 package_optimization_compilation_reason = 15; } -message AppStartCancelChanged { +message AppStartCanceled { // The uid if available. -1 means not available. optional int32 uid = 1 [(is_uid) = true]; @@ -1354,7 +1363,7 @@ message AppStartCancelChanged { optional string pkg_name = 2; enum TransitionType { - APP_START_TRANSITION_TYPE_UNKNOWN = 0; + UNKNOWN = 0; WARM = 1; HOT = 2; COLD = 3; @@ -1366,7 +1375,7 @@ message AppStartCancelChanged { optional string activity_name = 4; } -message AppStartFullyDrawnChanged { +message AppStartFullyDrawn { // The uid if available. -1 means not available. optional int32 uid = 1 [(is_uid) = true]; @@ -1374,7 +1383,7 @@ message AppStartFullyDrawnChanged { optional string pkg_name = 2; enum TransitionType { - APP_START_TRANSITION_TYPE_UNKNOWN = 0; + UNKNOWN = 0; WITH_BUNDLE = 1; WITHOUT_BUNDLE = 2; } @@ -1459,8 +1468,8 @@ message ForegroundServiceStateChanged { * frameworks/base/core/java/com/android/internal/os/BatteryStatsImpl.java */ message IsolatedUidChanged { - // NOTE: DO NOT annotate uid field in this atom. This atom is specially handled in statsd. // The host UID. Generally, we should attribute metrics from the isolated uid to the host uid. + // NOTE: DO NOT annotate uid field in this atom. This atom is specially handled in statsd. optional int32 parent_uid = 1; optional int32 isolated_uid = 2; @@ -1621,9 +1630,8 @@ message WifiBytesTransfer { message WifiBytesTransferByFgBg { optional int32 uid = 1 [(is_uid) = true]; - // 1 denotes foreground and 0 denotes background. This is called Set in - // NetworkStats. - optional int32 is_foreground = 2; + // 1 denotes foreground and 0 denotes background. This is called Set in NetworkStats. + optional bool is_foreground = 2; optional int64 rx_bytes = 3; @@ -1663,7 +1671,7 @@ message MobileBytesTransferByFgBg { // 1 denotes foreground and 0 denotes background. This is called Set in // NetworkStats. - optional int32 is_foreground = 2; + optional bool is_foreground = 2; optional int64 rx_bytes = 3; @@ -1760,7 +1768,7 @@ message CpuTimePerUidFreq { /** * Pulls Wifi Controller Activity Energy Info */ -message WifiActivityEnergyInfo { +message WifiActivityInfo { // timestamp(wall clock) of record creation optional uint64 timestamp_millis = 1; // stack reported state diff --git a/cmds/statsd/src/external/StatsPullerManagerImpl.cpp b/cmds/statsd/src/external/StatsPullerManagerImpl.cpp index 0e23bf01074c9..2f0e88595d45e 100644 --- a/cmds/statsd/src/external/StatsPullerManagerImpl.cpp +++ b/cmds/statsd/src/external/StatsPullerManagerImpl.cpp @@ -120,11 +120,11 @@ const std::map StatsPullerManagerImpl::kAllPullAtomInfo = { 1 * NS_PER_SEC, new StatsCompanionServicePuller(android::util::CPU_CLUSTER_TIME)}}, // wifi_activity_energy_info - {android::util::WIFI_ACTIVITY_ENERGY_INFO, + {android::util::WIFI_ACTIVITY_INFO, {{}, {}, 1 * NS_PER_SEC, - new StatsCompanionServicePuller(android::util::WIFI_ACTIVITY_ENERGY_INFO)}}, + new StatsCompanionServicePuller(android::util::WIFI_ACTIVITY_INFO)}}, // modem_activity_info {android::util::MODEM_ACTIVITY_INFO, {{}, diff --git a/cmds/statsd/tests/FieldValue_test.cpp b/cmds/statsd/tests/FieldValue_test.cpp index 73e7c44dc3da0..5a6aba624d7d5 100644 --- a/cmds/statsd/tests/FieldValue_test.cpp +++ b/cmds/statsd/tests/FieldValue_test.cpp @@ -356,7 +356,7 @@ TEST(AtomMatcherTest, TestWriteAtomToProto) { EXPECT_EQ("location1", atom.attribution_node(0).tag()); EXPECT_EQ(2222, atom.attribution_node(1).uid()); EXPECT_EQ("location2", atom.attribution_node(1).tag()); - EXPECT_EQ(999, atom.num_of_results()); + EXPECT_EQ(999, atom.num_results()); } diff --git a/cmds/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp b/cmds/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp index 2e6a0f05a3412..2b91324a9d193 100644 --- a/cmds/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp +++ b/cmds/statsd/tests/e2e/GaugeMetric_e2e_push_test.cpp @@ -34,7 +34,7 @@ StatsdConfig CreateStatsdConfigForPushedEvent(const GaugeMetric::SamplingType sa *config.add_atom_matcher() = CreateMoveToBackgroundAtomMatcher(); *config.add_atom_matcher() = CreateMoveToForegroundAtomMatcher(); - auto atomMatcher = CreateSimpleAtomMatcher("", android::util::APP_START_CHANGED); + auto atomMatcher = CreateSimpleAtomMatcher("", android::util::APP_START_OCCURRED); *config.add_atom_matcher() = atomMatcher; auto isInBackgroundPredicate = CreateIsInBackgroundPredicate(); @@ -49,18 +49,18 @@ StatsdConfig CreateStatsdConfigForPushedEvent(const GaugeMetric::SamplingType sa gaugeMetric->mutable_gauge_fields_filter()->set_include_all(false); gaugeMetric->set_sampling_type(sampling_type); auto fieldMatcher = gaugeMetric->mutable_gauge_fields_filter()->mutable_fields(); - fieldMatcher->set_field(android::util::APP_START_CHANGED); + fieldMatcher->set_field(android::util::APP_START_OCCURRED); fieldMatcher->add_child()->set_field(3); // type (enum) fieldMatcher->add_child()->set_field(4); // activity_name(str) fieldMatcher->add_child()->set_field(7); // activity_start_msec(int64) *gaugeMetric->mutable_dimensions_in_what() = - CreateDimensions(android::util::APP_START_CHANGED, {1 /* uid field */ }); + CreateDimensions(android::util::APP_START_OCCURRED, {1 /* uid field */ }); gaugeMetric->set_bucket(FIVE_MINUTES); auto links = gaugeMetric->add_links(); links->set_condition(isInBackgroundPredicate.id()); auto dimensionWhat = links->mutable_fields_in_what(); - dimensionWhat->set_field(android::util::APP_START_CHANGED); + dimensionWhat->set_field(android::util::APP_START_OCCURRED); dimensionWhat->add_child()->set_field(1); // uid field. auto dimensionCondition = links->mutable_fields_in_condition(); dimensionCondition->set_field(android::util::ACTIVITY_FOREGROUND_STATE_CHANGED); @@ -68,12 +68,12 @@ StatsdConfig CreateStatsdConfigForPushedEvent(const GaugeMetric::SamplingType sa return config; } -std::unique_ptr CreateAppStartChangedEvent( - const int uid, const string& pkg_name, AppStartChanged::TransitionType type, +std::unique_ptr CreateAppStartOccurredEvent( + const int uid, const string& pkg_name, AppStartOccurred::TransitionType type, const string& activity_name, const string& calling_pkg_name, const bool is_instant_app, int64_t activity_start_msec, uint64_t timestampNs) { auto logEvent = std::make_unique( - android::util::APP_START_CHANGED, timestampNs); + android::util::APP_START_OCCURRED, timestampNs); logEvent->write(uid); logEvent->write(pkg_name); logEvent->write(type); @@ -112,32 +112,32 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) { appUid1, bucketStartTimeNs + 2 * bucketSizeNs + 100)); - events.push_back(CreateAppStartChangedEvent( - appUid1, "app1", AppStartChanged::WARM, "activity_name1", "calling_pkg_name1", + events.push_back(CreateAppStartOccurredEvent( + appUid1, "app1", AppStartOccurred::WARM, "activity_name1", "calling_pkg_name1", true /*is_instant_app*/, 101 /*activity_start_msec*/, bucketStartTimeNs + 10)); - events.push_back(CreateAppStartChangedEvent( - appUid1, "app1", AppStartChanged::HOT, "activity_name2", "calling_pkg_name2", + events.push_back(CreateAppStartOccurredEvent( + appUid1, "app1", AppStartOccurred::HOT, "activity_name2", "calling_pkg_name2", true /*is_instant_app*/, 102 /*activity_start_msec*/, bucketStartTimeNs + 20)); - events.push_back(CreateAppStartChangedEvent( - appUid1, "app1", AppStartChanged::COLD, "activity_name3", "calling_pkg_name3", + events.push_back(CreateAppStartOccurredEvent( + appUid1, "app1", AppStartOccurred::COLD, "activity_name3", "calling_pkg_name3", true /*is_instant_app*/, 103 /*activity_start_msec*/, bucketStartTimeNs + 30)); - events.push_back(CreateAppStartChangedEvent( - appUid1, "app1", AppStartChanged::WARM, "activity_name4", "calling_pkg_name4", + events.push_back(CreateAppStartOccurredEvent( + appUid1, "app1", AppStartOccurred::WARM, "activity_name4", "calling_pkg_name4", true /*is_instant_app*/, 104 /*activity_start_msec*/, bucketStartTimeNs + bucketSizeNs + 30)); - events.push_back(CreateAppStartChangedEvent( - appUid1, "app1", AppStartChanged::COLD, "activity_name5", "calling_pkg_name5", + events.push_back(CreateAppStartOccurredEvent( + appUid1, "app1", AppStartOccurred::COLD, "activity_name5", "calling_pkg_name5", true /*is_instant_app*/, 105 /*activity_start_msec*/, bucketStartTimeNs + 2 * bucketSizeNs)); - events.push_back(CreateAppStartChangedEvent( - appUid1, "app1", AppStartChanged::HOT, "activity_name6", "calling_pkg_name6", + events.push_back(CreateAppStartOccurredEvent( + appUid1, "app1", AppStartOccurred::HOT, "activity_name6", "calling_pkg_name6", false /*is_instant_app*/, 106 /*activity_start_msec*/, bucketStartTimeNs + 2 * bucketSizeNs + 10)); events.push_back(CreateMoveToBackgroundEvent( appUid2, bucketStartTimeNs + bucketSizeNs + 10)); - events.push_back(CreateAppStartChangedEvent( - appUid2, "app2", AppStartChanged::COLD, "activity_name7", "calling_pkg_name7", + events.push_back(CreateAppStartOccurredEvent( + appUid2, "app2", AppStartOccurred::COLD, "activity_name7", "calling_pkg_name7", true /*is_instant_app*/, 201 /*activity_start_msec*/, bucketStartTimeNs + 2 * bucketSizeNs + 10)); @@ -159,7 +159,7 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) { EXPECT_EQ(2, gaugeMetrics.data_size()); auto data = gaugeMetrics.data(0); - EXPECT_EQ(android::util::APP_START_CHANGED, data.dimensions_in_what().field()); + EXPECT_EQ(android::util::APP_START_OCCURRED, data.dimensions_in_what().field()); EXPECT_EQ(1, data.dimensions_in_what().value_tuple().dimensions_value_size()); EXPECT_EQ(1 /* uid field */, data.dimensions_in_what().value_tuple().dimensions_value(0).field()); @@ -171,29 +171,29 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) { EXPECT_EQ(2, data.bucket_info(0).wall_clock_timestamp_nanos_size()); EXPECT_EQ(bucketStartTimeNs, data.bucket_info(0).start_bucket_nanos()); EXPECT_EQ(bucketStartTimeNs + bucketSizeNs, data.bucket_info(0).end_bucket_nanos()); - EXPECT_EQ(AppStartChanged::HOT, data.bucket_info(0).atom(0).app_start_changed().type()); + EXPECT_EQ(AppStartOccurred::HOT, data.bucket_info(0).atom(0).app_start_occurred().type()); EXPECT_EQ("activity_name2", - data.bucket_info(0).atom(0).app_start_changed().activity_name()); + data.bucket_info(0).atom(0).app_start_occurred().activity_name()); EXPECT_EQ(102L, - data.bucket_info(0).atom(0).app_start_changed().activity_start_millis()); - EXPECT_EQ(AppStartChanged::COLD, - data.bucket_info(0).atom(1).app_start_changed().type()); + data.bucket_info(0).atom(0).app_start_occurred().activity_start_millis()); + EXPECT_EQ(AppStartOccurred::COLD, + data.bucket_info(0).atom(1).app_start_occurred().type()); EXPECT_EQ("activity_name3", - data.bucket_info(0).atom(1).app_start_changed().activity_name()); + data.bucket_info(0).atom(1).app_start_occurred().activity_name()); EXPECT_EQ(103L, - data.bucket_info(0).atom(1).app_start_changed().activity_start_millis()); + data.bucket_info(0).atom(1).app_start_occurred().activity_start_millis()); EXPECT_EQ(1, data.bucket_info(1).atom_size()); EXPECT_EQ(1, data.bucket_info(1).elapsed_timestamp_nanos_size()); EXPECT_EQ(1, data.bucket_info(1).wall_clock_timestamp_nanos_size()); EXPECT_EQ(bucketStartTimeNs + bucketSizeNs, data.bucket_info(1).start_bucket_nanos()); EXPECT_EQ(bucketStartTimeNs + 2 * bucketSizeNs, data.bucket_info(1).end_bucket_nanos()); - EXPECT_EQ(AppStartChanged::WARM, - data.bucket_info(1).atom(0).app_start_changed().type()); + EXPECT_EQ(AppStartOccurred::WARM, + data.bucket_info(1).atom(0).app_start_occurred().type()); EXPECT_EQ("activity_name4", - data.bucket_info(1).atom(0).app_start_changed().activity_name()); + data.bucket_info(1).atom(0).app_start_occurred().activity_name()); EXPECT_EQ(104L, - data.bucket_info(1).atom(0).app_start_changed().activity_start_millis()); + data.bucket_info(1).atom(0).app_start_occurred().activity_start_millis()); EXPECT_EQ(2, data.bucket_info(2).atom_size()); EXPECT_EQ(2, data.bucket_info(2).elapsed_timestamp_nanos_size()); @@ -202,41 +202,41 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) { data.bucket_info(2).start_bucket_nanos()); EXPECT_EQ(bucketStartTimeNs + 3 * bucketSizeNs, data.bucket_info(2).end_bucket_nanos()); - EXPECT_EQ(AppStartChanged::COLD, - data.bucket_info(2).atom(0).app_start_changed().type()); + EXPECT_EQ(AppStartOccurred::COLD, + data.bucket_info(2).atom(0).app_start_occurred().type()); EXPECT_EQ("activity_name5", - data.bucket_info(2).atom(0).app_start_changed().activity_name()); + data.bucket_info(2).atom(0).app_start_occurred().activity_name()); EXPECT_EQ(105L, - data.bucket_info(2).atom(0).app_start_changed().activity_start_millis()); - EXPECT_EQ(AppStartChanged::HOT, - data.bucket_info(2).atom(1).app_start_changed().type()); + data.bucket_info(2).atom(0).app_start_occurred().activity_start_millis()); + EXPECT_EQ(AppStartOccurred::HOT, + data.bucket_info(2).atom(1).app_start_occurred().type()); EXPECT_EQ("activity_name6", - data.bucket_info(2).atom(1).app_start_changed().activity_name()); + data.bucket_info(2).atom(1).app_start_occurred().activity_name()); EXPECT_EQ(106L, - data.bucket_info(2).atom(1).app_start_changed().activity_start_millis()); + data.bucket_info(2).atom(1).app_start_occurred().activity_start_millis()); } else { EXPECT_EQ(1, data.bucket_info(0).atom_size()); EXPECT_EQ(1, data.bucket_info(0).elapsed_timestamp_nanos_size()); EXPECT_EQ(1, data.bucket_info(0).wall_clock_timestamp_nanos_size()); EXPECT_EQ(bucketStartTimeNs, data.bucket_info(0).start_bucket_nanos()); EXPECT_EQ(bucketStartTimeNs + bucketSizeNs, data.bucket_info(0).end_bucket_nanos()); - EXPECT_EQ(AppStartChanged::HOT, data.bucket_info(0).atom(0).app_start_changed().type()); + EXPECT_EQ(AppStartOccurred::HOT, data.bucket_info(0).atom(0).app_start_occurred().type()); EXPECT_EQ("activity_name2", - data.bucket_info(0).atom(0).app_start_changed().activity_name()); + data.bucket_info(0).atom(0).app_start_occurred().activity_name()); EXPECT_EQ(102L, - data.bucket_info(0).atom(0).app_start_changed().activity_start_millis()); + data.bucket_info(0).atom(0).app_start_occurred().activity_start_millis()); EXPECT_EQ(1, data.bucket_info(1).atom_size()); EXPECT_EQ(1, data.bucket_info(1).elapsed_timestamp_nanos_size()); EXPECT_EQ(1, data.bucket_info(1).wall_clock_timestamp_nanos_size()); EXPECT_EQ(bucketStartTimeNs + bucketSizeNs, data.bucket_info(1).start_bucket_nanos()); EXPECT_EQ(bucketStartTimeNs + 2 * bucketSizeNs, data.bucket_info(1).end_bucket_nanos()); - EXPECT_EQ(AppStartChanged::WARM, - data.bucket_info(1).atom(0).app_start_changed().type()); + EXPECT_EQ(AppStartOccurred::WARM, + data.bucket_info(1).atom(0).app_start_occurred().type()); EXPECT_EQ("activity_name4", - data.bucket_info(1).atom(0).app_start_changed().activity_name()); + data.bucket_info(1).atom(0).app_start_occurred().activity_name()); EXPECT_EQ(104L, - data.bucket_info(1).atom(0).app_start_changed().activity_start_millis()); + data.bucket_info(1).atom(0).app_start_occurred().activity_start_millis()); EXPECT_EQ(1, data.bucket_info(2).atom_size()); EXPECT_EQ(1, data.bucket_info(2).elapsed_timestamp_nanos_size()); @@ -245,17 +245,17 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) { data.bucket_info(2).start_bucket_nanos()); EXPECT_EQ(bucketStartTimeNs + 3 * bucketSizeNs, data.bucket_info(2).end_bucket_nanos()); - EXPECT_EQ(AppStartChanged::COLD, - data.bucket_info(2).atom(0).app_start_changed().type()); + EXPECT_EQ(AppStartOccurred::COLD, + data.bucket_info(2).atom(0).app_start_occurred().type()); EXPECT_EQ("activity_name5", - data.bucket_info(2).atom(0).app_start_changed().activity_name()); + data.bucket_info(2).atom(0).app_start_occurred().activity_name()); EXPECT_EQ(105L, - data.bucket_info(2).atom(0).app_start_changed().activity_start_millis()); + data.bucket_info(2).atom(0).app_start_occurred().activity_start_millis()); } data = gaugeMetrics.data(1); - EXPECT_EQ(data.dimensions_in_what().field(), android::util::APP_START_CHANGED); + EXPECT_EQ(data.dimensions_in_what().field(), android::util::APP_START_OCCURRED); EXPECT_EQ(data.dimensions_in_what().value_tuple().dimensions_value_size(), 1); EXPECT_EQ(1 /* uid field */, data.dimensions_in_what().value_tuple().dimensions_value(0).field()); @@ -266,10 +266,10 @@ TEST(GaugeMetricE2eTest, TestMultipleFieldsForPushedEvent) { EXPECT_EQ(1, data.bucket_info(0).wall_clock_timestamp_nanos_size()); EXPECT_EQ(bucketStartTimeNs + 2 * bucketSizeNs, data.bucket_info(0).start_bucket_nanos()); EXPECT_EQ(bucketStartTimeNs + 3 * bucketSizeNs, data.bucket_info(0).end_bucket_nanos()); - EXPECT_EQ(AppStartChanged::COLD, data.bucket_info(0).atom(0).app_start_changed().type()); + EXPECT_EQ(AppStartOccurred::COLD, data.bucket_info(0).atom(0).app_start_occurred().type()); EXPECT_EQ("activity_name7", - data.bucket_info(0).atom(0).app_start_changed().activity_name()); - EXPECT_EQ(201L, data.bucket_info(0).atom(0).app_start_changed().activity_start_millis()); + data.bucket_info(0).atom(0).app_start_occurred().activity_name()); + EXPECT_EQ(201L, data.bucket_info(0).atom(0).app_start_occurred().activity_start_millis()); } } diff --git a/cmds/statsd/tests/guardrail/StatsdStats_test.cpp b/cmds/statsd/tests/guardrail/StatsdStats_test.cpp index 5c4eda8348d10..04ce73a76d3b2 100644 --- a/cmds/statsd/tests/guardrail/StatsdStats_test.cpp +++ b/cmds/statsd/tests/guardrail/StatsdStats_test.cpp @@ -210,7 +210,7 @@ TEST(StatsdStatsTest, TestAtomLog) { stats.noteAtomLogged(android::util::SENSOR_STATE_CHANGED, now + 1); stats.noteAtomLogged(android::util::SENSOR_STATE_CHANGED, now + 2); - stats.noteAtomLogged(android::util::DROPBOX_ERROR_CHANGED, now + 3); + stats.noteAtomLogged(android::util::APP_CRASH_OCCURRED, now + 3); // pulled event, should ignore stats.noteAtomLogged(android::util::WIFI_BYTES_TRANSFER, now + 4); @@ -228,7 +228,7 @@ TEST(StatsdStatsTest, TestAtomLog) { if (atomStats.tag() == android::util::SENSOR_STATE_CHANGED && atomStats.count() == 3) { sensorAtomGood = true; } - if (atomStats.tag() == android::util::DROPBOX_ERROR_CHANGED && atomStats.count() == 1) { + if (atomStats.tag() == android::util::APP_CRASH_OCCURRED && atomStats.count() == 1) { dropboxAtomGood = true; } } diff --git a/cmds/statsd/tests/statsd_test_util.cpp b/cmds/statsd/tests/statsd_test_util.cpp index ce44a35cbf212..66215004db5f4 100644 --- a/cmds/statsd/tests/statsd_test_util.cpp +++ b/cmds/statsd/tests/statsd_test_util.cpp @@ -152,42 +152,42 @@ AtomMatcher CreateSyncEndAtomMatcher() { } AtomMatcher CreateActivityForegroundStateChangedAtomMatcher( - const string& name, ActivityForegroundStateChanged::Activity activity) { + const string& name, ActivityForegroundStateChanged::State state) { AtomMatcher atom_matcher; atom_matcher.set_id(StringToId(name)); auto simple_atom_matcher = atom_matcher.mutable_simple_atom_matcher(); simple_atom_matcher->set_atom_id(android::util::ACTIVITY_FOREGROUND_STATE_CHANGED); auto field_value_matcher = simple_atom_matcher->add_field_value_matcher(); field_value_matcher->set_field(4); // Activity field. - field_value_matcher->set_eq_int(activity); + field_value_matcher->set_eq_int(state); return atom_matcher; } AtomMatcher CreateMoveToBackgroundAtomMatcher() { return CreateActivityForegroundStateChangedAtomMatcher( - "MoveToBackground", ActivityForegroundStateChanged::MOVE_TO_BACKGROUND); + "Background", ActivityForegroundStateChanged::BACKGROUND); } AtomMatcher CreateMoveToForegroundAtomMatcher() { return CreateActivityForegroundStateChangedAtomMatcher( - "MoveToForeground", ActivityForegroundStateChanged::MOVE_TO_FOREGROUND); + "Foreground", ActivityForegroundStateChanged::FOREGROUND); } AtomMatcher CreateProcessLifeCycleStateChangedAtomMatcher( - const string& name, ProcessLifeCycleStateChanged::Event event) { + const string& name, ProcessLifeCycleStateChanged::State state) { AtomMatcher atom_matcher; atom_matcher.set_id(StringToId(name)); auto simple_atom_matcher = atom_matcher.mutable_simple_atom_matcher(); simple_atom_matcher->set_atom_id(android::util::PROCESS_LIFE_CYCLE_STATE_CHANGED); auto field_value_matcher = simple_atom_matcher->add_field_value_matcher(); field_value_matcher->set_field(3); // Process state field. - field_value_matcher->set_eq_int(event); + field_value_matcher->set_eq_int(state); return atom_matcher; } AtomMatcher CreateProcessCrashAtomMatcher() { return CreateProcessLifeCycleStateChangedAtomMatcher( - "ProcessCrashed", ProcessLifeCycleStateChanged::PROCESS_CRASHED); + "Crashed", ProcessLifeCycleStateChanged::CRASHED); } Predicate CreateScheduledJobPredicate() { @@ -241,8 +241,8 @@ Predicate CreateIsSyncingPredicate() { Predicate CreateIsInBackgroundPredicate() { Predicate predicate; predicate.set_id(StringToId("IsInBackground")); - predicate.mutable_simple_predicate()->set_start(StringToId("MoveToBackground")); - predicate.mutable_simple_predicate()->set_stop(StringToId("MoveToForeground")); + predicate.mutable_simple_predicate()->set_start(StringToId("Background")); + predicate.mutable_simple_predicate()->set_stop(StringToId("Foreground")); return predicate; } @@ -373,25 +373,25 @@ std::unique_ptr CreateReleaseWakelockEvent( } std::unique_ptr CreateActivityForegroundStateChangedEvent( - const int uid, const ActivityForegroundStateChanged::Activity activity, uint64_t timestampNs) { + const int uid, const ActivityForegroundStateChanged::State state, uint64_t timestampNs) { auto event = std::make_unique( android::util::ACTIVITY_FOREGROUND_STATE_CHANGED, timestampNs); event->write(uid); event->write("pkg_name"); event->write("class_name"); - event->write(activity); + event->write(state); event->init(); return event; } std::unique_ptr CreateMoveToBackgroundEvent(const int uid, uint64_t timestampNs) { return CreateActivityForegroundStateChangedEvent( - uid, ActivityForegroundStateChanged::MOVE_TO_BACKGROUND, timestampNs); + uid, ActivityForegroundStateChanged::BACKGROUND, timestampNs); } std::unique_ptr CreateMoveToForegroundEvent(const int uid, uint64_t timestampNs) { return CreateActivityForegroundStateChangedEvent( - uid, ActivityForegroundStateChanged::MOVE_TO_FOREGROUND, timestampNs); + uid, ActivityForegroundStateChanged::FOREGROUND, timestampNs); } std::unique_ptr CreateSyncStateChangedEvent( @@ -418,19 +418,19 @@ std::unique_ptr CreateSyncEndEvent( } std::unique_ptr CreateProcessLifeCycleStateChangedEvent( - const int uid, const ProcessLifeCycleStateChanged::Event event, uint64_t timestampNs) { + const int uid, const ProcessLifeCycleStateChanged::State state, uint64_t timestampNs) { auto logEvent = std::make_unique( android::util::PROCESS_LIFE_CYCLE_STATE_CHANGED, timestampNs); logEvent->write(uid); logEvent->write(""); - logEvent->write(event); + logEvent->write(state); logEvent->init(); return logEvent; } std::unique_ptr CreateAppCrashEvent(const int uid, uint64_t timestampNs) { return CreateProcessLifeCycleStateChangedEvent( - uid, ProcessLifeCycleStateChanged::PROCESS_CRASHED, timestampNs); + uid, ProcessLifeCycleStateChanged::CRASHED, timestampNs); } std::unique_ptr CreateIsolatedUidChangedEvent( diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 08e5d44c88323..19ef775a8b304 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -4493,8 +4493,8 @@ public class ActivityManagerService extends IActivityManager.Stub StatsLog.write(StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED, component.app.uid, component.realActivity.getPackageName(), component.realActivity.getShortClassName(), resumed ? - StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__ACTIVITY__MOVE_TO_FOREGROUND : - StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__ACTIVITY__MOVE_TO_BACKGROUND); + StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__FOREGROUND : + StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__BACKGROUND); if (resumed) { if (mUsageStatsService != null) { mUsageStatsService.reportEvent(component.realActivity, component.userId, @@ -13179,10 +13179,6 @@ public class ActivityManagerService extends IActivityManager.Stub + android.Manifest.permission.SHUTDOWN); } - // TODO: Where should the corresponding '1' (start) write go? - StatsLog.write(StatsLog.DEVICE_ON_STATUS_CHANGED, - StatsLog.DEVICE_ON_STATUS_CHANGED__STATE__OFF); - boolean timedout = false; synchronized(this) { @@ -15197,6 +15193,12 @@ public class ActivityManagerService extends IActivityManager.Stub crashInfo.throwFileName, crashInfo.throwLineNumber); + StatsLog.write(StatsLog.APP_CRASH_OCCURRED, + Binder.getCallingUid(), + eventType, + processName, + Binder.getCallingPid()); + addErrorToDropBox(eventType, r, processName, null, null, null, null, null, crashInfo); mAppErrors.crashApplication(r, crashInfo); @@ -15367,6 +15369,9 @@ public class ActivityManagerService extends IActivityManager.Stub EventLog.writeEvent(EventLogTags.AM_WTF, UserHandle.getUserId(callingUid), callingPid, processName, r == null ? -1 : r.info.flags, tag, crashInfo.exceptionMessage); + StatsLog.write(StatsLog.WTF_OCCURRED, callingUid, tag, processName, + callingPid); + addErrorToDropBox("wtf", r, processName, null, null, tag, null, null, crashInfo); return r; @@ -15488,19 +15493,6 @@ public class ActivityManagerService extends IActivityManager.Stub final String dropboxTag = processClass(process) + "_" + eventType; if (dbox == null || !dbox.isTagEnabled(dropboxTag)) return; - // Log to StatsLog before the rate-limiting. - // The logging below is adapated from appendDropboxProcessHeaders. - StatsLog.write(StatsLog.DROPBOX_ERROR_CHANGED, - process != null ? process.uid : -1, - dropboxTag, - processName, - process != null ? process.pid : -1, - (process != null && process.info != null) ? - (process.info.isInstantApp() ? 1 : 0) : -1, - activity != null ? activity.shortComponentName : null, - activity != null ? activity.packageName : null, - process != null ? (process.isInterestingToUserLocked() ? 1 : 0) : -1); - // Rate-limit how often we're willing to do the heavy lifting below to // collect and record logs; currently 5 logs per 10 second period. final long now = SystemClock.elapsedRealtime(); @@ -19780,6 +19772,7 @@ public class ActivityManagerService extends IActivityManager.Stub catPw.flush(); } dropBuilder.append(catSw.toString()); + StatsLog.write(StatsLog.LOW_MEM_REPORTED); addErrorToDropBox("lowmem", null, "system_server", null, null, tag.toString(), dropBuilder.toString(), null, null); //Slog.i(TAG, "Sent to dropbox:"); diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index 724dd3fd98475..47d0423550c4f 100644 --- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java @@ -489,7 +489,7 @@ class ActivityMetricsLogger { builder.addTaggedData(FIELD_CLASS_NAME, info.launchedActivity.info.name); mMetricsLogger.write(builder); StatsLog.write( - StatsLog.APP_START_CANCEL_CHANGED, + StatsLog.APP_START_CANCELED, info.launchedActivity.appInfo.uid, info.launchedActivity.packageName, convertAppStartTransitionType(type), @@ -561,7 +561,7 @@ class ActivityMetricsLogger { packageOptimizationInfo.getCompilationFilter()); mMetricsLogger.write(builder); StatsLog.write( - StatsLog.APP_START_CHANGED, + StatsLog.APP_START_OCCURRED, info.applicationInfo.uid, info.packageName, convertAppStartTransitionType(info.type), @@ -582,15 +582,15 @@ class ActivityMetricsLogger { private int convertAppStartTransitionType(int tronType) { if (tronType == TYPE_TRANSITION_COLD_LAUNCH) { - return StatsLog.APP_START_CHANGED__TYPE__COLD; + return StatsLog.APP_START_OCCURRED__TYPE__COLD; } if (tronType == TYPE_TRANSITION_WARM_LAUNCH) { - return StatsLog.APP_START_CHANGED__TYPE__WARM; + return StatsLog.APP_START_OCCURRED__TYPE__WARM; } if (tronType == TYPE_TRANSITION_HOT_LAUNCH) { - return StatsLog.APP_START_CHANGED__TYPE__HOT; + return StatsLog.APP_START_OCCURRED__TYPE__HOT; } - return StatsLog.APP_START_CHANGED__TYPE__APP_START_TRANSITION_TYPE_UNKNOWN; + return StatsLog.APP_START_OCCURRED__TYPE__UNKNOWN; } void logAppTransitionReportedDrawn(ActivityRecord r, boolean restoredFromBundle) { @@ -611,12 +611,12 @@ class ActivityMetricsLogger { info.currentTransitionProcessRunning ? 1 : 0); mMetricsLogger.write(builder); StatsLog.write( - StatsLog.APP_START_FULLY_DRAWN_CHANGED, + StatsLog.APP_START_FULLY_DRAWN, info.launchedActivity.appInfo.uid, info.launchedActivity.packageName, restoredFromBundle - ? StatsLog.APP_START_FULLY_DRAWN_CHANGED__TYPE__WITH_BUNDLE - : StatsLog.APP_START_FULLY_DRAWN_CHANGED__TYPE__WITHOUT_BUNDLE, + ? StatsLog.APP_START_FULLY_DRAWN__TYPE__WITH_BUNDLE + : StatsLog.APP_START_FULLY_DRAWN__TYPE__WITHOUT_BUNDLE, info.launchedActivity.info.name, info.currentTransitionProcessRunning, startupTimeMs); diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java index b2872e4d7f5a6..7ee20fa2501cf 100644 --- a/services/core/java/com/android/server/am/AppErrors.java +++ b/services/core/java/com/android/server/am/AppErrors.java @@ -47,6 +47,7 @@ import android.util.ArraySet; import android.util.EventLog; import android.util.Log; import android.util.Slog; +import android.util.StatsLog; import android.util.SparseArray; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; @@ -1039,6 +1040,8 @@ class AppErrors { Process.sendSignal(app.pid, Process.SIGNAL_QUIT); } + StatsLog.write(StatsLog.ANR_OCCURRED, app.uid, app.processName, + activity == null ? "unknown": activity.shortComponentName, annotation); mService.addErrorToDropBox("anr", app, app.processName, activity, parent, annotation, cpuInfo, tracesFile, null); diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index b338029d4e869..8ecd93e65b080 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -337,7 +337,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub synchronized (mStats) { mStats.noteProcessStartLocked(name, uid); StatsLog.write(StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name, - StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__EVENT__PROCESS_STARTED); + StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__STARTED); } } @@ -345,15 +345,13 @@ public final class BatteryStatsService extends IBatteryStats.Stub synchronized (mStats) { mStats.noteProcessCrashLocked(name, uid); StatsLog.write(StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name, - StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__EVENT__PROCESS_CRASHED); + StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__CRASHED); } } void noteProcessAnr(String name, int uid) { synchronized (mStats) { mStats.noteProcessAnrLocked(name, uid); - StatsLog.write(StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name, - StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__EVENT__PROCESS_ANRED); } } @@ -361,7 +359,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub synchronized (mStats) { mStats.noteProcessFinishLocked(name, uid); StatsLog.write(StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name, - StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__EVENT__PROCESS_FINISHED); + StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__FINISHED); } } @@ -768,8 +766,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub enforceCallingPermission(); synchronized (mStats) { mStats.noteVideoOnLocked(uid); - StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, uid, null, - StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__ON); + StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_STATE_CHANGED, uid, null, + StatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__ON); } } @@ -777,8 +775,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub enforceCallingPermission(); synchronized (mStats) { mStats.noteVideoOffLocked(uid); - StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, uid, - null, StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__OFF); + StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_STATE_CHANGED, uid, + null, StatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__OFF); } } @@ -795,8 +793,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub enforceCallingPermission(); synchronized (mStats) { mStats.noteResetVideoLocked(); - StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED, -1, null, - StatsLog.MEDIA_CODEC_ACTIVITY_CHANGED__STATE__RESET); + StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_STATE_CHANGED, -1, null, + StatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__RESET); } } diff --git a/services/core/java/com/android/server/stats/StatsCompanionService.java b/services/core/java/com/android/server/stats/StatsCompanionService.java index d252a56ddf6bb..7f95c445dd2cc 100644 --- a/services/core/java/com/android/server/stats/StatsCompanionService.java +++ b/services/core/java/com/android/server/stats/StatsCompanionService.java @@ -751,7 +751,7 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { }); } - private void pullWifiActivityEnergyInfo(int tagId, List pulledData) { + private void pullWifiActivityInfo(int tagId, List pulledData) { long token = Binder.clearCallingIdentity(); if (mWifiManager == null) { mWifiManager = @@ -919,8 +919,8 @@ public class StatsCompanionService extends IStatsCompanionService.Stub { pullKernelUidCpuActiveTime(tagId, ret); break; } - case StatsLog.WIFI_ACTIVITY_ENERGY_INFO: { - pullWifiActivityEnergyInfo(tagId, ret); + case StatsLog.WIFI_ACTIVITY_INFO: { + pullWifiActivityInfo(tagId, ret); break; } case StatsLog.MODEM_ACTIVITY_INFO: {