statsd logs when an sensitive appop is accessed while a foreground
service is held. These appops include
OP_FINE_LOCATION
OP_COARSE_LOCATION
OP_RECORD_AUDIO
OP_CAMERA
It logs the number of times each of these appops is requested per session
during which the uid holds any foreground service.
Appops requested while the app's process state is TOP are ignored.
Also, the pre-existing ForegroundServiceStateChanged atom has an
additional field that logs whether the fgs is considered 'in-use' in the
context of being allowed while-in-use permissions.
Bug: 149497535
Test: atest UidAtomTests#testForegroundServiceState UidAtomTests#testForegroundServiceAccessAppOp
Test: manually monitor: adb shell cmd stats print-logs && adb logcat -v uid -s statsd | grep "statsd : {" | egrep '\((60|256)\)'
Change-Id: I991a427dc2ab00399188b10b266ab2d9aa92696d
Merged-In: I991a427dc2ab00399188b10b266ab2d9aa92696d
(cherry picked from commit 0c8637c067)
Sony introduced some logic that combines devices kernel splits into one
Android device based on identical pid, vid and non-empty uniq. Therefore
populate this field with device ID.
We can change that to a separate uniq attribute in register JSON file if
necessary later.
Bug: 38511270
Test: getevent -li shows that uniq is populated.
Change-Id: Ieca0b826c86e9cad7fa3d3c8f98b9cfd54d20c73
Rename "duration" field to correspond with the
actual time unit.
Bug: 139439353
Test: Successful build
Change-Id: I3e9b3ac5778d6fa4b6de35079743bdf6e85b7560
Enable Incidentd to dump any existing dumpsys section in plain text
(as dumpsys.proto), only in eng or userdebug build. This is for a
few dumpsys services that are prohibitively expensive to migrate to
protobuf dumpsys or will undergo a major rewrite (thus render the
previously defined proto completely useless).
Bug: 149816498
Bug: 146085372
Bug: 146086519
Test: $ incident -p EXPLICIT 4000 4001
Change-Id: I0693d9bace0055cfeb63d7c8d48995d57dc0b733
(cherry picked from commit 95ba73f9c9)
These metrics will pull different metrics that tell the performance of the gnss subsystem.
Metrics include:
Location reports
% of location failure
Num times GPS had to first fix
Mean time to first fix on signal
Num position accuracy logs
Mean position accuracy in meters
Num top 4 Cn0 messages
Mean top 4 average Cn0 (signal quality)
Num L5 top 4 Cn0 messages
Mean L5 top 4 average Cn0 (signal quality)
Num Satellite status messages received
Num of Satellites used in fix
L5 Satellite status messages received
L5 of Satellites used in fix
metric_id: 1111
gauge_metrics {
data {
bucket_info {
atom {
gnss_stats {
location_reports: 12
location_failure_reports: 3
time_to_first_fix_reports: 2
time_to_first_fix_milli_s: 43588
position_accuracy_reports: 9
position_accuracy_meters: 112
top_four_average_cn0_reports: 31
top_four_average_cn0_db_mhz: 734711
l5_top_four_average_cn0_reports: 1
l5_top_four_average_cn0_db_mhz: 21500
sv_status_reports: 1015
sv_status_reports_used_in_fix: 100
l5_sv_status_reports: 7
l5_sv_status_reports_used_in_fix: 0
}
}
elapsed_timestamp_nanos: 537249375445
start_bucket_elapsed_millis: 522186
end_bucket_elapsed_millis: 549283
}
}
}
time_base_elapsed_nano_seconds: 9283624934
bucket_size_nano_seconds: 60000000000
is_active: true
Bug: 147910698
Test: On Device using test script and gnsslogger.apk
> make statsd_testdrive
> ./out/host/linux-x86/bin/statsd_testdrive <ATOM_ID>
Change-Id: I92461eb8533ec810bb67d76a25931295cfa1efbd
When testing HID devices, it was assumed that the bus used would always
be bluetooth. This caused USB hid tests to fail. This patch fixes this
issue by adding a "busType" parameter to the test register file. This
can be either "bluetooth" or "usb" at this time. This will break any
hid test that does not specify a busType.
Cherry picked from pa/1549664.
Bug: 136263708
Test: atest CtsHarwareTestCases
Change-Id: I44cda52505110227fa5262994d0cfe59ecb8763d
Also make libstatssocket dependency static in statsd_test temporarily to use
AStatsEvent_getBuffer in tests.
Bug: 145922701
Bug: 145923416
Test: m
Change-Id: Idb8107cfe4f7d08d08c7a242c037fcc63912bb5f
This change adds the ability to configure the priority, default enable
state, and mutability (previously know as staticness) of an overlay.
Rather than overlays configuring themselves, the system can configure
overlays relative to each other.
An example configuration file looks like:
<config>
<merge path="auto-generated.xml" />
<overlay package="com.example.one" mutable="false"
enabled="true"/>
<overlay package="com.example.two" mutable="false"
enabled="true"/>
<overlay package="com.example.three" enabled="true"/>
</config>
The <overlay> tag configures the overlay while the <merge> tag allows
additional configuration files to be included at a position within
the configuration file.
If the configuration file is not present for a partition, the legacy
android:isStatic and android:priority will continue to configure the
overlays in the partition. Once at least one configuration file has
been defined in any partition, strict partition precedence will be
enforced and overlays on separate partitions will no longer be able
to use android:priority to reorder themselves conversely from the
overlay partition precedence.
The order of the system partitions from least to greatest precedence
is system, vendor, odm, oem, product, system_ext.
Bug: 135048762
Test: atest OverlayConfigTest
Change-Id: If57e8caa9b881f9d424ef48bba80b18cc8b7b943
With the Virtual A/B feature, when the device successfully boots after
an OTA update, a dm-snapshot merge operation is performed, which
consolidates the updated images to the base devices.
This merge operation depends on the OTA size and may affect the device
performance until completed.
The new virtual_ab_update_reported push metric tracks the merge
operation duration (if not interrupted), the final merge status and
possible number of reboots that occurred during the merge.
Bug: 138817833
Bug: 148138124
Test: build + OTA application + local metric test with statsd_testdrive
Change-Id: Iabd1dc48ad0d737f6ed14caa247fd4952c65a258
Signed-off-by: Alessio Balsini <balsini@google.com>
Follow ProtoBestPractices and comments suggested by cl/295218381.
Changing proto definition, should be fine, because these are
fields added after the last Android release.
Move PipelineType enum inside GraphicsStats and add a default
UNKNOWN state.
Rename start_millis and end_millis in GraphicsStats atom.
Fields in GraphicsStatsProto cannot be renamed as these were
part of previous Android releases.
Test: Ran "adb shell cmd stats pull-source 10068"
Test: Ran "statsd_testdrive 10068" and it looks OK
Bug: 149646555
Change-Id: Idc326eb2a7eb9ff0be39026e6fec544491b7d8a6
Major changes include:
- Removing unused permission checks within StatsService. These
include ENFORCE_DUMP_AND_USAGE_STATS, checkDumpAndUsageStats,
kOpUsage, and kPermissionUsage.
- Converting from sp to shared_ptr
- Using libbinder_ndk functions instead of libbinder functions
(e.g. for installing death recipients, getting calling uids, etc.)
- New death recipients were added in StatsService,
ConfigManager, and SubscriberReporter.
- Using a unique token (timestamp) to identify shell subscribers
instead of IResultReceiver because IResultReceiver is not exposed by
libbinder_ndk. Currently, statsd cannot detect if perfd dies; we
will fix that later.
Bug: 145232107
Bug: 148609603
Test: m statsd
Test: m statsd_test
Test: bit stastd_test:*
Test: atest GtsStatsdHostTestCases
Change-Id: Ia1fda7280c22320bc4ebc8371acaadbe8eabcbd2
This breaks LogEvent::writeBytes, but that function is only called from
test code (and those tests are about to be broken soon anyways).
Test: m statsd
Test: m statsd_test
Bug: 145573568
Change-Id: Ic2d2e7c80d25fa93269e3432dbe58dffbd80dfd4