Added unit tests for the connection_check test case.
authorspisarski <s.pisarski@cablelabs.com>
Fri, 26 May 2017 15:05:35 +0000 (09:05 -0600)
committerspisarski <s.pisarski@cablelabs.com>
Wed, 31 May 2017 15:42:13 +0000 (09:42 -0600)
JIRA: FUNCTEST-813

Change-Id: Ib851a3942e181b1a91cad695504613868a340d15
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
docker/Dockerfile
docker/Dockerfile.aarch64
functest/opnfv_tests/openstack/snaps/connection_check.py
functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
functest/tests/unit/openstack/snaps/__init__.py [new file with mode: 0644]
functest/tests/unit/openstack/snaps/test_snaps.py [new file with mode: 0644]
requirements.txt

index ef5967f..21ae334 100644 (file)
@@ -90,7 +90,6 @@ RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/promise ${REP
 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/sfc ${REPOS_DIR}/sfc
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/snaps ${REPOS_DIR}/snaps
 RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/securityscanning ${REPOS_DIR}/securityscanning
 RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/opera ${REPOS_DIR}/opera
 
@@ -140,9 +139,6 @@ RUN /bin/bash ${REPOS_DIR}/functest/docker/add_images.sh
 RUN gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
 RUN curl -L https://get.rvm.io | bash -s stable
 
-# SNAPS integration
-RUN pip install -e ${REPOS_DIR}/snaps/
-
 # SFC integration
 RUN /bin/bash -c ". ${REPOS_DIR}/sfc/sfc/tests/functest/setup_scripts/tacker_client_install.sh"
 RUN cd ${REPOS_DIR}/sfc && pip install -e .
index e323cb1..7296461 100644 (file)
@@ -87,7 +87,6 @@ RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/parser ${REPO
 RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/doctor ${REPOS_DIR}/doctor
 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/sfc ${REPOS_DIR}/sfc
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/snaps ${REPOS_DIR}/snaps
 RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/securityscanning ${REPOS_DIR}/securityscanning
 RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/opera ${REPOS_DIR}/opera
 
@@ -134,9 +133,6 @@ RUN /bin/bash ${REPOS_DIR}/functest/docker/add_images.sh
 RUN gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
 RUN curl -L https://get.rvm.io | bash -s stable
 
-# SNAPS integration
-RUN pip install -e ${REPOS_DIR}/snaps/
-
 RUN pip install ${REPOS_DIR}/opera
 
 # SFC integration
index f2753ae..494f74b 100644 (file)
@@ -1,4 +1,5 @@
-# Copyright (c) 2015 All rights reserved
+# Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
+#
 # This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
@@ -26,8 +27,15 @@ class ConnectionCheck(SnapsTestRunner):
 
         self.suite = unittest.TestSuite()
 
+    def run(self, **kwargs):
+        """
+        Builds the test suite then calls super.run()
+        :param kwargs: the arguments to pass on
+        :return:
+        """
         test_suite_builder.add_openstack_client_tests(
             suite=self.suite,
             os_creds=self.os_creds,
             ext_net_name=self.ext_net_name,
             use_keystone=self.use_keystone)
+        return super(self.__class__, self).run()
index 5e39946..e8a4215 100644 (file)
@@ -1,4 +1,5 @@
-# Copyright (c) 2015 All rights reserved
+# Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
+#
 # This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
@@ -24,11 +25,18 @@ class SnapsTestRunner(unit.Suite):
         super(SnapsTestRunner, self).__init__(**kwargs)
         self.logger = logging.getLogger(__name__)
 
-        self.os_creds = openstack_tests.get_credentials(
-            os_env_file=CONST.__getattribute__('openstack_creds'),
-            proxy_settings_str=None, ssh_proxy_cmd=None)
+        if 'os_creds' in kwargs:
+            self.os_creds = kwargs['os_creds']
+        else:
+            self.os_creds = openstack_tests.get_credentials(
+                os_env_file=CONST.__getattribute__('openstack_creds'),
+                proxy_settings_str=None, ssh_proxy_cmd=None)
+
+        if 'ext_net_name' in kwargs:
+            self.ext_net_name = kwargs['ext_net_name']
+        else:
+            self.ext_net_name = snaps_utils.get_ext_net_name(self.os_creds)
 
-        self.ext_net_name = snaps_utils.get_ext_net_name(self.os_creds)
         self.use_fip = CONST.__getattribute__('snaps_use_floating_ips')
         self.use_keystone = CONST.__getattribute__('snaps_use_keystone')
         scenario = functest_utils.get_scenario()
diff --git a/functest/tests/unit/openstack/snaps/__init__.py b/functest/tests/unit/openstack/snaps/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/functest/tests/unit/openstack/snaps/test_snaps.py b/functest/tests/unit/openstack/snaps/test_snaps.py
new file mode 100644 (file)
index 0000000..9cfcc0a
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+
+import mock
+import unittest
+
+from snaps.openstack.os_credentials import OSCreds
+
+from functest.core.testcase import TestCase
+from functest.opnfv_tests.openstack.snaps import connection_check
+
+
+class ConnectionCheckTesting(unittest.TestCase):
+    """
+    Ensures the VPingUserdata class can run in Functest. This test does not
+    actually connect with an OpenStack pod.
+    """
+
+    def setUp(self):
+        self.os_creds = OSCreds(
+            username='user', password='pass',
+            auth_url='http://foo.com:5000/v3', project_name='bar')
+
+        self.connection_check = connection_check.ConnectionCheck(
+            os_creds=self.os_creds, ext_net_name='foo')
+
+    @mock.patch('functest.opnfv_tests.openstack.snaps.connection_check.'
+                'ConnectionCheck')
+    @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
+    def test_run_success(self, mock_test, add_os_client_tests):
+        result = mock.MagicMock(name='unittest.TextTestResult')
+        result.testsRun = 100
+        result.failures = []
+        result.errors = []
+        with mock.patch('unittest.TextTestRunner.run', return_value=result):
+            self.assertEquals(TestCase.EX_OK, self.connection_check.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.connection_check.is_successful())
+
+    @mock.patch('functest.opnfv_tests.openstack.snaps.connection_check.'
+                'ConnectionCheck')
+    @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
+    def test_run_1_of_100_failures(self, mock_test, add_os_client_tests):
+        result = mock.MagicMock(name='unittest.TextTestResult')
+        result.testsRun = 100
+        result.failures = ['foo']
+        result.errors = []
+        with mock.patch('unittest.TextTestRunner.run', return_value=result):
+            self.assertEquals(TestCase.EX_OK, self.connection_check.run())
+            self.assertEquals(TestCase.EX_TESTCASE_FAILED,
+                              self.connection_check.is_successful())
+
+    @mock.patch('functest.opnfv_tests.openstack.snaps.connection_check.'
+                'ConnectionCheck')
+    @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
+    def test_run_1_of_100_failures_within_criteria(self, mock_test,
+                                                   add_os_client_tests):
+        self.connection_check.criteria = 90
+        result = mock.MagicMock(name='unittest.TextTestResult')
+        result.testsRun = 100
+        result.failures = ['foo']
+        result.errors = []
+        with mock.patch('unittest.TextTestRunner.run', return_value=result):
+            self.assertEquals(TestCase.EX_OK, self.connection_check.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.connection_check.is_successful())
index 059775d..ef6b2f1 100644 (file)
@@ -39,3 +39,4 @@ PrettyTable>=0.7.1,<0.8 # BSD
 six>=1.9.0 # MIT
 git+https://gerrit.opnfv.org/gerrit/releng#egg=opnfv&subdirectory=modules
 git+https://gerrit.opnfv.org/gerrit/barometer#egg=baro_tests
+git+https://gerrit.opnfv.org/gerrit/snaps#egg=snaps