summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2017-09-20 10:52:33 +0200
committerCédric Ollivier <cedric.ollivier@orange.com>2017-09-22 00:26:43 +0200
commitdd99f5356ef08f3a2a1ed18d63492391390df752 (patch)
treec84e017a3daf35dff10dd2fc8c1dcdc629da6944
parent47c049623b07dd563218959ad59c0e027a354836 (diff)
Support https when testing ODL
It conforms with the last change on ODL tests [1]. Neutron endpoint is passed via robot args instead of Neutron ip. Keystone url (based on OS_AUTH_URL) is passed too to replace Keystone ip. [1] https://git.opendaylight.org/gerrit/#/c/63293/ Change-Id: Ie44f55304a438b1b0289ec69ac2241664be70e80 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
-rw-r--r--docker/Dockerfile2
-rw-r--r--docker/restapi/Dockerfile2
-rw-r--r--docker/smoke/Dockerfile2
-rw-r--r--functest/opnfv_tests/sdn/odl/odl.py34
-rw-r--r--functest/tests/unit/odl/test_odl.py109
5 files changed, 76 insertions, 73 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index f7959806a..ec2b3fa64 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -14,7 +14,7 @@ LABEL version="0.1" description="OPNFV Functest Docker container"
# Environment variables
ARG BRANCH=master
ARG RALLY_TAG=stable/0.9
-ARG ODL_TAG=35e415b6873b39d72775c88a337e92dac26012e2
+ARG ODL_TAG=e12ba90cd27577c4c6c70ee54f7d599b5f6777ba
ARG OPENSTACK_TAG=stable/ocata
ARG VIMS_TAG=stable
ARG REFSTACK_TAG=4e187b07672dd1c41cb7c94658f1c91edebf53a2
diff --git a/docker/restapi/Dockerfile b/docker/restapi/Dockerfile
index 450d2ae08..35f8577fd 100644
--- a/docker/restapi/Dockerfile
+++ b/docker/restapi/Dockerfile
@@ -2,7 +2,7 @@ FROM opnfv/functest-core
ARG BRANCH=master
ARG OPENSTACK_TAG=stable/ocata
-ARG ODL_TAG=35e415b6873b39d72775c88a337e92dac26012e2
+ARG ODL_TAG=e12ba90cd27577c4c6c70ee54f7d599b5f6777ba
ARG FDS_TAG=master
ARG REFSTACK_TAG=4e187b07672dd1c41cb7c94658f1c91edebf53a2
ARG VIMS_TAG=stable
diff --git a/docker/smoke/Dockerfile b/docker/smoke/Dockerfile
index fe2f91917..71042df1b 100644
--- a/docker/smoke/Dockerfile
+++ b/docker/smoke/Dockerfile
@@ -2,7 +2,7 @@ FROM opnfv/functest-core
ARG BRANCH=master
ARG OPENSTACK_TAG=stable/ocata
-ARG ODL_TAG=35e415b6873b39d72775c88a337e92dac26012e2
+ARG ODL_TAG=e12ba90cd27577c4c6c70ee54f7d599b5f6777ba
ARG FDS_TAG=master
ARG REFSTACK_TAG=4e187b07672dd1c41cb7c94658f1c91edebf53a2
diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py
index d09532cb0..dd313ffeb 100644
--- a/functest/opnfv_tests/sdn/odl/odl.py
+++ b/functest/opnfv_tests/sdn/odl/odl.py
@@ -78,20 +78,20 @@ class ODLTests(testcase.TestCase):
@classmethod
def set_robotframework_vars(cls, odlusername="admin", odlpassword="admin"):
- """Set credentials in csit/variables/Variables.py.
+ """Set credentials in csit/variables/Variables.robot.
Returns:
True if credentials are set.
False otherwise.
"""
odl_variables_files = os.path.join(cls.odl_test_repo,
- 'csit/variables/Variables.py')
+ 'csit/variables/Variables.robot')
try:
for line in fileinput.input(odl_variables_files,
inplace=True):
- print(re.sub("AUTH = .*",
- ("AUTH = [u'" + odlusername + "', u'" +
- odlpassword + "']"),
+ print(re.sub("@{AUTH}.*",
+ "@{{AUTH}} {} {}".format(
+ odlusername, odlpassword),
line.rstrip()))
return True
except Exception as ex: # pylint: disable=broad-except
@@ -125,7 +125,7 @@ class ODLTests(testcase.TestCase):
* odlusername,
* odlpassword,
* osauthurl,
- * neutronip,
+ * neutronurl,
* osusername,
* ostenantname,
* ospassword,
@@ -152,9 +152,11 @@ class ODLTests(testcase.TestCase):
odlusername = kwargs['odlusername']
odlpassword = kwargs['odlpassword']
osauthurl = kwargs['osauthurl']
- keystoneip = urllib.parse.urlparse(osauthurl).hostname
- variables = ['KEYSTONE:' + keystoneip,
- 'NEUTRON:' + kwargs['neutronip'],
+ keystoneurl = "{}://{}".format(
+ urllib.parse.urlparse(osauthurl).scheme,
+ urllib.parse.urlparse(osauthurl).netloc)
+ variables = ['KEYSTONEURL:' + keystoneurl,
+ 'NEUTRONURL:' + kwargs['neutronurl'],
'OS_AUTH_URL:"' + osauthurl + '"',
'OSUSERNAME:"' + kwargs['osusername'] + '"',
('OSUSERDOMAINNAME:"' +
@@ -167,8 +169,7 @@ class ODLTests(testcase.TestCase):
'PORT:' + kwargs['odlwebport'],
'RESTCONFPORT:' + kwargs['odlrestconfport']]
except KeyError as ex:
- self.__logger.error("Cannot run ODL testcases. Please check "
- "%s", str(ex))
+ self.__logger.exception("Cannot run ODL testcases. Please check")
return self.EX_RUN_ERROR
if self.set_robotframework_vars(odlusername, odlpassword):
try:
@@ -214,9 +215,10 @@ class ODLTests(testcase.TestCase):
suites = kwargs["suites"]
except KeyError:
pass
- neutron_url = op_utils.get_endpoint(service_type='network')
- kwargs = {'neutronip': urllib.parse.urlparse(neutron_url).hostname}
- kwargs['odlip'] = kwargs['neutronip']
+ kwargs = {'neutronurl': op_utils.get_endpoint(
+ service_type='network')}
+ kwargs['odlip'] = urllib.parse.urlparse(
+ kwargs['neutronurl']).hostname
kwargs['odlwebport'] = '8080'
kwargs['odlrestconfport'] = '8181'
kwargs['odlusername'] = 'admin'
@@ -267,8 +269,8 @@ class ODLParser(object): # pylint: disable=too-few-public-methods
def __init__(self):
self.parser = argparse.ArgumentParser()
self.parser.add_argument(
- '-n', '--neutronip', help='Neutron IP',
- default='127.0.0.1')
+ '-n', '--neutronurl', help='Neutron Endpoint',
+ default='http://127.0.0.1:9696')
self.parser.add_argument(
'-k', '--osauthurl', help='OS_AUTH_URL as defined by OpenStack',
default='http://127.0.0.1:5000/v3')
diff --git a/functest/tests/unit/odl/test_odl.py b/functest/tests/unit/odl/test_odl.py
index 338a4e69d..a653b0420 100644
--- a/functest/tests/unit/odl/test_odl.py
+++ b/functest/tests/unit/odl/test_odl.py
@@ -20,6 +20,7 @@ from robot.errors import DataError, RobotError
from robot.result import model
from robot.utils.robottime import timestamp_to_secs
import six
+from six.moves import urllib
from functest.core import testcase
from functest.opnfv_tests.sdn.odl import odl
@@ -67,7 +68,7 @@ class ODLTesting(unittest.TestCase):
logging.disable(logging.CRITICAL)
_keystone_ip = "127.0.0.1"
- _neutron_ip = "127.0.0.2"
+ _neutron_url = "http://127.0.0.2:9696"
_sdn_controller_ip = "127.0.0.3"
_os_auth_url = "http://{}:5000/v3".format(_keystone_ip)
_os_tenantname = "admin"
@@ -94,7 +95,8 @@ class ODLTesting(unittest.TestCase):
self.test = odl.ODLTests(case_name='odl', project_name='functest')
self.defaultargs = {'odlusername': self._odl_username,
'odlpassword': self._odl_password,
- 'neutronip': self._keystone_ip,
+ 'neutronurl': "http://{}:9696".format(
+ self._keystone_ip),
'osauthurl': self._os_auth_url,
'osusername': self._os_username,
'osuserdomainname': self._os_userdomainname,
@@ -167,14 +169,14 @@ class ODLRobotTesting(ODLTesting):
self.assertFalse(self.test.set_robotframework_vars())
mock_method.assert_called_once_with(
os.path.join(odl.ODLTests.odl_test_repo,
- 'csit/variables/Variables.py'), inplace=True)
+ 'csit/variables/Variables.robot'), inplace=True)
@mock.patch('fileinput.input', return_value=[])
def test_set_vars_empty(self, mock_method):
self.assertTrue(self.test.set_robotframework_vars())
mock_method.assert_called_once_with(
os.path.join(odl.ODLTests.odl_test_repo,
- 'csit/variables/Variables.py'), inplace=True)
+ 'csit/variables/Variables.robot'), inplace=True)
@mock.patch('sys.stdout', new_callable=six.StringIO)
def _test_set_vars(self, msg1, msg2, *args):
@@ -184,27 +186,31 @@ class ODLRobotTesting(ODLTesting):
self.assertTrue(self.test.set_robotframework_vars())
mock_method.assert_called_once_with(
os.path.join(odl.ODLTests.odl_test_repo,
- 'csit/variables/Variables.py'), inplace=True)
+ 'csit/variables/Variables.robot'), inplace=True)
self.assertEqual(args[0].getvalue(), "{}\n".format(msg2))
def test_set_vars_auth_default(self):
- self._test_set_vars("AUTH = []",
- "AUTH = [u'admin', u'admin']")
+ self._test_set_vars(
+ "@{AUTH} ",
+ "@{AUTH} admin admin")
def test_set_vars_auth1(self):
- self._test_set_vars("AUTH1 = []", "AUTH1 = []")
+ self._test_set_vars(
+ "@{AUTH1} foo bar",
+ "@{AUTH1} foo bar")
@mock.patch('sys.stdout', new_callable=six.StringIO)
def test_set_vars_auth_foo(self, *args):
line = mock.MagicMock()
- line.__iter__.return_value = ["AUTH = []"]
+ line.__iter__.return_value = ["@{AUTH} "]
with mock.patch('fileinput.input', return_value=line) as mock_method:
self.assertTrue(self.test.set_robotframework_vars('foo', 'bar'))
mock_method.assert_called_once_with(
os.path.join(odl.ODLTests.odl_test_repo,
- 'csit/variables/Variables.py'), inplace=True)
- self.assertEqual(args[0].getvalue(),
- "AUTH = [u'{}', u'{}']\n".format('foo', 'bar'))
+ 'csit/variables/Variables.robot'), inplace=True)
+ self.assertEqual(
+ args[0].getvalue(),
+ "@{AUTH} foo bar\n")
class ODLMainTesting(ODLTesting):
@@ -215,7 +221,7 @@ class ODLMainTesting(ODLTesting):
def _get_run_suites_kwargs(self, key=None):
kwargs = {'odlusername': self._odl_username,
'odlpassword': self._odl_password,
- 'neutronip': self._neutron_ip,
+ 'neutronurl': self._neutron_url,
'osauthurl': self._os_auth_url,
'osusername': self._os_username,
'osuserdomainname': self._os_userdomainname,
@@ -236,19 +242,20 @@ class ODLMainTesting(ODLTesting):
args[0].assert_called_once_with(
odl.ODLTests.res_dir)
if len(args) > 1:
- variable = ['KEYSTONE:{}'.format(self._keystone_ip),
- 'NEUTRON:{}'.format(self._neutron_ip),
- 'OS_AUTH_URL:"{}"'.format(self._os_auth_url),
- 'OSUSERNAME:"{}"'.format(self._os_username),
- 'OSUSERDOMAINNAME:"{}"'.format(
- self._os_userdomainname),
- 'OSTENANTNAME:"{}"'.format(self._os_tenantname),
- 'OSPROJECTDOMAINNAME:"{}"'.format(
- self._os_projectdomainname),
- 'OSPASSWORD:"{}"'.format(self._os_password),
- 'ODL_SYSTEM_IP:{}'.format(self._sdn_controller_ip),
- 'PORT:{}'.format(self._odl_webport),
- 'RESTCONFPORT:{}'.format(self._odl_restconfport)]
+ variable = [
+ 'KEYSTONEURL:{}://{}'.format(
+ urllib.parse.urlparse(self._os_auth_url).scheme,
+ urllib.parse.urlparse(self._os_auth_url).netloc),
+ 'NEUTRONURL:{}'.format(self._neutron_url),
+ 'OS_AUTH_URL:"{}"'.format(self._os_auth_url),
+ 'OSUSERNAME:"{}"'.format(self._os_username),
+ 'OSUSERDOMAINNAME:"{}"'.format(self._os_userdomainname),
+ 'OSTENANTNAME:"{}"'.format(self._os_tenantname),
+ 'OSPROJECTDOMAINNAME:"{}"'.format(self._os_projectdomainname),
+ 'OSPASSWORD:"{}"'.format(self._os_password),
+ 'ODL_SYSTEM_IP:{}'.format(self._sdn_controller_ip),
+ 'PORT:{}'.format(self._odl_webport),
+ 'RESTCONFPORT:{}'.format(self._odl_restconfport)]
args[1].assert_called_once_with(
odl.ODLTests.basic_suite_dir,
odl.ODLTests.neutron_suite_dir,
@@ -272,8 +279,8 @@ class ODLMainTesting(ODLTesting):
def test_no_odlpassword(self):
self._test_no_keyword('odlpassword')
- def test_no_neutronip(self):
- self._test_no_keyword('neutronip')
+ def test_no_neutronurl(self):
+ self._test_no_keyword('neutronurl')
def test_no_osauthurl(self):
self._test_no_keyword('osauthurl')
@@ -367,8 +374,7 @@ class ODLRunTesting(ODLTesting):
def _test_no_env_var(self, var):
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
del os.environ[var]
self.assertEqual(self.test.run(),
testcase.TestCase.EX_RUN_ERROR)
@@ -381,8 +387,7 @@ class ODLRunTesting(ODLTesting):
if 'odlrestconfport' in kwargs else '8181')
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
if exception:
self.test.run_suites = mock.Mock(side_effect=exception)
else:
@@ -390,7 +395,7 @@ class ODLRunTesting(ODLTesting):
self.assertEqual(self.test.run(), status)
self.test.run_suites.assert_called_once_with(
odl.ODLTests.default_suites,
- neutronip=self._neutron_ip,
+ neutronurl=self._neutron_url,
odlip=odlip, odlpassword=self._odl_password,
odlrestconfport=odlrestconfport,
odlusername=self._odl_username, odlwebport=odlwebport,
@@ -407,13 +412,12 @@ class ODLRunTesting(ODLTesting):
odlrestconfport = (kwargs['odlrestconfport']
if 'odlrestconfport' in kwargs else '8181')
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
self.test.run_suites = mock.Mock(return_value=status)
self.assertEqual(self.test.run(suites=suites), status)
self.test.run_suites.assert_called_once_with(
suites,
- neutronip=self._neutron_ip,
+ neutronurl=self._neutron_url,
odlip=odlip, odlpassword=self._odl_password,
odlrestconfport=odlrestconfport,
odlusername=self._odl_username, odlwebport=odlwebport,
@@ -457,8 +461,7 @@ class ODLRunTesting(ODLTesting):
def test_no_sdn_controller_ip(self):
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
self.assertEqual(self.test.run(),
testcase.TestCase.EX_RUN_ERROR)
@@ -479,13 +482,13 @@ class ODLRunTesting(ODLTesting):
def test_fuel(self):
os.environ["INSTALLER_TYPE"] = "fuel"
self._test_run(testcase.TestCase.EX_OK,
- odlip=self._neutron_ip, odlwebport='8181',
+ odlip=urllib.parse.urlparse(self._neutron_url).hostname,
+ odlwebport='8181',
odlrestconfport='8282')
def test_apex_no_controller_ip(self):
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
os.environ["INSTALLER_TYPE"] = "apex"
self.assertEqual(self.test.run(),
testcase.TestCase.EX_RUN_ERROR)
@@ -499,8 +502,7 @@ class ODLRunTesting(ODLTesting):
def test_netvirt_no_controller_ip(self):
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
os.environ["INSTALLER_TYPE"] = "netvirt"
self.assertEqual(self.test.run(),
testcase.TestCase.EX_RUN_ERROR)
@@ -514,8 +516,7 @@ class ODLRunTesting(ODLTesting):
def test_joid_no_controller_ip(self):
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
os.environ["INSTALLER_TYPE"] = "joid"
self.assertEqual(self.test.run(),
testcase.TestCase.EX_RUN_ERROR)
@@ -529,12 +530,12 @@ class ODLRunTesting(ODLTesting):
def test_compass(self):
os.environ["INSTALLER_TYPE"] = "compass"
self._test_run(testcase.TestCase.EX_OK,
- odlip=self._neutron_ip, odlrestconfport='8080')
+ odlip=urllib.parse.urlparse(self._neutron_url).hostname,
+ odlrestconfport='8080')
def test_daisy_no_controller_ip(self):
with mock.patch('functest.utils.openstack_utils.get_endpoint',
- return_value="http://{}:9696".format(
- ODLTesting._neutron_ip)):
+ return_value=ODLTesting._neutron_url):
os.environ["INSTALLER_TYPE"] = "daisy"
self.assertEqual(self.test.run(),
testcase.TestCase.EX_RUN_ERROR)
@@ -560,11 +561,11 @@ class ODLArgParserTesting(ODLTesting):
self.assertEqual(self.parser.parse_args(), self.defaultargs)
def test_basic(self):
- self.defaultargs['neutronip'] = self._neutron_ip
+ self.defaultargs['neutronurl'] = self._neutron_url
self.defaultargs['odlip'] = self._sdn_controller_ip
self.assertEqual(
self.parser.parse_args(
- ["--neutronip={}".format(self._neutron_ip),
+ ["--neutronurl={}".format(self._neutron_url),
"--odlip={}".format(self._sdn_controller_ip)]),
self.defaultargs)
@@ -590,8 +591,8 @@ class ODLArgParserTesting(ODLTesting):
def test_osauthurl(self):
self._test_arg('osauthurl', 'http://127.0.0.4:5000/v2')
- def test_neutronip(self):
- self._test_arg('neutronip', '127.0.0.4')
+ def test_neutronurl(self):
+ self._test_arg('neutronurl', 'http://127.0.0.4:9696')
def test_osusername(self):
self._test_arg('osusername', 'foo')
@@ -623,11 +624,11 @@ class ODLArgParserTesting(ODLTesting):
self.defaultargs)
def test_multiple_args(self):
- self.defaultargs['neutronip'] = self._neutron_ip
+ self.defaultargs['neutronurl'] = self._neutron_url
self.defaultargs['odlip'] = self._sdn_controller_ip
self.assertEqual(
self.parser.parse_args(
- ["--neutronip={}".format(self._neutron_ip),
+ ["--neutronurl={}".format(self._neutron_url),
"--odlip={}".format(self._sdn_controller_ip)]),
self.defaultargs)