benchmarking/remote/django_url_printer.py (81 lines of code) (raw):

from __future__ import absolute_import, division, print_function, unicode_literals import json import os import urllib from remote.url_printer_base import URLPrinterBase from remote.url_printer_base import registerResultURL DJANGO_SUB_URL = "benchmark/visualize" DISPLAY_COLUMNS = [ "identifier", "metric", "net_name", "p10", "p50", "p90", "platform", "time", "type", "user_identifier", ] class DjangoURLPrinter(URLPrinterBase): def __init__(self, args): self.args = args self.db_url = os.path.join(self.args.server_addr, DJANGO_SUB_URL) def getColumnSelParams(self): col_sel_params = [] for display_column in DISPLAY_COLUMNS: col_param = { "name": "columns", "value": display_column, } col_sel_params.append(col_param) return col_sel_params def getGraphConfParams(self): graph_conf_params = [ { "name": "graph-type-dropdown", "value": "bar-graph", }, { "name": "rank-column-dropdown", "value": "p10", }, ] return graph_conf_params def getFilterParams(self, user_identifier): if user_identifier is None: return {} filter_params = { "condition": "AND", "rules": [ { "id": "user_identifier", "field": "user_identifier", "type": "string", "input": "text", "operator": "equal", "value": str(user_identifier), } ], "valid": True, } return filter_params def getDjangoParams(self, user_identifier): col_sel_params = self.getColumnSelParams() graph_conf_params = self.getGraphConfParams() filter_params = self.getFilterParams(user_identifier) params = { "sort": "-p10", "selection_form": json.dumps(col_sel_params + graph_conf_params), "filters": json.dumps(filter_params), } return params def printURL(self, dataset, user_identifier, benchmarks): params = self.getDjangoParams(user_identifier) try: # pytyon 2 param_string = urllib.urlencode(params) except Exception: # python 3 param_string = urllib.parse.urlencode(params) url = (self.db_url + "?{}").format(param_string) print("Result URL => " + url) registerResultURL("django", DjangoURLPrinter)