result_uploader.py
Go to the documentation of this file.
1 from __future__ import print_function
2 from __future__ import absolute_import
3 import argparse
4 import os
5 import re
6 import copy
7 import uuid
8 import calendar
9 import time
10 import datetime
11 
12 from util import big_query_utils
13 from util import result_parser
14 
15 _PROJECT_ID = 'grpc-testing'
16 _DATASET = 'protobuf_benchmark_result'
17 _TABLE = 'opensource_result_v2'
18 _NOW = "%d%02d%02d" % (datetime.datetime.now().year,
19  datetime.datetime.now().month,
20  datetime.datetime.now().day)
21 
22 _INITIAL_TIME = calendar.timegm(time.gmtime())
23 
25  build_number = os.getenv('BUILD_NUMBER')
26  build_url = os.getenv('BUILD_URL')
27  job_name = os.getenv('JOB_NAME')
28  git_commit = os.getenv('GIT_COMMIT')
29  # actual commit is the actual head of PR that is getting tested
30  git_actual_commit = os.getenv('ghprbActualCommit')
31 
32  utc_timestamp = str(calendar.timegm(time.gmtime()))
33  metadata = {'created': utc_timestamp}
34 
35  if build_number:
36  metadata['buildNumber'] = build_number
37  if build_url:
38  metadata['buildUrl'] = build_url
39  if job_name:
40  metadata['jobName'] = job_name
41  if git_commit:
42  metadata['gitCommit'] = git_commit
43  if git_actual_commit:
44  metadata['gitActualCommit'] = git_actual_commit
45 
46  return metadata
47 
48 
49 def upload_result(result_list, metadata):
50  for result in result_list:
51  new_result = {}
52  new_result["metric"] = "throughput"
53  new_result["value"] = result["throughput"]
54  new_result["unit"] = "MB/s"
55  new_result["test"] = "protobuf_benchmark"
56  new_result["product_name"] = "protobuf"
57  labels_string = ""
58  for key in result:
59  labels_string += ",|%s:%s|" % (key, result[key])
60  new_result["labels"] = labels_string[1:]
61  new_result["timestamp"] = _INITIAL_TIME
62  print(labels_string)
63 
64  bq = big_query_utils.create_big_query()
65  row = big_query_utils.make_row(str(uuid.uuid4()), new_result)
66  if not big_query_utils.insert_rows(bq, _PROJECT_ID, _DATASET,
67  _TABLE + "$" + _NOW,
68  [row]):
69  print('Error when uploading result', new_result)
70 
71 
72 if __name__ == "__main__":
73  parser = argparse.ArgumentParser()
74  parser.add_argument("-cpp", "--cpp_input_file",
75  help="The CPP benchmark result file's name",
76  default="")
77  parser.add_argument("-java", "--java_input_file",
78  help="The Java benchmark result file's name",
79  default="")
80  parser.add_argument("-python", "--python_input_file",
81  help="The Python benchmark result file's name",
82  default="")
83  parser.add_argument("-go", "--go_input_file",
84  help="The golang benchmark result file's name",
85  default="")
86  parser.add_argument("-node", "--node_input_file",
87  help="The node.js benchmark result file's name",
88  default="")
89  parser.add_argument("-php", "--php_input_file",
90  help="The pure php benchmark result file's name",
91  default="")
92  parser.add_argument("-php_c", "--php_c_input_file",
93  help="The php with c ext benchmark result file's name",
94  default="")
95  args = parser.parse_args()
96 
97  metadata = get_metadata()
98  print("uploading results...")
99  upload_result(result_parser.get_result_from_file(
100  cpp_file=args.cpp_input_file,
101  java_file=args.java_input_file,
102  python_file=args.python_input_file,
103  go_file=args.go_input_file,
104  node_file=args.node_input_file,
105  php_file=args.php_input_file,
106  php_c_file=args.php_c_input_file,
107  ), metadata)
update_failure_list.str
str
Definition: update_failure_list.py:41
print
static unsigned char * print(const cJSON *const item, cJSON_bool format, const internal_hooks *const hooks)
Definition: cJSON.c:1074
benchmarks.util.result_uploader.upload_result
def upload_result(result_list, metadata)
Definition: result_uploader.py:49
benchmarks.util.result_uploader.get_metadata
def get_metadata()
Definition: result_uploader.py:24


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:58