diff options
Diffstat (limited to 'utils/dashboard')
-rw-r--r-- | utils/dashboard/process_data.py | 41 | ||||
-rwxr-xr-x | utils/dashboard/rubbos_collector.py | 22 | ||||
-rwxr-xr-x | utils/dashboard/uploader.py | 8 |
3 files changed, 41 insertions, 30 deletions
diff --git a/utils/dashboard/process_data.py b/utils/dashboard/process_data.py index d4b2ccfb..e71a1e82 100644 --- a/utils/dashboard/process_data.py +++ b/utils/dashboard/process_data.py @@ -13,6 +13,7 @@ import sys from rubbos_collector import RubbosCollector from uploader import Uploader + def printUsage(): print "Usage: python process_data.py required_params(**) optional_params([])" print " ** -i|--input input_data_dir" @@ -21,12 +22,14 @@ def printUsage(): print " [] -o|--output output_file" print " [] -u|--upload yes|no" + def process(input_dir, suite_name): result = dict() if suite_name == "rubbos": result = RubbosCollector().collect_data(input_dir) return result + def writeResult(output_file, result): f = open(output_file, "w") if isinstance(result, list): @@ -34,41 +37,43 @@ def writeResult(output_file, result): f.write(str(elem) + "\n") f.close() + def uploadResult(conf, suite_name, result): Uploader(conf).upload_result(suite_name, result) + def main(): if len(sys.argv) < 7 or len(sys.argv) % 2 == 0: printUsage() - exit (1) + exit(1) i = 1 params = dict() while (i < len(sys.argv)): - if sys.argv[i]=="-i" or sys.argv[i]=="--input": - params["input"] = sys.argv[i+1] - if sys.argv[i]=="-s" or sys.argv[i]=="--suite": - params["suite"] = sys.argv[i+1] - if sys.argv[i]=="-c" or sys.argv[i]=="--conf": - params["conf"] = sys.argv[i+1] - if sys.argv[i]=="-o" or sys.argv[i]=="--output": - params["output"] = sys.argv[i+1] - if sys.argv[i]=="-u" or sys.argv[i]=="--upload": - params["upload"] = sys.argv[i+1] - i = i+2 - if not(params.has_key("input") and params.has_key("suite") and params.has_key("conf")): + if sys.argv[i] == "-i" or sys.argv[i] == "--input": + params["input"] = sys.argv[i + 1] + if sys.argv[i] == "-s" or sys.argv[i] == "--suite": + params["suite"] = sys.argv[i + 1] + if sys.argv[i] == "-c" or sys.argv[i] == "--conf": + params["conf"] = sys.argv[i + 1] + if sys.argv[i] == "-o" or sys.argv[i] == "--output": + params["output"] = sys.argv[i + 1] + if sys.argv[i] == "-u" or sys.argv[i] == "--upload": + params["upload"] = sys.argv[i + 1] + i = i + 2 + if not("input" in params and "suite" in params and "conf" in params): print "Lack some required parameters." - exit (1) + exit(1) result = process(params["input"], params["suite"]) print "Results:" for elem in result: print elem - if params.has_key("output"): - writeResult(params["output"],result) + if "output" in params: + writeResult(params["output"], result) - if params.has_key("upload") and params["upload"].lower()=="yes": + if "upload" in params and params["upload"].lower() == "yes": uploadResult(params["conf"], params["suite"], result) -if __name__=="__main__": +if __name__ == "__main__": main() diff --git a/utils/dashboard/rubbos_collector.py b/utils/dashboard/rubbos_collector.py index c9851739..d9f86032 100755 --- a/utils/dashboard/rubbos_collector.py +++ b/utils/dashboard/rubbos_collector.py @@ -10,16 +10,18 @@ import subprocess as subp + def exec_shell(cmd): - out,err = subp.Popen(cmd, stdout=subp.PIPE, shell=True).communicate() + out, err = subp.Popen(cmd, stdout=subp.PIPE, shell=True).communicate() return out.strip() + def get_onetime_data(dir_name): cmd = "grep -in 'remote client nodes' %s/index.html|awk '{print $5}'|awk -F '<' '{print $1}'" % dir_name client_node_num = int(exec_shell(cmd)) cmd = "grep -n 'Number of clients' %s/index.html|awk '{print $5}'|awk -F '<' '{print $1}'" % dir_name each_client_num = int(exec_shell(cmd)) - total_client = (client_node_num+1) * each_client_num + total_client = (client_node_num + 1) * each_client_num cmd = 'grep -n "throughput" %s/stat_client*.html |awk -F "<B>" \'{if (FNR%%2==0 && FNR%%4!=0) {printf "%%s\\n", $3}}\'|awk \'BEGIN{sum=0;}{sum=sum+$1;}END{print sum}\'' % dir_name throughput = int(exec_shell(cmd)) @@ -39,11 +41,15 @@ class RubbosCollector(object): pass def collect_data(self, data_home): - cmd = 'ls -l %s |grep ^d|awk \'{print $9}\'' % data_home + cmd = 'ls -l %s |grep ^d|awk \'{print $9}\'' % data_home result = [] for subdir in exec_shell(cmd).split('\n'): - total_client, throughput, request, error_request = get_onetime_data(data_home+'/'+subdir) - result.append({'client':total_client, 'throughput':throughput, 'request':request, 'error_request':error_request}) - result.sort(key=lambda x:x['client']) - - return result; + total_client, throughput, request, error_request = get_onetime_data( + data_home + '/' + subdir) + result.append({'client': total_client, + 'throughput': throughput, + 'request': request, + 'error_request': error_request}) + result.sort(key=lambda x: x['client']) + + return result diff --git a/utils/dashboard/uploader.py b/utils/dashboard/uploader.py index 07862fed..a4686560 100755 --- a/utils/dashboard/uploader.py +++ b/utils/dashboard/uploader.py @@ -29,7 +29,6 @@ class Uploader(object): self.result['version'] = dashboard_conf['version'] self.target = dashboard_conf['target'] - def upload_result(self, case_name, raw_data): if self.target == '': print('No target was set, so no data will be posted.') @@ -43,7 +42,9 @@ class Uploader(object): data=json.dumps(self.result), headers=self.headers, timeout=self.timeout) - print('Test result posting finished with status code %d.' % res.status_code) + print( + 'Test result posting finished with status code %d.' % + res.status_code) except Exception as err: print ('Failed to record result data: %s', err) @@ -55,10 +56,9 @@ def _test(): print ("no argumens input!!") exit(1) - with open(sys.argv[1],'r') as stream: + with open(sys.argv[1], 'r') as stream: data = json.load(stream) Uploader().upload_result(data) if __name__ == "__main__": _test() - |