Source code

Revision control

Copy as Markdown

Other Tools

# 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/.
from __future__ import print_function
import json
import os
import subprocess
import time
import urllib2
FILE = 'perf.json'
while True:
try:
# Remove any previous results
try:
os.remove(FILE)
except Exception:
pass
# Pull latest code
subprocess.call(["git", "pull"])
# Get the git revision of this build
revision = subprocess.check_output(["git", "rev-parse", "HEAD"]).strip()
# Build
subprocess.call(["cargo", "build", "--release"])
# Run benchmarks
env = os.environ.copy()
# Ensure that vsync is disabled, to get meaningful 'composite' times.
env['vblank_mode'] = '0'
subprocess.call(["cargo", "run", "--release", "--", "perf", FILE], env=env)
# Read the results
with open(FILE) as file:
results = json.load(file)
# Post the results to server
payload = {
'key': env['WEBRENDER_PERF_KEY'],
'revision': revision,
'timestamp': str(time.time()),
'tests': results['tests'],
}
req = urllib2.Request(URL,
headers={"Content-Type": "application/json"},
data=json.dumps(payload))
f = urllib2.urlopen(req)
except Exception as e:
print(e)
# Delay a bit until next benchmark
time.sleep(60 * 60)