android_ingest

An application that ingests incoming data from the Android performance tests and creates JSON files in Google Cloud Storage that can be ingested by Perf. It additionally created a git repo that mirrors each buildid into a Git repository, which is what Perf is expecting.

Example Input JSON

The incoming test data has the form:

{ “build_id”: “3567162”, “build_flavor”: “marlin-userdebug”, “metrics”: { “android.platform.systemui.tests.jank.LauncherJankTests#testAppSwitchGMailtoHome”: { “frame-fps”: “9.328892269753897”, “frame-avg-jank”: “8.4”, “frame-max-frame-duration”: “7.834711093388444”, “frame-max-jank”: “10” }, ... }, “branch”: “google-marlin-marlin-O” }

Initializing the target repo

To start with a new repo it must be initialized correctly, by commiting a BUILDID file that contains the initial buildid and timestamp that the repo should start from, with a correct subject. For example, you could populate BUILDID with the buildid 3529135, which has a timestamp of 1480456484. This means populating the BUILDID file with:

3529135 1480456484

Then adding that file to the repo:

git add BUILDID

Then commit with a subject message that is the redirector URL, i.e. append the buildid to “https://android-ingest.skia.org/r/”, and use the flag --date and the environment variable GIT_COMMITTER_DATE to set both the author and commiter date to the matching timestamp.

GIT_COMMITTER_DATE=1480456484 git commit -m “https://android-ingest.skia.org/r/3529135” --date=1480456484

Upload Log

POST requests with new data are not able to be re-triggered so we have to take special care not to lose data. A transaction log is kept of all incoming POST requests that can be replayed if needed.

Use the ./replay-log.sh script to replay logs back into android_ingest. See the comments in the script for how to run it.