| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | from __future__ import print_functionfrom __future__ import absolute_importimport argparseimport osimport reimport copyimport uuidimport calendarimport timeimport datetimefrom util import big_query_utilsfrom 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 metadatadef 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)
 |