mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
209 lines
7.1 KiB
Python
209 lines
7.1 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
"""
|
|
PerfConfigurator.py
|
|
|
|
Created by Rob Campbell on 2007-03-02.
|
|
Modified by Rob Campbell on 2007-05-30
|
|
Modified by Rob Campbell on 2007-06-26 - added -i buildid option
|
|
Modified by Rob Campbell on 2007-07-06 - added -d testDate option
|
|
Modified by Ben Hearsum on 2007-08-22 - bugfixes, cleanup, support for multiple platforms. Only works on Talos2
|
|
"""
|
|
|
|
import sys
|
|
import getopt
|
|
import re
|
|
import time
|
|
from datetime import datetime
|
|
from os import path
|
|
|
|
executablePath = "C:\\cygwin\\tmp\\test\\"
|
|
configFilePath = "C:\\mozilla\\testing\\performance\\talos\\"
|
|
|
|
# TODO: maybe this should be searched for?
|
|
# For Windows
|
|
#masterIniSubpath = path.join("firefox", "extensions", "talkback@mozilla.org",
|
|
# "components", "master.ini")
|
|
# For Linux
|
|
masterIniSubpath = path.join("firefox", "components", "talkback", "master.ini")
|
|
# For OS X
|
|
# masterIniSubpath = path.join("*.app", "Contents", "MacOS", "extensions",
|
|
# "talkback@mozilla.org", "components",
|
|
# "talkback", "master.ini"
|
|
defaultTitle = "qm-pxp01"
|
|
|
|
help_message = '''
|
|
This is the buildbot performance runner's YAML configurator.bean
|
|
|
|
USAGE: python PerfConfigurator.py -e executablePath -c configFilePath
|
|
-b branchid -t title -o output -i buildid -d
|
|
'''
|
|
|
|
class PerfConfigurator:
|
|
exePath = ""
|
|
configPath = ""
|
|
outputName = ""
|
|
title = ""
|
|
branch = ""
|
|
buildid = ""
|
|
currentDate = ""
|
|
verbose = False
|
|
testDateFromBuildId = False
|
|
|
|
def _dumpConfiguration(self):
|
|
"""dump class configuration for convenient pickup or perusal"""
|
|
print "Writing configuration:"
|
|
print " - title = " + self.title
|
|
print " - executablePath = " + self.exePath
|
|
print " - configPath = " + self.configPath
|
|
print " - outputName = " + self.outputName
|
|
print " - branch = " + self.branch
|
|
print " - buildid = " + self.buildid
|
|
print " - currentDate = " + self.currentDate
|
|
|
|
def _getCurrentDateString(self):
|
|
currentDateTime = datetime.now()
|
|
return currentDateTime.strftime("%Y%m%d_%H%M")
|
|
|
|
def _getCurrentBuildId(self):
|
|
master = open(path.join(self.exePath, masterIniSubpath))
|
|
if not master:
|
|
raise Configuration("Unable to open "
|
|
+ path.join(self.exePath, masterIniSubpath))
|
|
masterContents = master.readlines()
|
|
master.close()
|
|
reBuildid = re.compile('BuildID\s*=\s*"(\d{10})"')
|
|
for line in masterContents:
|
|
match = re.match(reBuildid, line)
|
|
if match:
|
|
return match.group(1)
|
|
raise Configuration("BuildID not found in "
|
|
+ path.join(self.exePath, masterIniSubpath))
|
|
|
|
def _getTimeFromBuildId(self):
|
|
buildIdTime = time.strptime(self.buildid, "%Y%m%d%H")
|
|
return time.strftime("%a, %d %b %Y %H:%M:%S GMT", buildIdTime)
|
|
|
|
def writeConfigFile(self):
|
|
configFile = open(path.join(self.configPath, "sample.config"))
|
|
self.currentDate = self._getCurrentDateString()
|
|
if not self.buildid:
|
|
self.buildid = self._getCurrentBuildId()
|
|
if not self.outputName:
|
|
self.outputName = self.currentDate + "_config.yml"
|
|
destination = open(self.outputName, "w")
|
|
config = configFile.readlines()
|
|
configFile.close()
|
|
buildidString = "'" + str(self.buildid) + "'"
|
|
for line in config:
|
|
newline = line
|
|
if 'firefox:' in line:
|
|
newline = 'firefox: ' + self.exePath
|
|
if 'title:' in line:
|
|
newline = 'title: ' + self.title
|
|
if self.testDateFromBuildId:
|
|
newline += '\n'
|
|
newline += 'testdate: "%s"\n' % self._getTimeFromBuildId()
|
|
if 'buildid:' in line:
|
|
newline = 'buildid: ' + buildidString
|
|
if 'testbranch' in line:
|
|
newline = 'branch: ' + self.branch
|
|
destination.write(newline)
|
|
destination.close()
|
|
if self.verbose:
|
|
self._dumpConfiguration()
|
|
|
|
def __init__(self, **kwargs):
|
|
if 'title' in kwargs:
|
|
self.title = kwargs['title']
|
|
if 'branch' in kwargs:
|
|
self.branch = kwargs['branch']
|
|
if 'executablePath' in kwargs:
|
|
self.exePath = kwargs['executablePath']
|
|
if 'configFilePath' in kwargs:
|
|
self.configPath = kwargs['configFilePath']
|
|
if 'outputName' in kwargs:
|
|
self.outputName = kwargs['outputName']
|
|
if 'buildid' in kwargs:
|
|
self.buildid = kwargs['buildid']
|
|
if 'verbose' in kwargs:
|
|
self.verbose = kwargs['verbose']
|
|
if 'testDate' in kwargs:
|
|
self.testDateFromBuildId = kwargs['testDate']
|
|
|
|
|
|
class Configuration(Exception):
|
|
def __init__(self, msg):
|
|
self.msg = "ERROR: " + msg
|
|
|
|
class Usage(Exception):
|
|
def __init__(self, msg):
|
|
self.msg = msg
|
|
|
|
|
|
def main(argv=None):
|
|
exePath = executablePath
|
|
configPath = configFilePath
|
|
output = ""
|
|
title = defaultTitle
|
|
branch = ""
|
|
testDate = False
|
|
verbose = False
|
|
buildid = ""
|
|
|
|
if argv is None:
|
|
argv = sys.argv
|
|
try:
|
|
try:
|
|
opts, args = getopt.getopt(argv[1:], "hve:c:t:b:o:i:d",
|
|
["help", "verbose", "executablePath=", "configFilePath=", "title=",
|
|
"branch=", "output=", "id=", "testDate"])
|
|
except getopt.error, msg:
|
|
raise Usage(msg)
|
|
|
|
# option processing
|
|
for option, value in opts:
|
|
if option in ("-v", "--verbose"):
|
|
verbose = True
|
|
if option in ("-h", "--help"):
|
|
raise Usage(help_message)
|
|
if option in ("-e", "--executablePath"):
|
|
exePath = value
|
|
if option in ("-c", "--configFilePath"):
|
|
configPath = value
|
|
if option in ("-t", "--title"):
|
|
title = value
|
|
if option in ("-b", "--branch"):
|
|
branch = value
|
|
if option in ("-o", "--output"):
|
|
output = value
|
|
if option in ("-i", "--id"):
|
|
buildid = value
|
|
if option in ("-d", "--testDate"):
|
|
testDate = True
|
|
|
|
except Usage, err:
|
|
print >> sys.stderr, sys.argv[0].split("/")[-1] + ": " + str(err.msg)
|
|
print >> sys.stderr, "\t for help use --help"
|
|
return 2
|
|
|
|
configurator = PerfConfigurator(title=title,
|
|
executablePath=exePath,
|
|
configFilePath=configPath,
|
|
buildid=buildid,
|
|
branch=branch,
|
|
verbose=verbose,
|
|
testDate=testDate,
|
|
outputName=output)
|
|
try:
|
|
configurator.writeConfigFile()
|
|
except Configuration, err:
|
|
print >> sys.stderr, sys.argv[0].split("/")[-1] + ": " + str(err.msg)
|
|
return 5
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|
|
|