Skip to content

Commit

Permalink
Submit test-perf CSV files to S3.
Browse files Browse the repository at this point in the history
  • Loading branch information
Alan Jeffrey committed Nov 20, 2017
1 parent 4d27ce0 commit 920ec6f
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 19 deletions.
50 changes: 50 additions & 0 deletions etc/ci/performance/set_s3_policy.py
@@ -0,0 +1,50 @@
#!/usr/bin/env python3

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import argparse
import boto3


def main():
parser = argparse.ArgumentParser(
description=("Set the policy of the servo-perf bucket. "
"Remember to set your S3 credentials "
"https://github.com/boto/boto3"))
parser.parse_args()

s3 = boto3.resource('s3')
BUCKET = 'servo-perf'
POLICY = """{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal":"*",
"Action":[
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource":"arn:aws:s3:::servo-perf"
},
{
"Effect":"Allow",
"Principal":"*",
"Action":[
"s3:GetObject",
"s3:GetObjectAcl"
],
"Resource":"arn:aws:s3:::servo-perf/*"
}
]
}"""

s3.BucketPolicy(BUCKET).put(Policy=POLICY)

print("Done!")


if __name__ == "__main__":
main()
30 changes: 30 additions & 0 deletions etc/ci/performance/submit_to_s3.py
@@ -0,0 +1,30 @@
#!/usr/bin/env python3

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

import argparse
import boto3


def main():
parser = argparse.ArgumentParser(
description=("Submit Servo performance data to S3. "
"Remember to set your S3 credentials "
"https://github.com/boto/boto3"))
parser.add_argument("perf_file",
help="the output CSV file from runner")
parser.add_argument("perf_key",
help="the S3 key to upload to")
args = parser.parse_args()

s3 = boto3.client('s3')
BUCKET = 'servo-perf'
s3.upload_file(args.perf_file, BUCKET, args.perf_key)

print("Done!")


if __name__ == "__main__":
main()
17 changes: 5 additions & 12 deletions etc/ci/performance/test_all.sh
Expand Up @@ -43,27 +43,20 @@ fi
echo "Starting the local server"
python3 -m http.server > /dev/null 2>&1 &

# TODO: enable the full manifest when #11087 is fixed
# https://github.com/servo/servo/issues/11087
# MANIFEST="page_load_test/tp5n/20160509.manifest"
# MANIFEST="page_load_test/tp5n/20160509.manifest" # A manifest that excludes
MANIFEST="page_load_test/test.manifest" # A manifest that excludes
# timeout test cases
PERF_FILE="output/perf-$(date +%s).csv"
PERF_KEY="perf-$(date +%s).csv"
PERF_FILE="output/${PERF_KEY}"

echo "Running tests"
python3 runner.py ${engine} --runs 4 --timeout "${timeout}" --base "${base}" \
"${MANIFEST}" "${PERF_FILE}"

if [[ "${submit:-}" ]];
then
echo "Submitting to Perfherder"
# Perfherder SSL check will fail if time is not accurate,
# sync time before you submit
# TODO: we are using Servo's revision hash for Gecko's result to make both
# results appear on the same date. Use the correct result when Perfherder
# allows us to change the date.
python3 submit_to_perfherder.py \
"${engine}" "${PERF_FILE}" servo/revision.json
echo "Submitting to S3"
python3 submit_to_s3.py "${PERF_FILE}" "${PERF_KEY}"
fi

echo "Stopping the local server"
Expand Down
2 changes: 1 addition & 1 deletion etc/ci/performance/test_perf.sh
Expand Up @@ -29,7 +29,7 @@ fi
virtualenv venv --python="$(which python3)"
PS1="" source venv/bin/activate
# `PS1` must be defined before activating virtualenv
pip install "treeherder-client>=3.0.0"
pip install "boto3>=1.4.0"

mkdir -p servo
mkdir -p output # Test result will be saved to output/perf-<timestamp>.json
Expand Down
6 changes: 0 additions & 6 deletions python/servo/testing_commands.py
Expand Up @@ -186,12 +186,6 @@ def test_perf(self, base=None, submit=False):
if base:
cmd += ["--base", base]
if submit:
if not ("TREEHERDER_CLIENT_ID" in os.environ and
"TREEHERDER_CLIENT_SECRET" in os.environ):
print("Please set the environment variable \"TREEHERDER_CLIENT_ID\""
" and \"TREEHERDER_CLIENT_SECRET\" to submit the performance"
" test result to perfherder")
return 1
cmd += ["--submit"]
return call(cmd,
env=env,
Expand Down

0 comments on commit 920ec6f

Please sign in to comment.