From 3de789d51a2e298c07a520f9063e2c54f8df84eb Mon Sep 17 00:00:00 2001 From: Richard Pappalardo Date: Thu, 30 Apr 2020 14:01:35 -0700 Subject: [PATCH] Fixes #6760 - Show UI test results in TC task (#10089) --- .../taskcluster/androidTest/parse-ui-test.py | 63 +++++++++++++++++++ automation/taskcluster/androidTest/ui-test.sh | 30 +++++++-- taskcluster/docker/base/Dockerfile | 1 + 3 files changed, 88 insertions(+), 6 deletions(-) create mode 100644 automation/taskcluster/androidTest/parse-ui-test.py diff --git a/automation/taskcluster/androidTest/parse-ui-test.py b/automation/taskcluster/androidTest/parse-ui-test.py new file mode 100644 index 000000000..51220a519 --- /dev/null +++ b/automation/taskcluster/androidTest/parse-ui-test.py @@ -0,0 +1,63 @@ +#!/usr/bin/python3 + +from __future__ import print_function + +import sys +import argparse +from pathlib import Path +import json +import yaml + +def parse_args(cmdln_args): + parser = argparse.ArgumentParser(description="Parse UI test logs an results") + parser.add_argument( + "--output-md", + type=argparse.FileType("w", encoding="utf-8"), + help="Output markdown file.", + required=True, + ) + parser.add_argument( + "--log", + type=argparse.FileType("r", encoding="utf-8"), + help="Log output of flank.", + required=True, + ) + parser.add_argument( + "--results", type=Path, help="Directory containing flank results", required=True + ) + parser.add_argument( + "--exit-code", type=int, help="Exit code of flank.", required=True + ) + parser.add_argument("--device-type", help="Type of device ", required=True) + return parser.parse_args(args=cmdln_args) + + +def extract_android_args(log): + return yaml.safe_load(log.split("AndroidArgs\n")[1].split("RunTests\n")[0]) + + +def main(): + args = parse_args(sys.argv[1:]) + + log = args.log.read() + matrix_ids = json.loads(args.results.joinpath("matrix_ids.json").read_text()) + #with args.results.joinpath("flank.yml") as f: + # flank_config = yaml.safe_load(f) + + android_args = extract_android_args(log) + + print = args.output_md.write + + print("# Devices\n") + print(yaml.safe_dump(android_args["gcloud"]["device"])) + + print("# Results\n") + print("| matrix | result | logs |\n") + print("| --- | --- | --- |\n") + for matrix, matrix_result in matrix_ids.items(): + print("| {matrixId} | {outcome} | [logs]({webLink}) |\n".format(**matrix_result)) + + +if __name__ == "__main__": + main() + diff --git a/automation/taskcluster/androidTest/ui-test.sh b/automation/taskcluster/androidTest/ui-test.sh index 796771659..45b1ae44a 100755 --- a/automation/taskcluster/androidTest/ui-test.sh +++ b/automation/taskcluster/androidTest/ui-test.sh @@ -56,6 +56,8 @@ fi JAVA_BIN="/usr/bin/java" PATH_TEST="./automation/taskcluster/androidTest" FLANK_BIN="/builds/worker/test-tools/flank.jar" +ARTIFACT_DIR="/builds/worker/artifacts" +RESULTS_DIR="${ARTIFACT_DIR}/results" echo echo "ACTIVATE SERVICE ACCT" @@ -101,16 +103,23 @@ function failure_check() { fi echo - echo "COPY ARTIFACTS" + echo "RESULTS" echo - cp -r ./results /builds/worker/artifacts + ls -la "${RESULTS_DIR}" + echo echo "RESULTS" echo - ls -la ./results - echo - echo + + mkdir -p /builds/worker/artifacts/github + chmod +x $PATH_TEST/parse-ui-test.py + $PATH_TEST/parse-ui-test.py \ + --exit-code "${exitcode}" \ + --log flank.log \ + --results "${RESULTS_DIR}" \ + --output-md "${ARTIFACT_DIR}/github/customCheckRunText.md" \ + --device-type "${device_type}" } echo @@ -123,7 +132,16 @@ echo echo echo "EXECUTE TEST(S)" echo -$JAVA_BIN -jar $FLANK_BIN android run --config=$flank_template --max-test-shards=$num_shards --app=$APK_APP --test=$APK_TEST --project=$GOOGLE_PROJECT +# Note that if --local-results-dir is "results", timestamped sub-directory will +# contain the results. For any other value, the directory itself will have the results. +$JAVA_BIN -jar $FLANK_BIN android run \ + --config=$flank_template \ + --max-test-shards=$num_shards \ + --app=$APK_APP --test=$APK_TEST \ + --local-result-dir="${RESULTS_DIR}" \ + --project=$GOOGLE_PROJECT \ + | tee flank.log + exitcode=$? failure_check diff --git a/taskcluster/docker/base/Dockerfile b/taskcluster/docker/base/Dockerfile index 3f70100c8..7ec2ce23e 100644 --- a/taskcluster/docker/base/Dockerfile +++ b/taskcluster/docker/base/Dockerfile @@ -39,6 +39,7 @@ RUN apt-get update -qq \ python \ python-pip \ python3 \ + python3-yaml \ locales \ unzip \ mercurial \