123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- from __future__ import print_function
- from __future__ import absolute_import
- import argparse
- import os
- import re
- import copy
- import uuid
- import calendar
- import time
- import datetime
- from util import big_query_utils
- from util import result_parser
- _PROJECT_ID = 'grpc-testing'
- _DATASET = 'protobuf_benchmark_result'
- _TABLE = 'opensource_result_v2'
- _NOW = "%d%02d%02d" % (datetime.datetime.now().year,
- datetime.datetime.now().month,
- datetime.datetime.now().day)
- _INITIAL_TIME = calendar.timegm(time.gmtime())
- def get_metadata():
- build_number = os.getenv('BUILD_NUMBER')
- build_url = os.getenv('BUILD_URL')
- job_name = os.getenv('JOB_NAME')
- git_commit = os.getenv('GIT_COMMIT')
- # actual commit is the actual head of PR that is getting tested
- git_actual_commit = os.getenv('ghprbActualCommit')
- utc_timestamp = str(calendar.timegm(time.gmtime()))
- metadata = {'created': utc_timestamp}
- if build_number:
- metadata['buildNumber'] = build_number
- if build_url:
- metadata['buildUrl'] = build_url
- if job_name:
- metadata['jobName'] = job_name
- if git_commit:
- metadata['gitCommit'] = git_commit
- if git_actual_commit:
- metadata['gitActualCommit'] = git_actual_commit
- return metadata
- def upload_result(result_list, metadata):
- for result in result_list:
- new_result = {}
- new_result["metric"] = "throughput"
- new_result["value"] = result["throughput"]
- new_result["unit"] = "MB/s"
- new_result["test"] = "protobuf_benchmark"
- new_result["product_name"] = "protobuf"
- labels_string = ""
- for key in result:
- labels_string += ",|%s:%s|" % (key, result[key])
- new_result["labels"] = labels_string[1:]
- new_result["timestamp"] = _INITIAL_TIME
- print(labels_string)
- bq = big_query_utils.create_big_query()
- row = big_query_utils.make_row(str(uuid.uuid4()), new_result)
- if not big_query_utils.insert_rows(bq, _PROJECT_ID, _DATASET,
- _TABLE + "$" + _NOW,
- [row]):
- print('Error when uploading result', new_result)
- if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("-cpp", "--cpp_input_file",
- help="The CPP benchmark result file's name",
- default="")
- parser.add_argument("-java", "--java_input_file",
- help="The Java benchmark result file's name",
- default="")
- parser.add_argument("-python", "--python_input_file",
- help="The Python benchmark result file's name",
- default="")
- parser.add_argument("-go", "--go_input_file",
- help="The golang benchmark result file's name",
- default="")
- parser.add_argument("-node", "--node_input_file",
- help="The node.js benchmark result file's name",
- default="")
- parser.add_argument("-php", "--php_input_file",
- help="The pure php benchmark result file's name",
- default="")
- parser.add_argument("-php_c", "--php_c_input_file",
- help="The php with c ext benchmark result file's name",
- default="")
- args = parser.parse_args()
- metadata = get_metadata()
- print("uploading results...")
- upload_result(result_parser.get_result_from_file(
- cpp_file=args.cpp_input_file,
- java_file=args.java_input_file,
- python_file=args.python_input_file,
- go_file=args.go_input_file,
- node_file=args.node_input_file,
- php_file=args.php_input_file,
- php_c_file=args.php_c_input_file,
- ), metadata)
|