3 # Copyright (c) 2015 Orange
4 # morgan.richomme@orange.com
6 # This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
10 # http://www.apache.org/licenses/LICENSE-2.0
12 # This script is used to retieve data from test DB
13 # and format them into a json format adapted for a dashboard
19 from functest2Dashboard import format_functest_for_dashboard, \
20 check_functest_case_exist
21 from yardstick2Dashboard import format_yardstick_for_dashboard, \
22 check_yardstick_case_exist
23 from vsperf2Dashboard import format_vsperf_for_dashboard, \
24 check_vsperf_case_exist
25 from bottlenecks2Dashboard import format_bottlenecks_for_dashboard, \
26 check_bottlenecks_case_exist
27 from qtip2Dashboard import format_qtip_for_dashboard, \
29 from promise2Dashboard import format_promise_for_dashboard, \
30 check_promise_case_exist
31 from doctor2Dashboard import format_doctor_for_dashboard, \
32 check_doctor_case_exist
34 # any project test project wishing to provide dashboard ready values
35 # must include at least 2 methods
36 # - format_<Project>_for_dashboard
37 # - check_<Project>_case_exist
40 def check_dashboard_ready_project(test_project):
41 # Check that the first param corresponds to a project
42 # for whoch dashboard processing is available
43 # print("test_project: %s" % test_project)
44 project_module = 'opnfv_testapi.dashboard.'+test_project + '2Dashboard'
45 return True if project_module in sys.modules else False
48 def check_dashboard_ready_case(project, case):
49 cmd = "check_" + project + "_case_exist"
50 return globals()[cmd](case)
53 def get_dashboard_projects():
54 # Retrieve all the projects that could provide
55 # Dashboard ready graphs
56 # look in the releng repo
57 # search all the project2Dashboard.py files
58 # we assume that dashboard processing of project <Project>
59 # is performed in the <Project>2Dashboard.py file
61 cp = re.compile('opnfv_testapi\.dashboard\.(.+?)2Dashboard')
62 for module in sys.modules:
63 project = re.findall(cp, module)
65 projects.extend(project)
69 def get_dashboard_result(project, case, results=None):
70 # get the dashboard ready results
72 # project: project name
73 # results: array of raw results pre-filterded
74 # according to the parameters of the request
75 cmd = "format_" + project + "_for_dashboard"
76 return globals()[cmd](case, results)