There are a few major pieces here:
incidentd
---------
This daemon (started by init) runs and accepts incoming requests to take
incident reports. When prompted, it calls into various system services
and fills in an IncidentProto data structure, and then writes the report
into dropbox.
The next steps for incidentd:
- Security review of SELinux policies. These will be a subset of
the dumpstate permissions. Until this is done, incidentd is
not started at boot time.
incident
--------
This shell command calls into incidentd, and can initiate an incident
report and either capture the output or leave for dropbox.
incident_report
---------------
This host side tool can call adb shell with the correct parameters
and also format the incident report as text. This formatting code
was left of the device on purpose. Right now it's pretty small, but
as the number of fields increases, the metadata and code to do the
formatting will start to grow.
The incident_report command also contains a workaround to let it
work before incidentd is turned on by default. Right now, it is
implemented to call adb shell dumpsys <service> --proto directly,
whereas in the future it will go through the full incidentd flow.
incident_section_gen
--------------------
A build-time tool that generates a stripped down set of information
about the fields that are available.
libincident
-----------
This library contains the code to connect to incidentd, and the
meta proto definitions that are used by the framework protos.
The basics are here now, but they are not fully fleshed out yet.
The privacy.proto file contains annotations that can go in the
proto file that we will later use to filter which fields are
uploaded, and which are used by local sources. For example, a
device in a test lab is safe to upload much much more information
than a real user. These will share the same mechanism, but the
user's output will be filtered according to these annotations.
frameworks/core/proto
---------------------
These .proto files contain the definitions of the system's
output. There is one master android.os.IncidentProto file that
is the top level of an incident report, but some other services
(notification, fingerprint, batterystats, etc) will have others
that are used directly by the logging mechanism.
Other files which are shared by several of the services also go
here, such as ComponentName, Locale, Configuration, etc. There
will be many more.
There is also a first iplementation of a dump method handling
--proto in the fingerprint service.
IncidentManager
---------------
The java API to trigger an incident report.
Test: Not written yet
Change-Id: I59568b115ac7fcf73af70c946c95752bf33ae67f
- Even if call setTestProviderLocation() with inconsistent providers,
should still end up with a location that is flagged as mocked
- Bug: 33091107
Change-Id: I39e038f25b975989c2e8651bfd9ec9e74073e6cd
Fix SkiaPipeline unit tests failure, caused by double deallocation
of SkCanvas in DeferLayer.
Test: build and ran angler-eng, ran HWUI unit tests.
Change-Id: I4a0a0113588e40a8ed32093d57efc6af3c0d7745
This patch adds a ConnectStats class to aggregate connect() statistics
gathered in NetdEventListenerService. ConnectStats is uploaded once a
day by IpConnectivityMetrics.
Test: $ runtest frameworks-net + new unit test
Bug: 32198976
(cherry picked from commit 4f71a15973f7048076ed10f63d708f020e1a21e0)
Change-Id: I1450c126b90b628d9f1c73ddf054b4742f5e84c5
This patch adds a ConnectStats class to aggregate connect() statistics
gathered in NetdEventListenerService. ConnectStats is uploaded once a
day by IpConnectivityMetrics.
Test: $ runtest frameworks-net + new unit test
Bug: 32198976
Change-Id: Iea63339035415513a5ba0ff4b8f4d79f75fc652d
Fixes a potential race condition - when enabling/disabling the logging
some events might have been lost.
Bug: 29748723
Change-Id: I8a436d525393b2314805e287eddcea26d4ec073b
Fixes a potential race condition - when enabling/disabling the logging
some events might have been lost.
Bug: 29748723
Change-Id: I8a436d525393b2314805e287eddcea26d4ec073b
So that test assumptions match previous changes in ipconnectivity.proto.
This patch also tags metrics tests with @SmallTest.
Test: $ runtest frameworks-net
Bug: 32561414
Bug: 32198976
(cherry picked from commit 80df43ea8a)
Change-Id: I8926a92248ac2d46fc78749afc40bc5f0de10878
This patch introduces a ConnectStatistics message for collecting
Android devices connect() statistics.
It also changes DNS latency events to be grouped by (query_type,
query_return_value) to optimize space usage. For this purpose, a new
DNSLookupLatencies message is introduced and DNSLookupBatch is
deprecated. New counter fields are added for the number of queries,
and number of responses with A and AAAA records.
Test: manually taking a diff with reference ipconnectivity.proto
Bug: 32198976
(cherry picked from commit 7c3a786921)
Change-Id: I54403377bc5d4c7a1c77b563c588e5210edf56e5
This patch adds a transport field dimension to IpConnectivityEvent for
replacing interface name, and eventually network ids.
At the moment the transport field is not populated.
Test: manually taking a diff against reference ipconnectivity.proto
Bug: 32198976
(cherry picked from commit 807124a7f5)
Change-Id: Idf2167973c322153659b8e755d8be973e70d972a
This is needed for unbundling of the OobConfig apk.
Test: gts-tradefed run gts -m GtsGmscoreHostTestCases --test com.google.android.gts.devicepolicy.DeviceOwnerUserRestrictionTest#testFactoryReset_disallowFactoryReset
Bug: 32974361
Change-Id: I71e7270bb4c3234ec0516382b18a2ca35aab4c81
This patch changes the (tag: String, id: Int) keying scheme for network
notifications so that TRON notification counters can count network
related notifications unambiguously.
TRON instruments all notifications shown for package "android" as well
as user interactions with these Notifications. These counters are
grouped by id. However the network notifications ("no internet" dialog,
"captive portal sign in" dialog, ...) use a static tag and a dynamic id
for keying notifications, preventing the counters to correctly
aggregate. In addition there is also the risk of collision with other
SystemUi notification ids not managed by NetworkNotificationManager.
In order to make the TRON counters useful for network notifications,
the id is now encoding the network notification type in a stable way
while the tag is used to uniquely identify network notifications.
Test: change covered by previously added new unit tests.
Bug: 32198726
Bug: 33030620
(cherry picked from commit fb2609d3ee)
Change-Id: Iadf7f15da38de28587090ed0395f15c24d4ad442