Added unit tests for api_check, health_check, and smoke tests.
[functest.git] / functest / tests / unit / openstack / snaps / test_snaps.py
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())