summaryrefslogtreecommitdiffstats
path: root/utils/test/result_collection_api/dashboard/dashboard_utils.py
blob: 8d83b006a661679f595c067b9cf5a475f03dece0 (plain)
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
77
78
#!/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 os
import re
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

# 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, path):
    # Check that the first param corresponds to a project
    # for whoch dashboard processing is available
    subdirectories = os.listdir(path)
    for testfile in subdirectories:
        m = re.search('^(.*)(2Dashboard.py)$', testfile)
        if m:
            if (m.group(1) == test_project):
                return True
    return False


def check_dashboard_ready_case(project, case):
    cmd = "check_" + project + "_case_exist(case)"
    return eval(cmd)


def get_dashboard_cases(path):
    # Retrieve all the test cases 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
    dashboard_test_cases = []
    subdirectories = os.listdir(path)
    for testfile in subdirectories:
        m = re.search('^(.*)(2Dashboard.py)$', testfile)
        if m:
            dashboard_test_cases.append(m.group(1))

    return dashboard_test_cases


def get_dashboard_result(project, case, results):
    # 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(case,results)"
    res = eval(cmd)
    return res