From: spisarski Date: Thu, 1 Jun 2017 14:04:24 +0000 (-0600) Subject: Added unit tests for api_check, health_check, and smoke tests. X-Git-Tag: 0.2~544^2 X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=e98be297ea911c9185fc263cd325b558a0a20ea9;p=functest-xtesting.git Added unit tests for api_check, health_check, and smoke tests. 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 --- diff --git a/functest/opnfv_tests/openstack/snaps/api_check.py b/functest/opnfv_tests/openstack/snaps/api_check.py index 50f67094..43518cb4 100644 --- a/functest/opnfv_tests/openstack/snaps/api_check.py +++ b/functest/opnfv_tests/openstack/snaps/api_check.py @@ -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() diff --git a/functest/opnfv_tests/openstack/snaps/health_check.py b/functest/opnfv_tests/openstack/snaps/health_check.py index 0daddcdd..4e94460c 100644 --- a/functest/opnfv_tests/openstack/snaps/health_check.py +++ b/functest/opnfv_tests/openstack/snaps/health_check.py @@ -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() diff --git a/functest/opnfv_tests/openstack/snaps/smoke.py b/functest/opnfv_tests/openstack/snaps/smoke.py index d9f95e90..c3c55c7c 100644 --- a/functest/opnfv_tests/openstack/snaps/smoke.py +++ b/functest/opnfv_tests/openstack/snaps/smoke.py @@ -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() diff --git a/functest/tests/unit/openstack/snaps/test_snaps.py b/functest/tests/unit/openstack/snaps/test_snaps.py index 9cfcc0a6..7cf53b39 100644 --- a/functest/tests/unit/openstack/snaps/test_snaps.py +++ b/functest/tests/unit/openstack/snaps/test_snaps.py @@ -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())