Add Vmtp as a new testcase
[functest.git] / functest / tests / unit / openstack / snaps / test_snaps.py
index 9cfcc0a..a376044 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
@@ -8,16 +6,92 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
-import mock
+# pylint: disable=missing-docstring
+
+import logging
 import unittest
 
+import mock
 from snaps.openstack.os_credentials import OSCreds
+from xtesting.core import testcase
+
+from functest.opnfv_tests.openstack.snaps import api_check
+from functest.opnfv_tests.openstack.snaps import health_check
+from functest.opnfv_tests.openstack.snaps import smoke
+
+
+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('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_client_tests')
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_api_tests')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_success(self, *args):
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = []
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.api_check.run())
+        self.assertEquals(
+            testcase.TestCase.EX_OK, self.api_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', image_metadata=mock.ANY,
+            os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
+
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_client_tests')
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_api_tests')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_1_of_100_ko(self, *args):
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.api_check.run())
+        self.assertEquals(
+            testcase.TestCase.EX_TESTCASE_FAILED,
+            self.api_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', image_metadata=mock.ANY,
+            os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
 
-from functest.core.testcase import TestCase
-from functest.opnfv_tests.openstack.snaps import connection_check
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_client_tests')
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_api_tests')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_1_of_100_ko_criteria(self, *args):
+        self.api_check.criteria = 90
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.api_check.run())
+        self.assertEquals(
+            testcase.TestCase.EX_OK, self.api_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', image_metadata=mock.ANY,
+            os_creds=self.os_creds, suite=mock.ANY, use_keystone=True)
 
 
-class ConnectionCheckTesting(unittest.TestCase):
+class HealthCheckTesting(unittest.TestCase):
     """
     Ensures the VPingUserdata class can run in Functest. This test does not
     actually connect with an OpenStack pod.
@@ -28,46 +102,132 @@ class ConnectionCheckTesting(unittest.TestCase):
             username='user', password='pass',
             auth_url='http://foo.com:5000/v3', project_name='bar')
 
-        self.connection_check = connection_check.ConnectionCheck(
+        self.health_check = health_check.HealthCheck(
             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())
+    @mock.patch('snaps.openstack.tests.os_source_file_test.'
+                'OSIntegrationTestCase.parameterize')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_success(self, *args):
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = []
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.health_check.run())
+        self.assertEquals(
+            testcase.TestCase.EX_OK, self.health_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            mock.ANY, ext_net_name='foo', flavor_metadata=mock.ANY,
+            image_metadata=mock.ANY, netconf_override=None,
+            os_creds=self.os_creds, use_keystone=True)
+
+    @mock.patch('snaps.openstack.tests.os_source_file_test.'
+                'OSIntegrationTestCase.parameterize')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_1_of_100_ko(self, *args):
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.health_check.run())
+        self.assertEquals(
+            testcase.TestCase.EX_TESTCASE_FAILED,
+            self.health_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            mock.ANY, ext_net_name='foo', flavor_metadata=mock.ANY,
+            image_metadata=mock.ANY, netconf_override=None,
+            os_creds=self.os_creds, use_keystone=True)
+
+    @mock.patch('snaps.openstack.tests.os_source_file_test.'
+                'OSIntegrationTestCase.parameterize')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_1_of_100_ko_criteria(self, *args):
+        self.health_check.criteria = 90
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.health_check.run())
+        self.assertEquals(
+            testcase.TestCase.EX_OK, self.health_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            mock.ANY, ext_net_name='foo', flavor_metadata=mock.ANY,
+            image_metadata=mock.ANY, netconf_override=None,
+            os_creds=self.os_creds, use_keystone=True)
+
+
+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('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_integration_tests')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_success(self, *args):
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = []
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.smoke.run())
+        self.assertEquals(testcase.TestCase.EX_OK, self.smoke.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', flavor_metadata=mock.ANY,
+            image_metadata=mock.ANY, netconf_override=None,
+            os_creds=self.os_creds, suite=mock.ANY, use_floating_ips=True,
+            use_keystone=True)
+
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_integration_tests')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_1_of_100_ko(self, *args):
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.smoke.run())
+        self.assertEquals(
+            testcase.TestCase.EX_TESTCASE_FAILED, self.smoke.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', flavor_metadata=mock.ANY,
+            image_metadata=mock.ANY, netconf_override=mock.ANY,
+            os_creds=self.os_creds, suite=mock.ANY, use_floating_ips=True,
+            use_keystone=True)
+
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
+                'add_openstack_integration_tests')
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_1_of_100_ko_criteria(self, *args):
+        self.smoke.criteria = 90
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(testcase.TestCase.EX_OK, self.smoke.run())
+        self.assertEquals(
+            testcase.TestCase.EX_OK, self.smoke.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', flavor_metadata=mock.ANY,
+            image_metadata=mock.ANY, netconf_override=None,
+            os_creds=self.os_creds, suite=mock.ANY, use_floating_ips=True,
+            use_keystone=True)
+
+
+if __name__ == "__main__":
+    logging.disable(logging.CRITICAL)
+    unittest.main(verbosity=2)