summaryrefslogtreecommitdiffstats
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
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>
-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 27d358bf7..406ce993d 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 339c305ef..9502be93f 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 568fdc828..810b35920 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,