Mike Ma 22ff08b94c Persisted log parser for incident reporting
Add persisted log section (section 1116) in incident report. Since
persisted logs are only stored in /data/misc/logd in plain text
format with interleaving log buffers, incidentd must use a dedicated
parser to parse them into protobuf, and it is more efficient to store
all buffers in a single section.

Implementation details: incidentd invokes incident-helper-cmd, who
reads all persisted log files in /data/misc/logd dir matching
logcat.* pattern, parses them line by line into TextLogEntry, and
passes the data back to incidentd through stdout in protobuf wire
format.

Command to invoke persisted log directly:
$ incident-helper-cmd run persisted_logs

Bug: 146086597
Test: adb shell incident -p EXPLICIT 1116 | \
      .out/soong/host/linux-x86/bin/aprotoc --decode_raw
Change-Id: I163cc47f1b34a58b404d7b7485ff47d8893e3bdd
2020-01-16 10:34:33 -08:00
..

incident_helper

It is an executable used to help parsing text format data to protobuf.

How to build, deploy, unit test

For the first time, build the test and create an empty directly on device:

root$ make -j incident_helper_test && adb shell mkdir /data/nativetest64/incident_helper_test

Run the test on a device

root$ mmm -j frameworks/base/cmds/incident_helper && \
adb push $OUT/data/nativetest64/incident_helper_test/* /data/nativetest64/incident_helper_test/ && \
adb shell /data/nativetest64/incident_helper_test/incident_helper_test 2>/dev/null

How to adapt proto changes

If add a new proto file, add it in Android.bp under frameworks/base/ and make incident helper

root$ make -j48 incident_helper