aboutsummaryrefslogtreecommitdiffstats
path: root/functest
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2017-02-02 18:25:43 +0100
committerCédric Ollivier <cedric.ollivier@orange.com>2017-02-02 18:34:09 +0100
commitcdd7359cc8a28e767de6aed1f6205f41fc055f34 (patch)
tree68d38fd164b7a0261637f6327bd48fa82713bcef /functest
parent93a1ae5974a398adec18ed5580f3d328f646ed02 (diff)
Allow multiple sets of suites in ODL
ODLTests can manage multiple sets of suites passing as run args. It avoids duplicating odl.py according to ODL features installed (e.g. netvirt). Change-Id: Ibb0697ef9441506c3f33627e13a0845cc482e23f Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
Diffstat (limited to 'functest')
-rwxr-xr-xfunctest/ci/testcases.yaml4
-rwxr-xr-xfunctest/opnfv_tests/sdn/odl/odl.py17
-rw-r--r--functest/tests/unit/odl/test_odl.py30
3 files changed, 45 insertions, 6 deletions
diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml
index 27d358bf..406ce993 100755
--- a/functest/ci/testcases.yaml
+++ b/functest/ci/testcases.yaml
@@ -99,6 +99,10 @@ tiers:
run:
module: 'functest.opnfv_tests.sdn.odl.odl'
class: 'ODLTests'
+ args:
+ suites:
+ - /home/opnfv/repos/odl_test/csit/suites/integration/basic
+ - /home/opnfv/repos/odl_test/csit/suites/openstack/neutron
-
name: onos
diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py
index 339c305e..9502be93 100755
--- a/functest/opnfv_tests/sdn/odl/odl.py
+++ b/functest/opnfv_tests/sdn/odl/odl.py
@@ -54,6 +54,7 @@ class ODLTests(testcase_base.TestcaseBase):
"csit/suites/openstack/neutron")
basic_suite_dir = os.path.join(odl_test_repo,
"csit/suites/integration/basic")
+ default_suites = [basic_suite_dir, neutron_suite_dir]
res_dir = '/home/opnfv/functest/results/odl/'
logger = ft_logger.Logger("opendaylight").getLogger()
@@ -89,8 +90,7 @@ class ODLTests(testcase_base.TestcaseBase):
self.details['description'] = result.suite.name
self.details['tests'] = visitor.get_data()
- def main(self, **kwargs):
- dirs = [self.basic_suite_dir, self.neutron_suite_dir]
+ def main(self, suites=default_suites, **kwargs):
try:
odlusername = kwargs['odlusername']
odlpassword = kwargs['odlpassword']
@@ -117,7 +117,7 @@ class ODLTests(testcase_base.TestcaseBase):
stdout_file = os.path.join(self.res_dir, 'stdout.txt')
output_dir = os.path.join(self.res_dir, 'output.xml')
with open(stdout_file, 'w+') as stdout:
- robot.run(*dirs, variable=variables,
+ robot.run(*suites, variable=variables,
output=output_dir,
log='NONE',
report='NONE',
@@ -140,8 +140,13 @@ class ODLTests(testcase_base.TestcaseBase):
else:
return self.EX_RUN_ERROR
- def run(self):
+ def run(self, **kwargs):
try:
+ suites = self.default_suites
+ try:
+ suites = kwargs["suites"]
+ except KeyError:
+ pass
keystone_url = op_utils.get_endpoint(service_type='identity')
neutron_url = op_utils.get_endpoint(service_type='network')
kwargs = {'keystoneip': urlparse.urlparse(keystone_url).hostname}
@@ -178,7 +183,7 @@ class ODLTests(testcase_base.TestcaseBase):
self.logger.exception("Cannot run ODL testcases.")
return self.EX_RUN_ERROR
- return self.main(**kwargs)
+ return self.main(suites, **kwargs)
class ODLParser():
@@ -228,7 +233,7 @@ if __name__ == '__main__':
parser = ODLParser()
args = parser.parse_args(sys.argv[1:])
try:
- result = odl.main(**args)
+ result = odl.main(ODLTests.default_suites, **args)
if result != testcase_base.TestcaseBase.EX_OK:
sys.exit(result)
if args['pushtodb']:
diff --git a/functest/tests/unit/odl/test_odl.py b/functest/tests/unit/odl/test_odl.py
index 568fdc82..810b3592 100644
--- a/functest/tests/unit/odl/test_odl.py
+++ b/functest/tests/unit/odl/test_odl.py
@@ -346,6 +346,28 @@ class ODLTesting(unittest.TestCase):
self.test.main = mock.Mock(return_value=status)
self.assertEqual(self.test.run(), status)
self.test.main.assert_called_once_with(
+ odl.ODLTests.default_suites,
+ keystoneip=self._keystone_ip, neutronip=self._neutron_ip,
+ odlip=odlip, odlpassword=self._odl_password,
+ odlrestconfport=odlrestconfport,
+ odlusername=self._odl_username, odlwebport=odlwebport,
+ ospassword=self._os_password, ostenantname=self._os_tenantname,
+ osusername=self._os_username)
+
+ def _test_run_defining_multiple_suites(
+ self, suites,
+ status=testcase_base.TestcaseBase.EX_OK,
+ exception=None, odlip="127.0.0.3", odlwebport="8080",
+ odlrestconfport="8181"):
+ with mock.patch('functest.utils.openstack_utils.get_endpoint',
+ side_effect=self._fake_url_for):
+ if exception:
+ self.test.main = mock.Mock(side_effect=exception)
+ else:
+ self.test.main = mock.Mock(return_value=status)
+ self.assertEqual(self.test.run(suites=suites), status)
+ self.test.main.assert_called_once_with(
+ suites,
keystoneip=self._keystone_ip, neutronip=self._neutron_ip,
odlip=odlip, odlpassword=self._odl_password,
odlrestconfport=odlrestconfport,
@@ -394,6 +416,14 @@ class ODLTesting(unittest.TestCase):
odlip=self._sdn_controller_ip,
odlwebport=self._odl_webport)
+ def test_run_redefining_suites(self):
+ os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+ self._test_run_defining_multiple_suites(
+ [odl.ODLTests.basic_suite_dir],
+ testcase_base.TestcaseBase.EX_OK,
+ odlip=self._sdn_controller_ip,
+ odlwebport=self._odl_webport)
+
def test_run_fuel(self):
os.environ["INSTALLER_TYPE"] = "fuel"
self._test_run(testcase_base.TestcaseBase.EX_OK,