3 # Copyright (c) 2016 Ericsson AB and others.
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 """TierBuilder class to parse testcases config file"""
14 from xtesting.ci import tier_handler
15 from xtesting.utils import env
18 class TierBuilder(object):
19 # pylint: disable=missing-docstring
21 def __init__(self, testcases_file):
22 self.ci_installer = env.get('INSTALLER_TYPE')
23 self.ci_scenario = env.get('DEPLOY_SCENARIO')
24 self.testcases_file = testcases_file
25 self.dic_tier_array = None
26 self.tier_objects = []
27 self.testcases_yaml = None
30 def read_test_yaml(self):
31 with open(self.testcases_file) as tc_file:
32 self.testcases_yaml = yaml.safe_load(tc_file)
34 self.dic_tier_array = []
35 for tier in self.testcases_yaml.get("tiers"):
36 self.dic_tier_array.append(tier)
38 def generate_tiers(self):
39 if self.dic_tier_array is None:
42 del self.tier_objects[:]
43 for dic_tier in self.dic_tier_array:
44 tier = tier_handler.Tier(
45 name=dic_tier['name'], order=dic_tier['order'],
46 ci_loop=dic_tier['ci_loop'],
47 description=dic_tier['description'])
48 for dic_testcase in dic_tier['testcases']:
49 if not dic_testcase.get('dependencies'):
53 installer = dic_testcase['dependencies'].get(
55 scenario = dic_testcase['dependencies'].get(
57 dep = tier_handler.Dependency(installer, scenario)
59 testcase = tier_handler.TestCase(
60 name=dic_testcase['case_name'],
61 enabled=dic_testcase.get('enabled', True),
63 dependency=dep, criteria=dic_testcase['criteria'],
64 blocking=dic_testcase['blocking'],
65 description=dic_testcase['description'],
66 project=dic_testcase['project_name'])
67 if (testcase.is_compatible(self.ci_installer,
69 testcase.is_enabled()):
70 tier.add_test(testcase)
72 testcase.skipped = True
73 tier.skip_test(testcase)
75 self.tier_objects.append(tier)
78 return self.tier_objects
80 def get_tier_names(self):
82 for tier in self.tier_objects:
83 tier_names.append(tier.get_name())
86 def get_tier(self, tier_name):
87 for i in range(0, len(self.tier_objects)):
88 if self.tier_objects[i].get_name() == tier_name:
89 return self.tier_objects[i]
92 def get_tier_name(self, test_name):
93 for i in range(0, len(self.tier_objects)):
94 if self.tier_objects[i].is_test(test_name):
95 return self.tier_objects[i].name
98 def get_test(self, test_name):
99 for i in range(0, len(self.tier_objects)):
100 if self.tier_objects[i].is_test(test_name):
101 return self.tier_objects[i].get_test(test_name)
104 def get_tests(self, tier_name):
105 for i in range(0, len(self.tier_objects)):
106 if self.tier_objects[i].get_name() == tier_name:
107 return self.tier_objects[i].get_tests()
112 for i in range(0, len(self.tier_objects)):
113 output += str(self.tier_objects[i]) + "\n"