Added unit tests for api_check, health_check, and smoke tests.
authorspisarski <s.pisarski@cablelabs.com>
Thu, 1 Jun 2017 14:04:24 +0000 (08:04 -0600)
committerspisarski <s.pisarski@cablelabs.com>
Tue, 20 Jun 2017 13:44:48 +0000 (07:44 -0600)
In addition to the creation of the unit tests, this patch simplifies
the mocks for connection check as there was an unused annotation.
This patch also refactors the building of the test suite from the
constructor to the run() method.

JIRA: FUNCTEST-813

Change-Id: I7ff5d0389db36141a33ee3a8f76e04b922f8a95f
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
functest/opnfv_tests/openstack/snaps/api_check.py
functest/opnfv_tests/openstack/snaps/health_check.py
functest/opnfv_tests/openstack/snaps/smoke.py
functest/tests/unit/openstack/snaps/test_snaps.py

index 50f6709..43518cb 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 ApiCheck(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_api_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 0daddcd..4e94460 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
@@ -28,6 +29,12 @@ class HealthCheck(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:
+        """
         image_custom_config = None
 
         if hasattr(CONST, 'snaps_images_cirros'):
@@ -39,3 +46,4 @@ class HealthCheck(SnapsTestRunner):
                 use_keystone=self.use_keystone,
                 flavor_metadata=self.flavor_metadata,
                 image_metadata=image_custom_config))
+        return super(self.__class__, self).run()
index d9f95e9..c3c55c7 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
@@ -28,6 +29,12 @@ class SnapsSmoke(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:
+        """
         image_config = None
         if hasattr(CONST, 'snaps_images_cirros'):
             image_config = CONST.__getattribute__('snaps_images_cirros')
@@ -47,3 +54,4 @@ class SnapsSmoke(SnapsTestRunner):
             flavor_metadata=self.flavor_metadata,
             image_metadata=image_config,
             use_floating_ips=self.use_fip)
+        return super(self.__class__, self).run()
index 9cfcc0a..7cf53b3 100644 (file)
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # All rights reserved. This program and the accompanying materials
@@ -9,12 +7,14 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 
 import mock
+import os
 import unittest
 
 from snaps.openstack.os_credentials import OSCreds
 
 from functest.core.testcase import TestCase
-from functest.opnfv_tests.openstack.snaps import connection_check
+from functest.opnfv_tests.openstack.snaps import (connection_check, api_check,
+                                                  health_check, smoke)
 
 
 class ConnectionCheckTesting(unittest.TestCase):
@@ -31,10 +31,8 @@ class ConnectionCheckTesting(unittest.TestCase):
         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):
+    def test_run_success(self, add_os_client_tests):
         result = mock.MagicMock(name='unittest.TextTestResult')
         result.testsRun = 100
         result.failures = []
@@ -44,10 +42,8 @@ class ConnectionCheckTesting(unittest.TestCase):
             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):
+    def test_run_1_of_100_failures(self, add_os_client_tests):
         result = mock.MagicMock(name='unittest.TextTestResult')
         result.testsRun = 100
         result.failures = ['foo']
@@ -57,11 +53,8 @@ class ConnectionCheckTesting(unittest.TestCase):
             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):
+    def test_run_1_of_100_failures_within_criteria(self, add_os_client_tests):
         self.connection_check.criteria = 90
         result = mock.MagicMock(name='unittest.TextTestResult')
         result.testsRun = 100
@@ -71,3 +64,153 @@ class ConnectionCheckTesting(unittest.TestCase):
             self.assertEquals(TestCase.EX_OK, self.connection_check.run())
             self.assertEquals(TestCase.EX_OK,
                               self.connection_check.is_successful())
+
+
+class APICheckTesting(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.api_check = api_check.ApiCheck(
+            os_creds=self.os_creds, ext_net_name='foo')
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_api_tests')
+    def test_run_success(self, add_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.api_check.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.api_check.is_successful())
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_api_tests')
+    def test_run_1_of_100_failures(self, add_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.api_check.run())
+            self.assertEquals(TestCase.EX_TESTCASE_FAILED,
+                              self.api_check.is_successful())
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_api_tests')
+    def test_run_1_of_100_failures_within_criteria(self, add_tests):
+        self.api_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.api_check.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.api_check.is_successful())
+
+
+class HealthCheckTesting(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.health_check = health_check.HealthCheck(
+            os_creds=self.os_creds, ext_net_name='foo')
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
+    def test_run_success(self, add_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.health_check.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.health_check.is_successful())
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
+    def test_run_1_of_100_failures(self, add_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.health_check.run())
+            self.assertEquals(TestCase.EX_TESTCASE_FAILED,
+                              self.health_check.is_successful())
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_client_tests')
+    def test_run_1_of_100_failures_within_criteria(self, add_tests):
+        self.health_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.health_check.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.health_check.is_successful())
+
+
+class SmokeTesting(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.smoke = smoke.SnapsSmoke(
+            os_creds=self.os_creds, ext_net_name='foo')
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_integration_tests')
+    @mock.patch('os.path.join', return_value=os.getcwd())
+    def test_run_success(self, add_tests, cwd):
+        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.smoke.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.smoke.is_successful())
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_integration_tests')
+    @mock.patch('os.path.join', return_value=os.getcwd())
+    def test_run_1_of_100_failures(self, add_tests, cwd):
+        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.smoke.run())
+            self.assertEquals(TestCase.EX_TESTCASE_FAILED,
+                              self.smoke.is_successful())
+
+    @mock.patch('snaps.test_suite_builder.add_openstack_integration_tests')
+    @mock.patch('os.path.join', return_value=os.getcwd())
+    def test_run_1_of_100_failures_within_criteria(self, add_tests, cwd):
+        self.smoke.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.smoke.run())
+            self.assertEquals(TestCase.EX_OK,
+                              self.smoke.is_successful())