# 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' URL = 'https://wrperf.org/submit' 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)