Catch warnings consistently during tests
Use unittest2.assertWarnsRegex() for making sure we generate the required warnings. Use WarningsCapture to not print the other repeated warns to the console. Change-Id: I7223f8956394208eaf2eb8a1d651ba1425128bc9
This commit is contained in:
parent
e27831cc95
commit
b87ecfc614
|
@ -77,6 +77,7 @@ class HeatTestCase(testscenarios.WithScenarios,
|
||||||
self.m = mox.Mox()
|
self.m = mox.Mox()
|
||||||
self.addCleanup(self.m.UnsetStubs)
|
self.addCleanup(self.m.UnsetStubs)
|
||||||
self.setup_logging()
|
self.setup_logging()
|
||||||
|
self.warnings = self.useFixture(fixtures.WarningsCapture())
|
||||||
scheduler.ENABLE_SLEEP = False
|
scheduler.ENABLE_SLEEP = False
|
||||||
self.useFixture(fixtures.MonkeyPatch(
|
self.useFixture(fixtures.MonkeyPatch(
|
||||||
'heat.common.exception._FATAL_EXCEPTION_FORMAT_ERRORS',
|
'heat.common.exception._FATAL_EXCEPTION_FORMAT_ERRORS',
|
||||||
|
|
|
@ -37,7 +37,6 @@ class SoftwareConfigServiceTest(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(SoftwareConfigServiceTest, self).setUp()
|
super(SoftwareConfigServiceTest, self).setUp()
|
||||||
self.ctx = utils.dummy_context()
|
self.ctx = utils.dummy_context()
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
self.engine = service.EngineService('a-host', 'a-topic')
|
self.engine = service.EngineService('a-host', 'a-topic')
|
||||||
|
|
||||||
def _create_software_config(
|
def _create_software_config(
|
||||||
|
|
|
@ -29,7 +29,6 @@ class StackServiceActionsTest(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(StackServiceActionsTest, self).setUp()
|
super(StackServiceActionsTest, self).setUp()
|
||||||
self.ctx = utils.dummy_context()
|
self.ctx = utils.dummy_context()
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
self.man = service.EngineService('a-host', 'a-topic')
|
self.man = service.EngineService('a-host', 'a-topic')
|
||||||
self.man.create_periodic_tasks()
|
self.man.create_periodic_tasks()
|
||||||
|
|
||||||
|
@ -132,7 +131,6 @@ class StackServiceUpdateActionsNotSupportedTest(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(StackServiceUpdateActionsNotSupportedTest, self).setUp()
|
super(StackServiceUpdateActionsNotSupportedTest, self).setUp()
|
||||||
self.ctx = utils.dummy_context()
|
self.ctx = utils.dummy_context()
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
self.man = service.EngineService('a-host', 'a-topic')
|
self.man = service.EngineService('a-host', 'a-topic')
|
||||||
|
|
||||||
@mock.patch.object(stack.Stack, 'load')
|
@mock.patch.object(stack.Stack, 'load')
|
||||||
|
|
|
@ -72,7 +72,6 @@ class AttributeSchemaTest(common.HeatTestCase):
|
||||||
attrs._attributes['bar_dep'].support_status().message)
|
attrs._attributes['bar_dep'].support_status().message)
|
||||||
|
|
||||||
def test_old_attribute_schema_format(self):
|
def test_old_attribute_schema_format(self):
|
||||||
with mock.patch('heat.engine.attributes.warnings'):
|
|
||||||
s = 'Test description.'
|
s = 'Test description.'
|
||||||
self.assertIsInstance(attributes.Schema.from_attribute(s),
|
self.assertIsInstance(attributes.Schema.from_attribute(s),
|
||||||
attributes.Schema)
|
attributes.Schema)
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import mock
|
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
|
@ -21,25 +20,22 @@ from heat.tests import common
|
||||||
|
|
||||||
|
|
||||||
class SchemaTest(common.HeatTestCase):
|
class SchemaTest(common.HeatTestCase):
|
||||||
@mock.patch('warnings.warn')
|
def test_warn_required_with_default(self):
|
||||||
def test_warn_required_with_default(self, mock_warn):
|
msg = ("Option 'required=True' should not be used with any 'default' "
|
||||||
|
"value \(wibble\)")
|
||||||
|
with self.assertWarnsRegex(UserWarning, msg):
|
||||||
constraints.Schema(constraints.Schema.STRING, 'A string',
|
constraints.Schema(constraints.Schema.STRING, 'A string',
|
||||||
default='wibble', required=True)
|
default='wibble', required=True)
|
||||||
msg = ("Option 'required=True' should not be used with any 'default' "
|
|
||||||
"value (wibble)")
|
|
||||||
mock_warn.assert_called_once_with(msg)
|
|
||||||
|
|
||||||
@mock.patch('warnings.warn')
|
def test_without_warn_only_default(self):
|
||||||
def test_without_warn_only_default(self, mock_warn):
|
|
||||||
constraints.Schema(constraints.Schema.STRING, 'A string',
|
constraints.Schema(constraints.Schema.STRING, 'A string',
|
||||||
default='wibble')
|
default='wibble')
|
||||||
self.assertEqual(0, mock_warn.call_count)
|
self.assertEqual(0, len(self.warnings.captures))
|
||||||
|
|
||||||
@mock.patch('warnings.warn')
|
def test_without_warn_only_required(self):
|
||||||
def test_without_warn_only_required(self, mock_warn):
|
|
||||||
constraints.Schema(constraints.Schema.STRING, 'A string',
|
constraints.Schema(constraints.Schema.STRING, 'A string',
|
||||||
required=True)
|
required=True)
|
||||||
self.assertEqual(0, mock_warn.call_count)
|
self.assertEqual(0, len(self.warnings.captures))
|
||||||
|
|
||||||
def test_range_schema(self):
|
def test_range_schema(self):
|
||||||
d = {'range': {'min': 5, 'max': 10}, 'description': 'a range'}
|
d = {'range': {'min': 5, 'max': 10}, 'description': 'a range'}
|
||||||
|
|
|
@ -561,7 +561,6 @@ class StackServiceCreateUpdateDeleteTest(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(StackServiceCreateUpdateDeleteTest, self).setUp()
|
super(StackServiceCreateUpdateDeleteTest, self).setUp()
|
||||||
self.ctx = utils.dummy_context()
|
self.ctx = utils.dummy_context()
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
self.man = service.EngineService('a-host', 'a-topic')
|
self.man = service.EngineService('a-host', 'a-topic')
|
||||||
self.man.create_periodic_tasks()
|
self.man.create_periodic_tasks()
|
||||||
|
|
||||||
|
@ -1630,7 +1629,6 @@ class StackConvergenceServiceCreateUpdateTest(common.HeatTestCase):
|
||||||
super(StackConvergenceServiceCreateUpdateTest, self).setUp()
|
super(StackConvergenceServiceCreateUpdateTest, self).setUp()
|
||||||
cfg.CONF.set_override('convergence_engine', True)
|
cfg.CONF.set_override('convergence_engine', True)
|
||||||
self.ctx = utils.dummy_context()
|
self.ctx = utils.dummy_context()
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
self.man = service.EngineService('a-host', 'a-topic')
|
self.man = service.EngineService('a-host', 'a-topic')
|
||||||
self.man.create_periodic_tasks()
|
self.man.create_periodic_tasks()
|
||||||
|
|
||||||
|
@ -1740,7 +1738,6 @@ class StackServiceAuthorizeTest(common.HeatTestCase):
|
||||||
super(StackServiceAuthorizeTest, self).setUp()
|
super(StackServiceAuthorizeTest, self).setUp()
|
||||||
|
|
||||||
self.ctx = utils.dummy_context(tenant_id='stack_service_test_tenant')
|
self.ctx = utils.dummy_context(tenant_id='stack_service_test_tenant')
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
self.eng = service.EngineService('a-host', 'a-topic')
|
self.eng = service.EngineService('a-host', 'a-topic')
|
||||||
self.eng.engine_id = 'engine-fake-uuid'
|
self.eng.engine_id = 'engine-fake-uuid'
|
||||||
cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role')
|
cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role')
|
||||||
|
@ -1833,7 +1830,6 @@ class StackServiceTest(common.HeatTestCase):
|
||||||
super(StackServiceTest, self).setUp()
|
super(StackServiceTest, self).setUp()
|
||||||
|
|
||||||
self.ctx = utils.dummy_context(tenant_id='stack_service_test_tenant')
|
self.ctx = utils.dummy_context(tenant_id='stack_service_test_tenant')
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
self.eng = service.EngineService('a-host', 'a-topic')
|
self.eng = service.EngineService('a-host', 'a-topic')
|
||||||
self.eng.create_periodic_tasks()
|
self.eng.create_periodic_tasks()
|
||||||
self.eng.engine_id = 'engine-fake-uuid'
|
self.eng.engine_id = 'engine-fake-uuid'
|
||||||
|
|
|
@ -23,9 +23,7 @@ class StackServiceWatcherTest(common.HeatTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(StackServiceWatcherTest, self).setUp()
|
super(StackServiceWatcherTest, self).setUp()
|
||||||
|
|
||||||
self.ctx = utils.dummy_context(tenant_id='stack_service_test_tenant')
|
self.ctx = utils.dummy_context(tenant_id='stack_service_test_tenant')
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
|
|
||||||
@mock.patch.object(service_stack_watch.stack_object.Stack,
|
@mock.patch.object(service_stack_watch.stack_object.Stack,
|
||||||
'get_all_by_owner_id')
|
'get_all_by_owner_id')
|
||||||
|
|
|
@ -211,8 +211,6 @@ class MetadataRefreshTest(common.HeatTestCase):
|
||||||
class WaitCondMetadataUpdateTest(common.HeatTestCase):
|
class WaitCondMetadataUpdateTest(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(WaitCondMetadataUpdateTest, self).setUp()
|
super(WaitCondMetadataUpdateTest, self).setUp()
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
|
|
||||||
self.man = service.EngineService('a-host', 'a-topic')
|
self.man = service.EngineService('a-host', 'a-topic')
|
||||||
self.man.create_periodic_tasks()
|
self.man.create_periodic_tasks()
|
||||||
cfg.CONF.set_default('heat_waitcondition_server_url',
|
cfg.CONF.set_default('heat_waitcondition_server_url',
|
||||||
|
|
|
@ -35,10 +35,6 @@ class NovaUtilsTests(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(NovaUtilsTests, self).setUp()
|
super(NovaUtilsTests, self).setUp()
|
||||||
self.nova_client = self.m.CreateMockAnything()
|
self.nova_client = self.m.CreateMockAnything()
|
||||||
self.mock_warnings = mock.patch(
|
|
||||||
'heat.engine.nova_utils.warnings')
|
|
||||||
self.mock_warnings.start()
|
|
||||||
self.addCleanup(self.mock_warnings.stop)
|
|
||||||
|
|
||||||
def test_get_ip(self):
|
def test_get_ip(self):
|
||||||
my_image = self.m.CreateMockAnything()
|
my_image = self.m.CreateMockAnything()
|
||||||
|
@ -130,13 +126,6 @@ class NovaUtilsTests(common.HeatTestCase):
|
||||||
|
|
||||||
class NovaUtilsRefreshServerTests(common.HeatTestCase):
|
class NovaUtilsRefreshServerTests(common.HeatTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(NovaUtilsRefreshServerTests, self).setUp()
|
|
||||||
self.mock_warnings = mock.patch(
|
|
||||||
'heat.engine.nova_utils.warnings')
|
|
||||||
self.mock_warnings.start()
|
|
||||||
self.addCleanup(self.mock_warnings.stop)
|
|
||||||
|
|
||||||
def test_successful_refresh(self):
|
def test_successful_refresh(self):
|
||||||
server = self.m.CreateMockAnything()
|
server = self.m.CreateMockAnything()
|
||||||
server.get().AndReturn(None)
|
server.get().AndReturn(None)
|
||||||
|
@ -181,10 +170,6 @@ class NovaUtilsUserdataTests(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(NovaUtilsUserdataTests, self).setUp()
|
super(NovaUtilsUserdataTests, self).setUp()
|
||||||
self.nova_client = self.m.CreateMockAnything()
|
self.nova_client = self.m.CreateMockAnything()
|
||||||
self.mock_warnings = mock.patch(
|
|
||||||
'heat.engine.nova_utils.warnings')
|
|
||||||
self.mock_warnings.start()
|
|
||||||
self.addCleanup(self.mock_warnings.stop)
|
|
||||||
|
|
||||||
def test_build_userdata(self):
|
def test_build_userdata(self):
|
||||||
"""Tests the build_userdata function."""
|
"""Tests the build_userdata function."""
|
||||||
|
@ -243,13 +228,6 @@ class NovaUtilsUserdataTests(common.HeatTestCase):
|
||||||
|
|
||||||
class NovaUtilsMetadataTests(common.HeatTestCase):
|
class NovaUtilsMetadataTests(common.HeatTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(NovaUtilsMetadataTests, self).setUp()
|
|
||||||
self.mock_warnings = mock.patch(
|
|
||||||
'heat.engine.nova_utils.warnings')
|
|
||||||
self.mock_warnings.start()
|
|
||||||
self.addCleanup(self.mock_warnings.stop)
|
|
||||||
|
|
||||||
def test_serialize_string(self):
|
def test_serialize_string(self):
|
||||||
original = {'test_key': 'simple string value'}
|
original = {'test_key': 'simple string value'}
|
||||||
self.assertEqual(original, nova_utils.meta_serialize(original))
|
self.assertEqual(original, nova_utils.meta_serialize(original))
|
||||||
|
|
|
@ -68,7 +68,6 @@ class ResourceTest(common.HeatTestCase):
|
||||||
template.Template(empty_template,
|
template.Template(empty_template,
|
||||||
env=self.env),
|
env=self.env),
|
||||||
stack_id=str(uuid.uuid4()))
|
stack_id=str(uuid.uuid4()))
|
||||||
self.patch('heat.engine.resource.warnings')
|
|
||||||
|
|
||||||
def test_get_class_ok(self):
|
def test_get_class_ok(self):
|
||||||
cls = resources.global_env().get_class('GenericResourceType')
|
cls = resources.global_env().get_class('GenericResourceType')
|
||||||
|
@ -1310,7 +1309,6 @@ class ResourceAdoptTest(common.HeatTestCase):
|
||||||
super(ResourceAdoptTest, self).setUp()
|
super(ResourceAdoptTest, self).setUp()
|
||||||
resource._register_class('GenericResourceType',
|
resource._register_class('GenericResourceType',
|
||||||
generic_rsrc.GenericResource)
|
generic_rsrc.GenericResource)
|
||||||
self.patch('heat.engine.resource.warnings')
|
|
||||||
|
|
||||||
def test_adopt_resource_success(self):
|
def test_adopt_resource_success(self):
|
||||||
adopt_data = '{}'
|
adopt_data = '{}'
|
||||||
|
@ -1911,7 +1909,6 @@ class MetadataTest(common.HeatTestCase):
|
||||||
|
|
||||||
scheduler.TaskRunner(self.res.create)()
|
scheduler.TaskRunner(self.res.create)()
|
||||||
self.addCleanup(self.stack.delete)
|
self.addCleanup(self.stack.delete)
|
||||||
self.patch('heat.engine.resource.warnings')
|
|
||||||
|
|
||||||
def test_read_initial(self):
|
def test_read_initial(self):
|
||||||
self.assertEqual({'Test': 'Initial metadata'}, self.res.metadata_get())
|
self.assertEqual({'Test': 'Initial metadata'}, self.res.metadata_get())
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
import warnings
|
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
from oslotest import mockpatch
|
from oslotest import mockpatch
|
||||||
|
@ -1021,18 +1020,11 @@ class ResolveDataTest(common.HeatTestCase):
|
||||||
template.Template(empty_template),
|
template.Template(empty_template),
|
||||||
tenant_id='bar')
|
tenant_id='bar')
|
||||||
|
|
||||||
with warnings.catch_warnings(record=True) as ws:
|
|
||||||
warnings.filterwarnings('always')
|
|
||||||
|
|
||||||
# Work around http://bugs.python.org/issue4180
|
|
||||||
getattr(stack, '__warningregistry__', {}).clear()
|
|
||||||
|
|
||||||
test_data = {'foo': 'bar'}
|
test_data = {'foo': 'bar'}
|
||||||
|
msg = ('Stack.resolve_runtime_data\(\) is deprecated.'
|
||||||
|
' Use heat.engine.function.resolve\(\) instead')
|
||||||
|
with self.assertWarnsRegex(DeprecationWarning, msg):
|
||||||
resolved = stk.resolve_runtime_data(test_data)
|
resolved = stk.resolve_runtime_data(test_data)
|
||||||
|
|
||||||
self.assertTrue(ws)
|
|
||||||
self.assertTrue(issubclass(ws[0].category, DeprecationWarning))
|
|
||||||
|
|
||||||
self.assertEqual(test_data, resolved)
|
self.assertEqual(test_data, resolved)
|
||||||
|
|
||||||
def test_join_split(self):
|
def test_join_split(self):
|
||||||
|
|
|
@ -820,7 +820,6 @@ class validateTest(common.HeatTestCase):
|
||||||
self.gc = fakes_nova.FakeClient()
|
self.gc = fakes_nova.FakeClient()
|
||||||
resources.initialise()
|
resources.initialise()
|
||||||
self.ctx = utils.dummy_context()
|
self.ctx = utils.dummy_context()
|
||||||
self.patch('heat.engine.service.warnings')
|
|
||||||
|
|
||||||
def _mock_get_image_id_success(self, imageId_input, imageId):
|
def _mock_get_image_id_success(self, imageId_input, imageId):
|
||||||
self.m.StubOutWithMock(glance.GlanceClientPlugin, 'get_image_id')
|
self.m.StubOutWithMock(glance.GlanceClientPlugin, 'get_image_id')
|
||||||
|
|
Loading…
Reference in New Issue