Fix warnings in all snaps-related modules
authorCédric Ollivier <cedric.ollivier@orange.com>
Sun, 28 Jan 2018 10:30:47 +0000 (11:30 +0100)
committerCédric Ollivier <cedric.ollivier@orange.com>
Sun, 28 Jan 2018 10:54:16 +0000 (11:54 +0100)
It also adds vping/__init__.py to stop skipping vping unit tests.
It removes the useless import os which is not required for mock (here
the mock patch was simply false).

It should be noted that the code is partially duplicated between
snaps_test_runner.py and vping_base_base.py. A small part of code has
been rewritten to fix that without multi inheritance.

Change-Id: I2e3e181ad7dab8aa41afb1e63d0b6795ff0d1610
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
14 files changed:
functest/opnfv_tests/openstack/snaps/api_check.py
functest/opnfv_tests/openstack/snaps/connection_check.py
functest/opnfv_tests/openstack/snaps/health_check.py
functest/opnfv_tests/openstack/snaps/smoke.py
functest/opnfv_tests/openstack/snaps/snaps_suite_builder.py
functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
functest/opnfv_tests/openstack/snaps/snaps_utils.py
functest/opnfv_tests/openstack/vping/vping_base.py
functest/opnfv_tests/openstack/vping/vping_ssh.py
functest/opnfv_tests/openstack/vping/vping_userdata.py
functest/tests/unit/openstack/snaps/test_snaps.py
functest/tests/unit/openstack/vping/__init__.py [new file with mode: 0644]
functest/tests/unit/openstack/vping/test_vping.py
tox.ini

index e708b4d..e8b9c32 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # This program and the accompanying materials
@@ -6,6 +8,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 import unittest
 
 from functest.opnfv_tests.openstack.snaps import snaps_suite_builder
@@ -38,4 +42,4 @@ class ApiCheck(SnapsTestRunner):
             ext_net_name=self.ext_net_name,
             use_keystone=self.use_keystone,
             image_metadata=self.image_metadata)
-        return super(self.__class__, self).run()
+        return super(ApiCheck, self).run()
index 1fc4934..f8bf885 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # This program and the accompanying materials
@@ -6,6 +8,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 import unittest
 
 from functest.opnfv_tests.openstack.snaps import snaps_suite_builder
@@ -37,4 +41,4 @@ class ConnectionCheck(SnapsTestRunner):
             os_creds=self.os_creds,
             ext_net_name=self.ext_net_name,
             use_keystone=self.use_keystone)
-        return super(self.__class__, self).run()
+        return super(ConnectionCheck, self).run()
index 837c2ea..db882c3 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # This program and the accompanying materials
@@ -6,6 +8,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 import unittest
 
 from functest.opnfv_tests.openstack.snaps.snaps_test_runner import (
@@ -42,4 +46,4 @@ class HealthCheck(SnapsTestRunner):
                 flavor_metadata=self.flavor_metadata,
                 image_metadata=self.image_metadata,
                 netconf_override=self.netconf_override))
-        return super(self.__class__, self).run()
+        return super(HealthCheck, self).run()
index ded149d..ef6e5dc 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # This program and the accompanying materials
@@ -6,6 +8,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 import unittest
 
 from functest.opnfv_tests.openstack.snaps import snaps_suite_builder
@@ -41,4 +45,4 @@ class SnapsSmoke(SnapsTestRunner):
             image_metadata=self.image_metadata,
             use_floating_ips=self.use_fip,
             netconf_override=self.netconf_override)
-        return super(self.__class__, self).run()
+        return super(SnapsSmoke, self).run()
index 3e7c0a3..c3d8c2d 100644 (file)
@@ -8,6 +8,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 import logging
 
 from snaps.openstack.tests.create_flavor_tests import (
@@ -119,6 +121,7 @@ def add_openstack_client_tests(suite, os_creds, ext_net_name,
 
 def add_openstack_api_tests(suite, os_creds, ext_net_name, use_keystone=True,
                             image_metadata=None, log_level=logging.INFO):
+    # pylint: disable=too-many-arguments
     """
     Adds tests written to exercise all existing OpenStack APIs
     :param suite: the unittest.TestSuite object to which to add the tests
@@ -232,6 +235,7 @@ def add_openstack_integration_tests(suite, os_creds, ext_net_name,
                                     image_metadata=None, use_floating_ips=True,
                                     netconf_override=None,
                                     log_level=logging.INFO):
+    # pylint: disable=too-many-arguments
     """
     Adds tests written to exercise all long-running OpenStack integration tests
     meaning they will be creating VM instances and potentially performing some
index 6dc8288..94c8af8 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # This program and the accompanying materials
@@ -6,6 +8,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 import logging
 
 from functest.core import unit
@@ -17,13 +21,14 @@ from snaps.openstack.tests import openstack_tests
 
 
 class SnapsTestRunner(unit.Suite):
+    # pylint: disable=too-many-instance-attributes
     """
     This test executes the SNAPS Python Tests
     """
+
     def __init__(self, **kwargs):
         super(SnapsTestRunner, self).__init__(**kwargs)
         self.logger = logging.getLogger(__name__)
-
         if 'os_creds' in kwargs:
             self.os_creds = kwargs['os_creds']
         else:
index 284e88b..1153b63 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2015 All rights reserved
 # This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
@@ -5,6 +7,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 from functest.utils.constants import CONST
 
 from snaps.openstack.utils import neutron_utils, nova_utils
@@ -19,7 +23,7 @@ def get_ext_net_name(os_creds):
     """
     neutron = neutron_utils.neutron_client(os_creds)
     ext_nets = neutron_utils.get_external_networks(neutron)
-    if (hasattr(CONST, 'EXTERNAL_NETWORK')):
+    if hasattr(CONST, 'EXTERNAL_NETWORK'):
         extnet_config = CONST.__getattribute__('EXTERNAL_NETWORK')
         for ext_net in ext_nets:
             if ext_net.name == extnet_config:
index df9774e..b99fdf6 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # This program and the accompanying materials
@@ -37,19 +39,15 @@ class VPingBase(testcase.TestCase):
 
     def __init__(self, **kwargs):
         super(VPingBase, self).__init__(**kwargs)
-
         self.logger = logging.getLogger(__name__)
-
         if 'os_creds' in kwargs:
             self.os_creds = kwargs['os_creds']
         else:
-            creds_override = None
-            if hasattr(CONST, 'snaps_os_creds_override'):
-                creds_override = CONST.__getattribute__(
-                    'snaps_os_creds_override')
-
+            creds_override = getattr(
+                CONST, 'snaps_os_creds_override') if hasattr(
+                    CONST, 'snaps_os_creds_override') else None
             self.os_creds = openstack_tests.get_credentials(
-                os_env_file=CONST.__getattribute__('openstack_creds'),
+                os_env_file=getattr(CONST, 'openstack_creds'),
                 overrides=creds_override)
 
         self.creators = list()
@@ -62,27 +60,24 @@ class VPingBase(testcase.TestCase):
         # Shared metadata
         self.guid = '-' + str(uuid.uuid4())
 
-        self.router_name = CONST.__getattribute__(
-            'vping_router_name') + self.guid
-        self.vm1_name = CONST.__getattribute__('vping_vm_name_1') + self.guid
-        self.vm2_name = CONST.__getattribute__('vping_vm_name_2') + self.guid
-
-        self.vm_boot_timeout = CONST.__getattribute__('vping_vm_boot_timeout')
-        self.vm_delete_timeout = CONST.__getattribute__(
-            'vping_vm_delete_timeout')
-        self.vm_ssh_connect_timeout = CONST.__getattribute__(
-            'vping_vm_ssh_connect_timeout')
-        self.ping_timeout = CONST.__getattribute__('vping_ping_timeout')
+        self.router_name = getattr(CONST, 'vping_router_name') + self.guid
+        self.vm1_name = getattr(CONST, 'vping_vm_name_1') + self.guid
+        self.vm2_name = getattr(CONST, 'vping_vm_name_2') + self.guid
+
+        self.vm_boot_timeout = getattr(CONST, 'vping_vm_boot_timeout')
+        self.vm_delete_timeout = getattr(CONST, 'vping_vm_delete_timeout')
+        self.vm_ssh_connect_timeout = getattr(
+            CONST, 'vping_vm_ssh_connect_timeout')
+        self.ping_timeout = getattr(CONST, 'vping_ping_timeout')
         self.flavor_name = 'vping-flavor' + self.guid
 
         # Move this configuration option up for all tests to leverage
         if hasattr(CONST, 'snaps_images_cirros'):
-            self.cirros_image_config = CONST.__getattribute__(
-                'snaps_images_cirros')
+            self.cirros_image_config = getattr(CONST, 'snaps_images_cirros')
         else:
             self.cirros_image_config = None
 
-    def run(self):
+    def run(self, **kwargs):  # pylint: disable=too-many-locals
         """
         Begins the test execution which should originate from the subclass
         """
@@ -95,7 +90,7 @@ class VPingBase(testcase.TestCase):
                 '%Y-%m-%d %H:%M:%S'))
 
         image_base_name = '{}-{}'.format(
-            CONST.__getattribute__('vping_image_name'),
+            getattr(CONST, 'vping_image_name'),
             str(self.guid))
         os_image_settings = openstack_tests.cirros_image_settings(
             image_base_name, image_metadata=self.cirros_image_config)
@@ -105,26 +100,21 @@ class VPingBase(testcase.TestCase):
             self.os_creds, os_image_settings)
         self.creators.append(self.image_creator)
 
-        private_net_name = CONST.__getattribute__(
-            'vping_private_net_name') + self.guid
-        private_subnet_name = CONST.__getattribute__(
-            'vping_private_subnet_name') + self.guid
-        private_subnet_cidr = CONST.__getattribute__(
-            'vping_private_subnet_cidr')
+        private_net_name = getattr(CONST, 'vping_private_net_name') + self.guid
+        private_subnet_name = getattr(
+            CONST, 'vping_private_subnet_name') + self.guid
+        private_subnet_cidr = getattr(CONST, 'vping_private_subnet_cidr')
 
         vping_network_type = None
         vping_physical_network = None
         vping_segmentation_id = None
 
         if hasattr(CONST, 'vping_network_type'):
-            vping_network_type = CONST.__getattribute__(
-                'vping_network_type')
+            vping_network_type = getattr(CONST, 'vping_network_type')
         if hasattr(CONST, 'vping_physical_network'):
-            vping_physical_network = CONST.__getattribute__(
-                'vping_physical_network')
+            vping_physical_network = getattr(CONST, 'vping_physical_network')
         if hasattr(CONST, 'vping_segmentation_id'):
-            vping_segmentation_id = CONST.__getattribute__(
-                'vping_segmentation_id')
+            vping_segmentation_id = getattr(CONST, 'vping_segmentation_id')
 
         self.logger.info(
             "Creating network with name: '%s'", private_net_name)
@@ -154,7 +144,7 @@ class VPingBase(testcase.TestCase):
 
         self.logger.info(
             "Creating flavor with name: '%s'", self.flavor_name)
-        scenario = CONST.__getattribute__('DEPLOY_SCENARIO')
+        scenario = getattr(CONST, 'DEPLOY_SCENARIO')
         flavor_metadata = None
         flavor_ram = 512
         if 'ovs' in scenario or 'fdio' in scenario:
@@ -197,7 +187,7 @@ class VPingBase(testcase.TestCase):
         Cleanup all OpenStack objects. Should be called on completion
         :return:
         """
-        if CONST.__getattribute__('vping_cleanup_objects') == 'True':
+        if getattr(CONST, 'vping_cleanup_objects') == 'True':
             for creator in reversed(self.creators):
                 try:
                     creator.clean()
index 7df767e..57e177e 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-#
+
 # Copyright (c) 2015 All rights reserved
 # This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
@@ -7,12 +7,8 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
-
 """vPingSSH testcase."""
 
-# This 1st import is here simply for pep8 as the 'os' package import appears
-# to be required for mock and the unit tests will fail without it
-import os  # noqa # pylint: disable=unused-import
 import time
 
 from scp import SCPClient
@@ -53,7 +49,7 @@ class VPingSSH(vping_base.VPingBase):
         self.sg_desc = CONST.__getattribute__('vping_sg_desc')
 
     @energy.enable_recording
-    def run(self):
+    def run(self, **kwargs):
         """
         Excecute VPingSSH testcase.
 
index ceba091..76cdcf8 100644 (file)
@@ -1,5 +1,5 @@
 #!/usr/bin/env python
-#
+
 # Copyright (c) 2015 All rights reserved
 # This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
@@ -29,7 +29,7 @@ class VPingUserdata(vping_base.VPingBase):
             kwargs["case_name"] = "vping_userdata"
         super(VPingUserdata, self).__init__(**kwargs)
 
-    def run(self):
+    def run(self, **kwargs):
         """
         Sets up the OpenStack VM instance objects then executes the ping and
         validates.
index 9a360cb..3d9e9df 100644 (file)
@@ -8,15 +8,15 @@
 
 # pylint: disable=missing-docstring
 
-import mock
-import os
+import logging
 import unittest
 
+import mock
 from snaps.openstack.os_credentials import OSCreds
 
 from functest.core.testcase import TestCase
-from functest.opnfv_tests.openstack.snaps import (connection_check, api_check,
-                                                  health_check, smoke)
+from functest.opnfv_tests.openstack.snaps import (
+    connection_check, api_check, health_check, smoke)
 
 
 class ConnectionCheckTesting(unittest.TestCase):
@@ -35,40 +35,52 @@ class ConnectionCheckTesting(unittest.TestCase):
 
     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
                 'add_openstack_client_tests')
-    def test_run_success(self, 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('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.EX_OK, self.connection_check.run())
+        self.assertEquals(
+            TestCase.EX_OK, self.connection_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', 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')
-    def test_run_1_of_100_failures(self, 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('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.EX_OK, self.connection_check.run())
+        self.assertEquals(
+            TestCase.EX_TESTCASE_FAILED, self.connection_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', 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')
-    def test_run_1_of_100_failures_within_criteria(self, add_os_client_tests):
+    @mock.patch('unittest.TextTestRunner.run',
+                return_value=mock.MagicMock(name='unittest.TextTestResult'))
+    def test_run_1_of_100_ko_criteria(self, *args):
         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())
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(TestCase.EX_OK, self.connection_check.run())
+        self.assertEquals(
+            TestCase.EX_OK, self.connection_check.is_successful())
+        args[0].assert_called_with(mock.ANY)
+        args[1].assert_called_with(
+            ext_net_name='foo', os_creds=self.os_creds, suite=mock.ANY,
+            use_keystone=True)
 
 
 class APICheckTesting(unittest.TestCase):
@@ -87,40 +99,52 @@ class APICheckTesting(unittest.TestCase):
 
     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_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('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.EX_OK, self.api_check.run())
+        self.assertEquals(
+            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_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('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.EX_OK, self.api_check.run())
+        self.assertEquals(
+            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)
 
     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
                 'add_openstack_api_tests')
-    def test_run_1_of_100_failures_within_criteria(self, add_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
-        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())
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(TestCase.EX_OK, self.api_check.run())
+        self.assertEquals(
+            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 HealthCheckTesting(unittest.TestCase):
@@ -137,42 +161,57 @@ class HealthCheckTesting(unittest.TestCase):
         self.health_check = health_check.HealthCheck(
             os_creds=self.os_creds, ext_net_name='foo')
 
-    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_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('functest.opnfv_tests.openstack.snaps.snaps_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('functest.opnfv_tests.openstack.snaps.snaps_suite_builder.'
-                'add_openstack_client_tests')
-    def test_run_1_of_100_failures_within_criteria(self, add_tests):
+    @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.EX_OK, self.health_check.run())
+        self.assertEquals(
+            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=None,
+            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.EX_OK, self.health_check.run())
+        self.assertEquals(
+            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=None,
+            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
-        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())
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(TestCase.EX_OK, self.health_check.run())
+        self.assertEquals(
+            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=None,
+            image_metadata=mock.ANY, netconf_override=None,
+            os_creds=self.os_creds, use_keystone=True)
 
 
 class SmokeTesting(unittest.TestCase):
@@ -191,40 +230,56 @@ class SmokeTesting(unittest.TestCase):
 
     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_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('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.EX_OK, self.smoke.run())
+        self.assertEquals(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=None, 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('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('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.EX_OK, self.smoke.run())
+        self.assertEquals(
+            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=None, 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('os.path.join', return_value=os.getcwd())
-    def test_run_1_of_100_failures_within_criteria(self, add_tests, cwd):
+    @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
-        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())
+        args[0].return_value.testsRun = 100
+        args[0].return_value.failures = ['foo']
+        args[0].return_value.errors = []
+        self.assertEquals(TestCase.EX_OK, self.smoke.run())
+        self.assertEquals(
+            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=None, 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)
diff --git a/functest/tests/unit/openstack/vping/__init__.py b/functest/tests/unit/openstack/vping/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
index d494a79..42650de 100644 (file)
@@ -1,3 +1,5 @@
+#!/usr/bin/env python
+
 # Copyright (c) 2017 Cable Television Laboratories, Inc. and others.
 #
 # All rights reserved. This program and the accompanying materials
@@ -8,6 +10,7 @@
 
 # pylint: disable=missing-docstring
 
+import logging
 import unittest
 
 import mock
@@ -46,21 +49,25 @@ class VPingUserdataTesting(unittest.TestCase):
             os_creds=self.os_creds)
 
     @mock.patch('snaps.openstack.utils.deploy_utils.create_vm_instance')
-    @mock.patch('functest.opnfv_tests.openstack.vping.vping_base.os.'
-                'path.exists', return_value=True)
+    @mock.patch('os.path.exists', return_value=True)
     @mock.patch('snaps.openstack.create_flavor.OpenStackFlavor.create',
                 return_value=None)
     @mock.patch('snaps.openstack.create_instance.OpenStackVmInstance.'
                 'get_port_ip', return_value='10.0.0.1')
     @mock.patch('snaps.openstack.create_instance.OpenStackVmInstance.'
                 'vm_active', return_value=True)
-    def test_vping_userdata(self, deploy_vm, path_exists, create_flavor,
-                            get_port_ip, vm_active):
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+                'get_ext_net_name', return_value='foo')
+    def test_vping_userdata(self, *args):
+        # pylint: disable=unused-argument
         with mock.patch('snaps.openstack.utils.deploy_utils.create_image',
                         return_value=OpenStackImage(self.os_creds, None)), \
                 mock.patch('snaps.openstack.utils.deploy_utils.create_network',
                            return_value=OpenStackNetwork(
                                self.os_creds, NetworkConfig(name='foo'))), \
+                mock.patch('snaps.openstack.utils.deploy_utils.create_router',
+                           return_value=OpenStackRouter(
+                               self.os_creds, RouterConfig(name='foo'))), \
                 mock.patch('snaps.openstack.utils.deploy_utils.'
                            'create_vm_instance',
                            return_value=OpenStackVmInstance(
@@ -91,8 +98,7 @@ class VPingSSHTesting(unittest.TestCase):
             os_creds=self.os_creds)
 
     @mock.patch('snaps.openstack.utils.deploy_utils.create_vm_instance')
-    @mock.patch('functest.opnfv_tests.openstack.vping.vping_base.os.'
-                'path.exists', return_value=True)
+    @mock.patch('os.path.exists', return_value=True)
     @mock.patch('snaps.openstack.create_flavor.OpenStackFlavor.create',
                 return_value=None)
     @mock.patch('snaps.openstack.create_instance.OpenStackVmInstance.'
@@ -110,10 +116,8 @@ class VPingSSHTesting(unittest.TestCase):
                 'VPingSSH._do_vping_ssh', return_value=TestCase.EX_OK)
     @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
                 'get_ext_net_name', return_value='foo')
-    def test_vping_ssh(self, create_vm, path_exists,
-                       flavor_create, get_port_ip, vm_active, ssh_active,
-                       ssh_client, scp_client, trans_script, do_vping_ssh,
-                       ext_net_name):
+    def test_vping_ssh(self, *args):
+        # pylint: disable=unused-argument
         os_vm_inst = mock.MagicMock(name='get_console_output')
         os_vm_inst.get_console_output.return_value = 'vPing OK'
         ssh_client = mock.MagicMock(name='get_transport')
@@ -159,3 +163,8 @@ class VPingSSHTesting(unittest.TestCase):
                            'OpenStackVmInstance.'
                            'ssh_client', return_value=ssh_client):
             self.assertEquals(TestCase.EX_OK, self.vping_ssh.run())
+
+
+if __name__ == "__main__":
+    logging.disable(logging.CRITICAL)
+    unittest.main(verbosity=2)
diff --git a/tox.ini b/tox.ini
index 251ca26..b1324cf 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -34,6 +34,8 @@ modules =
   functest.cli
   functest.core
   functest.energy
+  functest.opnfv_tests.openstack.snaps
+  functest.opnfv_tests.openstack.vping
   functest.opnfv_tests.sdn.odl
   functest.opnfv_tests.vnf.router
   functest.tests.unit.ci
@@ -41,6 +43,8 @@ modules =
   functest.tests.unit.core
   functest.tests.unit.energy
   functest.tests.unit.odl
+  functest.tests.unit.openstack.snaps
+  functest.tests.unit.openstack.vping
   functest.tests.unit.vnf.router
   functest.tests.unit.utils.test_decorators
   functest.utils.config