Modified: CalendarServer/trunk/contrib/performance/benchmark.py (6469 => 6470)
--- CalendarServer/trunk/contrib/performance/benchmark.py 2010-10-26 18:23:52 UTC (rev 6469)
+++ CalendarServer/trunk/contrib/performance/benchmark.py 2010-10-27 16:21:58 UTC (rev 6470)
@@ -113,7 +113,12 @@
def _op_EXECUTE(self, cmd, rest):
- which, when = rest.split(None, 1)
+ try:
+ which, when = rest.split(None, 1)
+ except ValueError:
+ print 'Bad EXECUTE line: %r' % (rest,)
+ return
+
if which == 'SQL':
self.sql = when
return
Added: CalendarServer/trunk/contrib/performance/massupload.py (0 => 6470)
--- CalendarServer/trunk/contrib/performance/massupload.py (rev 0)
+++ CalendarServer/trunk/contrib/performance/massupload.py 2010-10-27 16:21:58 UTC (rev 6470)
@@ -0,0 +1,53 @@
+import sys, pickle
+
+from twisted.internet import reactor
+from twisted.internet.task import coiterate
+from twisted.python.usage import UsageError
+from twisted.python.log import err
+
+from benchlib import select
+from upload import UploadOptions, upload
+
+class MassUploadOptions(UploadOptions):
+ optParameters = [
+ ("benchmarks", None, None, ""),
+ ("parameters", None, None, ""),
+ ("statistics", None, None, "")]
+
+ opt_statistic = None
+
+ def parseArgs(self, filename):
+ self['filename'] = filename
+ UploadOptions.parseArgs(self)
+
+
+def main():
+ options = MassUploadOptions()
+ try:
+ options.parseOptions(sys.argv[1:])
+ except UsageError, e:
+ print e
+ return 1
+
+ fname = options['filename']
+ raw = pickle.load(file(fname))
+
+ def go():
+ for benchmark in options['benchmarks'].split():
+ for param in options['parameters'].split():
+ for statistic in options['statistics'].split():
+ stat, samples = select(
+ raw, benchmark, param, statistic)
+ samples = stat.squash(samples)
+ yield upload(
+ reactor,
+ options['url'], options['project'],
+ options['revision'], options['revision-date'],
+ benchmark, param, statistic,
+ options['backend'], options['environment'],
+ samples)
+
+ d = coiterate(go())
+ d.addErrback(err, "Mass upload failed")
+ reactor.callWhenRunning(d.addCallback, lambda ign: reactor.stop())
+ reactor.run()
Modified: CalendarServer/trunk/contrib/performance/upload.py (6469 => 6470)
--- CalendarServer/trunk/contrib/performance/upload.py 2010-10-26 18:23:52 UTC (rev 6469)
+++ CalendarServer/trunk/contrib/performance/upload.py 2010-10-27 16:21:58 UTC (rev 6470)
@@ -39,9 +39,9 @@
-def upload(reactor, url, project, revision, revision_date, benchmark,
- executable, environment, result_value, result_date, std_dev,
- max_value, min_value):
+def _upload(reactor, url, project, revision, revision_date, benchmark,
+ executable, environment, result_value, result_date, std_dev,
+ max_value, min_value):
data = {
'commitid': str(revision),
'revision_date': revision_date,
@@ -70,6 +70,25 @@
return d
+def upload(reactor, url, project, revision, revision_date, benchmark, param, statistic, backend, environment, samples):
+ d = _upload(
+ reactor,
+ url=url,
+ project=project,
+ revision=revision,
+ revision_date=revision_date,
+ benchmark='%s-%s-%s' % (benchmark, param, statistic),
+ executable='%s-backend' % (backend,),
+ environment=environment,
+ result_value=median(samples),
+ result_date=datetime.now(),
+ std_dev=mad(samples), # Not really!
+ max_value=max(samples),
+ min_value=min(samples))
+ d.addErrback(err, "Upload failed")
+ return d
+
+
def main():
options = UploadOptions()
try:
@@ -85,18 +104,10 @@
d = upload(
reactor,
- url=options['url'],
- project=options['project'],
- revision=options['revision'],
- revision_date=options['revision-date'],
- benchmark='%s-%s-%s' % (benchmark, param, statistic),
- executable='%s-backend' % (options['backend'],),
- environment=options['environment'],
- result_value=median(samples),
- result_date=datetime.now(),
- std_dev=mad(samples), # Not really!
- max_value=max(samples),
- min_value=min(samples))
- d.addErrback(err, "Upload failed")
+ options['url'], options['project'], options['revision'],
+ options['revision-date'],
+ benchmark, param, statistic,
+ options['backend'], options['environment'],
+ samples)
reactor.callWhenRunning(d.addCallback, lambda ign: reactor.stop())
reactor.run()