diff options
Diffstat (limited to 'buildscripts/benchmark_tools.py')
-rw-r--r-- | buildscripts/benchmark_tools.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/buildscripts/benchmark_tools.py b/buildscripts/benchmark_tools.py new file mode 100644 index 0000000..54a86b0 --- /dev/null +++ b/buildscripts/benchmark_tools.py @@ -0,0 +1,62 @@ +import os +import urllib +import urllib2 +import sys + +try: + import json +except: + import simplejson as json # need simplejson for python < 2.6 + +sys.path.append( "." ) +sys.path.append( ".." ) +sys.path.append( "../../" ) +sys.path.append( "../../../" ) + + +import settings + +def machine_info(extra_info=""): + """Get a dict representing the "machine" section of a benchmark result. + + ie: + { + "os_name": "OS X", + "os_version": "10.5", + "processor": "2.4 GHz Intel Core 2 Duo", + "memory": "3 GB 667 MHz DDR2 SDRAM", + "extra_info": "Python 2.6" + } + + Must have a settings.py file on sys.path that defines "processor" and "memory" + variables. + """ + machine = {} + (machine["os_name"], _, machine["os_version"], _, _) = os.uname() + machine["processor"] = settings.processor + machine["memory"] = settings.memory + machine["extra_info"] = extra_info + return machine + +def post_data(data, machine_extra_info="", post_url="http://mongo-db.appspot.com/benchmark"): + """Post a benchmark data point. + + data should be a Python dict that looks like: + { + "benchmark": { + "project": "http://github.com/mongodb/mongo-python-driver", + "name": "insert test", + "description": "test inserting 10000 documents with the C extension enabled", + "tags": ["insert", "python"] + }, + "trial": { + "server_hash": "4f5a8d52f47507a70b6c625dfb5dbfc87ba5656a", + "client_hash": "8bf2ad3d397cbde745fd92ad41c5b13976fac2b5", + "result": 67.5, + "extra_info": "some logs or something" + } + } + """ + data["machine"] = machine_info(machine_extra_info) + urllib2.urlopen(post_url, urllib.urlencode({"payload": json.dumps(data)})) + return data |