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.