From a44fb6ec7d50b94824c47c8cd5d3bcc34e0ba0a0 Mon Sep 17 00:00:00 2001 From: Tomas Cechvala Date: Fri, 17 Feb 2017 01:39:00 +0100 Subject: Introduce smoke tests for FDS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added: - fds repository to docker file - fds test to smoke tier in testcases - config values for fds tests A new robot var OS_AUTH_URL is defined as expected by FDS robot files. Method args switch from Keystone IP to OS_AUTH_URL which is more precised. The argument parsing is changed too. Co-Authored-By: Cédric Ollivier Change-Id: Ife27ab4a83f0110cbdcf7c9d47d9b3fb4c0ec705 Signed-off-by: Tomas Cechvala Signed-off-by: Cédric Ollivier --- docker/Dockerfile | 1 + functest/ci/config_functest.yaml | 1 + functest/ci/testcases.yaml | 19 +++++++++++++++++++ functest/opnfv_tests/sdn/odl/odl.py | 16 +++++++++------- functest/tests/unit/odl/test_odl.py | 26 +++++++++++++++++--------- 5 files changed, 47 insertions(+), 16 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 81c3c540b..f168be8bf 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -86,6 +86,7 @@ RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/doctor ${REPO RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/ovno ${REPOS_DIR}/ovno RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/promise ${REPOS_DIR}/promise RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/netready ${REPOS_DIR}/netready +RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/fds ${REPOS_DIR}/fds RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/barometer ${REPOS_DIR}/barometer RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/sfc ${REPOS_DIR}/sfc RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/snaps ${REPOS_DIR}/snaps diff --git a/functest/ci/config_functest.yaml b/functest/ci/config_functest.yaml index b5cec5628..b358a3323 100755 --- a/functest/ci/config_functest.yaml +++ b/functest/ci/config_functest.yaml @@ -28,6 +28,7 @@ general: repo_parser: /home/opnfv/repos/parser repo_domino: /home/opnfv/repos/domino repo_snaps: /home/opnfv/repos/snaps + repo_fds: /home/opnfv/repos/fds repo_securityscan: /home/opnfv/repos/securityscanning repo_vrouter: /home/opnfv/repos/vnfs/vrouter functest: /home/opnfv/functest diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index 93cc52489..bc27f6f8f 100755 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -172,6 +172,25 @@ tiers: - /home/opnfv/repos/odl_test/csit/suites/openstack/neutron - /home/opnfv/repos/odl_test/csit/suites/openstack/connectivity + - + name: fds + criteria: 'success_rate == 100%' + blocking: false + clean_flag: false + description: >- + Test Suite for the OpenDaylight SDN Controller when GBP features are + installed. It integrates some test suites from upstream using + Robot as the test framework. + dependencies: + installer: 'apex' + scenario: 'odl_l2-fdio' + run: + module: 'functest.opnfv_tests.sdn.odl.odl' + class: 'ODLTests' + args: + suites: + - /home/opnfv/repos/fds/testing/robot + - name: onos criteria: 'status == "PASS"' diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py index 69818f5a5..c8e9c4920 100755 --- a/functest/opnfv_tests/sdn/odl/odl.py +++ b/functest/opnfv_tests/sdn/odl/odl.py @@ -94,8 +94,11 @@ class ODLTests(testcase_base.TestcaseBase): try: odlusername = kwargs['odlusername'] odlpassword = kwargs['odlpassword'] - variables = ['KEYSTONE:' + kwargs['keystoneip'], + osauthurl = kwargs['osauthurl'] + keystoneip = urlparse.urlparse(osauthurl).hostname + variables = ['KEYSTONE:' + keystoneip, 'NEUTRON:' + kwargs['neutronip'], + 'OS_AUTH_URL:"' + osauthurl + '"', 'OSUSERNAME:"' + kwargs['osusername'] + '"', 'OSTENANTNAME:"' + kwargs['ostenantname'] + '"', 'OSPASSWORD:"' + kwargs['ospassword'] + '"', @@ -147,10 +150,8 @@ class ODLTests(testcase_base.TestcaseBase): 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} - kwargs['neutronip'] = urlparse.urlparse(neutron_url).hostname + kwargs = {'neutronip': urlparse.urlparse(neutron_url).hostname} kwargs['odlip'] = kwargs['neutronip'] kwargs['odlwebport'] = '8080' kwargs['odlrestconfport'] = '8181' @@ -161,6 +162,7 @@ class ODLTests(testcase_base.TestcaseBase): installer_type = os.environ['INSTALLER_TYPE'] kwargs['osusername'] = os.environ['OS_USERNAME'] kwargs['ostenantname'] = os.environ['OS_TENANT_NAME'] + kwargs['osauthurl'] = os.environ['OS_AUTH_URL'] kwargs['ospassword'] = os.environ['OS_PASSWORD'] if installer_type == 'fuel': kwargs['odlwebport'] = '8282' @@ -190,12 +192,12 @@ class ODLParser(object): def __init__(self): self.parser = argparse.ArgumentParser() - self.parser.add_argument( - '-k', '--keystoneip', help='Keystone IP', - default='127.0.0.1') self.parser.add_argument( '-n', '--neutronip', help='Neutron IP', default='127.0.0.1') + self.parser.add_argument( + '-k', '--osauthurl', help='OS_AUTH_URL as defined by OpenStack', + default='http://127.0.0.1:5000/v2.0') self.parser.add_argument( '-a', '--osusername', help='Username for OpenStack', default='admin') diff --git a/functest/tests/unit/odl/test_odl.py b/functest/tests/unit/odl/test_odl.py index 8f2a5d7e4..5961940f1 100644 --- a/functest/tests/unit/odl/test_odl.py +++ b/functest/tests/unit/odl/test_odl.py @@ -30,6 +30,7 @@ class ODLTesting(unittest.TestCase): _keystone_ip = "127.0.0.1" _neutron_ip = "127.0.0.2" _sdn_controller_ip = "127.0.0.3" + _os_auth_url = "http://{}:5000/v2.0".format(_keystone_ip) _os_tenantname = "admin" _os_username = "admin" _os_password = "admin" @@ -42,14 +43,15 @@ class ODLTesting(unittest.TestCase): for var in ("INSTALLER_TYPE", "SDN_CONTROLLER", "SDN_CONTROLLER_IP"): if var in os.environ: del os.environ[var] + os.environ["OS_AUTH_URL"] = self._os_auth_url os.environ["OS_USERNAME"] = self._os_username os.environ["OS_PASSWORD"] = self._os_password os.environ["OS_TENANT_NAME"] = self._os_tenantname self.test = odl.ODLTests() self.defaultargs = {'odlusername': self._odl_username, 'odlpassword': self._odl_password, - 'keystoneip': self._keystone_ip, 'neutronip': self._keystone_ip, + 'osauthurl': self._os_auth_url, 'osusername': self._os_username, 'ostenantname': self._os_tenantname, 'ospassword': self._os_password, @@ -157,8 +159,8 @@ class ODLTesting(unittest.TestCase): def _get_main_kwargs(self, key=None): kwargs = {'odlusername': self._odl_username, 'odlpassword': self._odl_password, - 'keystoneip': self._keystone_ip, 'neutronip': self._neutron_ip, + 'osauthurl': self._os_auth_url, 'osusername': self._os_username, 'ostenantname': self._os_tenantname, 'ospassword': self._os_password, @@ -178,6 +180,7 @@ class ODLTesting(unittest.TestCase): 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), 'OSTENANTNAME:"{}"'.format(self._os_tenantname), 'OSPASSWORD:"{}"'.format(self._os_password), @@ -207,12 +210,12 @@ class ODLTesting(unittest.TestCase): def test_main_missing_odlpassword(self): self._test_main_missing_keyword('odlpassword') - def test_main_missing_keystoneip(self): - self._test_main_missing_keyword('keystoneip') - def test_main_missing_neutronip(self): self._test_main_missing_keyword('neutronip') + def test_main_missing_osauthurl(self): + self._test_main_missing_keyword('osauthurl') + def test_main_missing_osusername(self): self._test_main_missing_keyword('osusername') @@ -347,10 +350,11 @@ class ODLTesting(unittest.TestCase): 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, + neutronip=self._neutron_ip, odlip=odlip, odlpassword=self._odl_password, odlrestconfport=odlrestconfport, odlusername=self._odl_username, odlwebport=odlwebport, + osauthurl=self._os_auth_url, ospassword=self._os_password, ostenantname=self._os_tenantname, osusername=self._os_username) @@ -368,10 +372,11 @@ class ODLTesting(unittest.TestCase): self.assertEqual(self.test.run(suites=suites), status) self.test.main.assert_called_once_with( suites, - keystoneip=self._keystone_ip, neutronip=self._neutron_ip, + neutronip=self._neutron_ip, odlip=odlip, odlpassword=self._odl_password, odlrestconfport=odlrestconfport, odlusername=self._odl_username, odlwebport=odlwebport, + osauthurl=self._os_auth_url, ospassword=self._os_password, ostenantname=self._os_tenantname, osusername=self._os_username) @@ -381,6 +386,9 @@ class ODLTesting(unittest.TestCase): self.assertEqual(self.test.run(), testcase_base.TestcaseBase.EX_RUN_ERROR) + def test_run_missing_os_auth_url(self): + self._test_run_missing_env_var("OS_AUTH_URL") + def test_run_missing_os_username(self): self._test_run_missing_env_var("OS_USERNAME") @@ -507,8 +515,8 @@ class ODLTesting(unittest.TestCase): def test_argparser_odlpassword(self): self._test_argparser('odlpassword', 'foo') - def test_argparser_keystoneip(self): - self._test_argparser('keystoneip', '127.0.0.4') + def test_argparser_osauthurl(self): + self._test_argparser('osauthurl', 'http://127.0.0.4:5000/v2') def test_argparser_neutronip(self): self._test_argparser('neutronip', '127.0.0.4') -- cgit 1.2.3-korg