mirror of
https://github.com/servo/servo.git
synced 2025-07-13 18:33:40 +01:00
Auto merge of #19244 - asajeffrey:test-perf-submit-to-s3, r=jdm
Submit test-perf CSV files to S3 <!-- Please describe your changes on the following line: --> Submit CSV files to S3 rather than json files to Perfherder. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes do not require tests because this is test infrastructure <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19244) <!-- Reviewable:end -->
This commit is contained in:
commit
755fa371cb
5 changed files with 85 additions and 16 deletions
50
etc/ci/performance/set_s3_policy.py
Normal file
50
etc/ci/performance/set_s3_policy.py
Normal file
|
@ -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
etc/ci/performance/submit_to_s3.py
Normal file
30
etc/ci/performance/submit_to_s3.py
Normal file
|
@ -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()
|
|
@ -48,7 +48,8 @@ python3 -m http.server > /dev/null 2>&1 &
|
||||||
# MANIFEST="page_load_test/tp5n/20160509.manifest"
|
# MANIFEST="page_load_test/tp5n/20160509.manifest"
|
||||||
MANIFEST="page_load_test/test.manifest" # A manifest that excludes
|
MANIFEST="page_load_test/test.manifest" # A manifest that excludes
|
||||||
# timeout test cases
|
# timeout test cases
|
||||||
PERF_FILE="output/perf-$(uname -s)-$(uname -m)-$(date +%s).csv"
|
PERF_KEY="perf-$(uname -s)-$(uname -m)-$(date +%s).csv"
|
||||||
|
PERF_FILE="output/${PERF_KEY}"
|
||||||
|
|
||||||
echo "Running tests"
|
echo "Running tests"
|
||||||
python3 runner.py ${engine} --runs 4 --timeout "${timeout}" --base "${base}" \
|
python3 runner.py ${engine} --runs 4 --timeout "${timeout}" --base "${base}" \
|
||||||
|
@ -56,14 +57,8 @@ python3 runner.py ${engine} --runs 4 --timeout "${timeout}" --base "${base}" \
|
||||||
|
|
||||||
if [[ "${submit:-}" ]];
|
if [[ "${submit:-}" ]];
|
||||||
then
|
then
|
||||||
echo "Submitting to Perfherder"
|
echo "Submitting to S3"
|
||||||
# Perfherder SSL check will fail if time is not accurate,
|
python3 submit_to_s3.py "${PERF_FILE}" "${PERF_KEY}"
|
||||||
# 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
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Stopping the local server"
|
echo "Stopping the local server"
|
||||||
|
|
|
@ -29,7 +29,7 @@ fi
|
||||||
virtualenv venv --python="$(which python3)"
|
virtualenv venv --python="$(which python3)"
|
||||||
PS1="" source venv/bin/activate
|
PS1="" source venv/bin/activate
|
||||||
# `PS1` must be defined before activating virtualenv
|
# `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 servo
|
||||||
mkdir -p output # Test result will be saved to output/perf-<timestamp>.json
|
mkdir -p output # Test result will be saved to output/perf-<timestamp>.json
|
||||||
|
|
|
@ -186,12 +186,6 @@ class MachCommands(CommandBase):
|
||||||
if base:
|
if base:
|
||||||
cmd += ["--base", base]
|
cmd += ["--base", base]
|
||||||
if submit:
|
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"]
|
cmd += ["--submit"]
|
||||||
return call(cmd,
|
return call(cmd,
|
||||||
env=env,
|
env=env,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue