It avoids declaring dependencies if needed.
Negative regex are correcty managed as well.
Change-Id: I0e978823526246bc4a5192e63a8a893a4add0e2a
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
import re
import sys
import textwrap
-import pkg_resources
import enum
+import pkg_resources
import prettytable
import six
import yaml
self.clean_flag = True
self.report_flag = False
self.tiers = tier_builder.TierBuilder(
- env.get('INSTALLER_TYPE'),
- env.get('DEPLOY_SCENARIO'),
pkg_resources.resource_filename('xtesting', 'ci/testcases.yaml'))
@staticmethod
blocking: true
clean_flag: false
description: ''
- dependencies:
- installer: ''
- scenario: ''
run:
module: 'xtesting.samples.first'
class: 'Test'
blocking: true
clean_flag: false
description: ''
- dependencies:
- installer: ''
- scenario: ''
run:
module: 'xtesting.samples.second'
class: 'Test'
blocking: true
clean_flag: false
description: ''
- dependencies:
- installer: ''
- scenario: ''
run:
module: 'xtesting.core.feature'
class: 'BashFeature'
blocking: true
clean_flag: false
description: ''
- dependencies:
- installer: ''
- scenario: ''
run:
module: 'xtesting.core.unit'
class: 'Suite'
enabled: false
criteria: 100
blocking: false
+ clean_flag: false
description: ''
- dependencies:
- installer: ''
- scenario: ''
run:
module: 'xtesting.core.robotframework'
class: 'RobotFramework'
import yaml
-import xtesting.ci.tier_handler as th
+from xtesting.ci import tier_handler
+from xtesting.utils import env
class TierBuilder(object):
# pylint: disable=missing-docstring
- def __init__(self, ci_installer, ci_scenario, testcases_file):
- self.ci_installer = ci_installer
- self.ci_scenario = ci_scenario
+ def __init__(self, testcases_file):
+ self.ci_installer = env.get('INSTALLER_TYPE')
+ self.ci_scenario = env.get('DEPLOY_SCENARIO')
self.testcases_file = testcases_file
self.dic_tier_array = None
self.tier_objects = []
del self.tier_objects[:]
for dic_tier in self.dic_tier_array:
- tier = th.Tier(
+ tier = tier_handler.Tier(
name=dic_tier['name'], order=dic_tier['order'],
ci_loop=dic_tier['ci_loop'],
description=dic_tier['description'])
for dic_testcase in dic_tier['testcases']:
- installer = dic_testcase['dependencies']['installer']
- scenario = dic_testcase['dependencies']['scenario']
- dep = th.Dependency(installer, scenario)
+ if not dic_testcase.get('dependencies'):
+ installer = '.*'
+ scenario = '.*'
+ else:
+ installer = dic_testcase['dependencies'].get(
+ 'installer', '.*')
+ scenario = dic_testcase['dependencies'].get(
+ 'scenario', '.*')
+ dep = tier_handler.Dependency(installer, scenario)
- testcase = th.TestCase(
+ testcase = tier_handler.TestCase(
name=dic_testcase['case_name'],
enabled=dic_testcase.get('enabled', True),
dependency=dep, criteria=dic_testcase['criteria'],
def is_compatible(self, ci_installer, ci_scenario):
try:
- if not ci_installer:
- if self.dependency.get_installer():
- return False
- elif not re.search(self.dependency.get_installer(), ci_installer):
+ if not re.search(self.dependency.get_installer(), ci_installer):
return False
- if not ci_scenario:
- if self.dependency.get_scenario():
- return False
- elif not re.search(self.dependency.get_scenario(), ci_scenario):
+ if not re.search(self.dependency.get_scenario(), ci_scenario):
return False
return True
except TypeError:
class Dependency(object):
- def __init__(self, installer, scenario):
+ def __init__(self, installer='.*', scenario='.*'):
self.installer = installer
self.scenario = scenario
# pylint: disable=missing-docstring
import logging
+import os
import unittest
import mock
with mock.patch('xtesting.ci.tier_builder.yaml.safe_load',
return_value=self.mock_yaml), \
mock.patch('six.moves.builtins.open', mock.mock_open()):
- self.tierbuilder = tier_builder.TierBuilder(
- 'test_installer', 'test_scenario', 'testcases_file')
+ os.environ["INSTALLER_TYPE"] = 'test_installer'
+ os.environ["DEPLOY_SCENARIO"] = 'test_scenario'
+ self.tierbuilder = tier_builder.TierBuilder('testcases_file')
self.tier_obj = self.tierbuilder.tier_objects[0]
def test_get_tiers(self):
INPUTS = {
'CI_LOOP': 'daily',
'DEPLOY_SCENARIO': 'os-nosdn-nofeature-noha',
- 'INSTALLER_TYPE': None,
+ 'INSTALLER_TYPE': 'unknown',
'BUILD_TAG': None,
'NODE_NAME': None,
'TEST_DB_URL': 'http://testresults.opnfv.org/test/api/v1/results',