581821117e736d719beddf43eea552fe19a0126a
[functest.git] / ci / tier_handler.py
1 #!/usr/bin/env python
2 #
3 # jose.lausuch@ericsson.com
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9
10
11 import re
12
13
14 class Tier:
15     def __init__(self, name, order, ci, description=""):
16         self.tests_array = []
17         self.name = name
18         self.order = order
19         self.ci = ci
20         self.description = description
21
22     def add_test(self, testcase):
23         self.tests_array.append(testcase)
24
25     def get_tests(self):
26         array_tests = []
27         for test in self.tests_array:
28             array_tests.append(test)
29         return array_tests
30
31     def get_test_names(self):
32         array_tests = []
33         for test in self.tests_array:
34             array_tests.append(test.get_name())
35         return array_tests
36
37     def get_test(self, test_name):
38         if self.is_test(test_name):
39             for test in self.tests_array:
40                 if test.get_name() == test_name:
41                     return test
42         return None
43
44     def is_test(self, test_name):
45         for test in self.tests_array:
46             if test.get_name() == test_name:
47                 return True
48         return False
49
50     def get_name(self):
51         return self.name
52
53     def __str__(self):
54         lines = []
55         line_max = 50
56         line = ""
57         line_count = 0
58         for i in range(len(self.description)):
59             line += self.description[i]
60             if line_count >= line_max - 1:
61                 line_count = 0
62                 lines.append(line)
63                 line = ""
64             else:
65                 line_count += 1
66         if line != "":
67             lines.append(line)
68
69         out = ""
70         out += ("+=======================================================+\n")
71         out += ("| Tier:  " + self.name.ljust(47) + "|\n")
72         out += ("+=======================================================+\n")
73         out += ("| Order: " + str(self.order).ljust(47) + "|\n")
74         out += ("| Description:                                          |\n")
75         for i in range(len(lines)):
76             out += ("|    " + lines[i].ljust(50) + " |\n")
77         out += ("| Test cases:                                           |\n")
78         tests = self.get_test_names()
79         if len(tests) > 0:
80             for i in range(len(tests)):
81                 out += ("|    - %s |\n" % tests[i].ljust(48))
82         else:
83             out += ("|    (There are no supported test cases "
84                     .ljust(56) + "|\n")
85             out += ("|    in this tier for the given scenario) "
86                     .ljust(56) + "|\n")
87         out += ("|".ljust(56) + "|\n")
88         out += ("+-------------------------------------------------------+\n")
89         return out
90
91
92 class TestCase:
93     def __init__(self, name, dependency, description=""):
94         self.name = name
95         self.dependency = dependency
96         self.description = description
97
98     def is_compatible(self, ci_installer, ci_scenario):
99         if re.search(self.dependency.get_installer(), ci_installer) is None:
100             return False
101
102         if re.search(self.dependency.get_scenario(), ci_scenario) is None:
103             return False
104
105         return True
106
107     def get_name(self):
108         return self.name
109
110     def __str__(self):
111         lines = []
112         line_max = 50
113         line = ""
114         line_count = 0
115         for i in range(len(self.description)):
116             line += self.description[i]
117             if line_count >= line_max - 1:
118                 line_count = 0
119                 lines.append(line)
120                 line = ""
121             else:
122                 line_count += 1
123         if line != "":
124             lines.append(line)
125
126         out = ""
127         out += ("+=======================================================+\n")
128         out += ("| Testcase:  " + self.name.ljust(43) + "|\n")
129         out += ("+=======================================================+\n")
130         out += ("| Description:                                          |\n")
131         for i in range(len(lines)):
132             out += ("|    " + lines[i].ljust(50) + " |\n")
133         out += ("| Dependencies:                                         |\n")
134         installer = self.dependency.get_installer()
135         scenario = self.dependency.get_scenario()
136         out += ("|    - Installer: " + installer.ljust(38) + "|\n")
137         out += ("|    - Scenario : " + scenario.ljust(38) + "|\n")
138         out += ("|".ljust(56) + "|\n")
139         out += ("+-------------------------------------------------------+\n")
140         return out
141
142
143 class Dependency:
144     def __init__(self, installer, scenario):
145         self.installer = installer
146         self.scenario = scenario
147
148     def get_installer(self):
149         return self.installer
150
151     def get_scenario(self):
152         return self.scenario
153
154     def __str__(self):
155         return ("Dependency info:\n"
156                 "        installer: " + self.installer + "\n"
157                 "        scenario:  " + self.scenario + "\n")