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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#!/usr/bin/python
#
# 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
#
import re
class TestCase(object):
def __init__(self, name, project, constraints,
criteria=-1, isRunnable=True, tier=-1):
self.name = name
self.project = project
self.constraints = constraints
self.criteria = criteria
self.isRunnable = isRunnable
self.tier = tier
def getName(self):
return self.name
def getProject(self):
return self.project
def getConstraints(self):
return self.constraints
def getCriteria(self):
return self.criteria
def getTier(self):
return self.tier
def setCriteria(self, criteria):
self.criteria = criteria
def setIsRunnable(self, isRunnable):
self.isRunnable = isRunnable
def checkRunnable(self, installer, scenario, config):
# Re-use Functest declaration
# Retrieve Functest configuration file functest_config.yaml
is_runnable = True
config_test = config
# print " *********************** "
# print TEST_ENV
# print " ---------------------- "
# print "case = " + self.name
# print "installer = " + installer
# print "scenario = " + scenario
# print "project = " + self.project
# Retrieve test constraints
# Retrieve test execution param
test_execution_context = {"installer": installer,
"scenario": scenario}
# By default we assume that all the tests are always runnable...
# if test_env not empty => dependencies to be checked
if config_test is not None and len(config_test) > 0:
# possible criteria = ["installer", "scenario"]
# consider test criteria from config file
# compare towards CI env through CI en variable
for criteria in config_test:
if re.search(config_test[criteria],
test_execution_context[criteria]) is None:
# print "Test "+ test + " cannot be run on the environment"
is_runnable = False
# print is_runnable
self.isRunnable = is_runnable
def toString(self):
testcase = ("Name=" + self.name + ";Criteria=" + str(self.criteria)
+ ";Project=" + self.project + ";Constraints="
+ str(self.constraints) + ";IsRunnable"
+ str(self.isRunnable))
return testcase
def getDbName(self):
# Correspondance name of the test case / name in the DB
# ideally we should modify the DB to avoid such interface....
# '<name in the config>':'<name in the DB>'
# I know it is uggly...
test_match_matrix = {'healthcheck': 'healthcheck',
'vping_ssh': 'vping_ssh',
'vping_userdata': 'vping_userdata',
'odl': 'odl',
'onos': 'onos',
'ocl': 'ocl',
'tempest_smoke_serial': 'tempest_smoke_serial',
'tempest_full_parallel': 'tempest_full_parallel',
'rally_sanity': 'rally_sanity',
'bgpvpn': 'bgpvpn',
'rally_full': 'rally_full',
'vims': 'vims',
'doctor': 'doctor-notification',
'promise': 'promise'
}
try:
return test_match_matrix[self.name]
except:
return "unknown"
def getTestDisplayName(self):
# Correspondance name of the test case / name in the DB
test_match_matrix = {'healthcheck': 'healthcheck',
'vping_ssh': 'vPing (ssh)',
'vping_userdata': 'vPing (userdata)',
'odl': 'ODL',
'onos': 'ONOS',
'ocl': 'OCL',
'tempest_smoke_serial': 'Tempest (smoke)',
'tempest_full_parallel': 'Tempest (full)',
'rally_sanity': 'Rally (smoke)',
'bgpvpn': 'bgpvpn',
'rally_full': 'Rally (full)',
'vims': 'vIMS',
'doctor': 'Doctor',
'promise': 'Promise'
}
try:
return test_match_matrix[self.name]
except:
return "unknown"
|