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