Create custom assertTrue and assertFalse
Python's unittest framework assertTrue and assertFalse methods don't check that the provided value is False or True, like the documentation says: Note that this is equivalent to bool(expr) is True and not to expr is True (use assertIs(expr, True) for the latter). According to the documentation we should try to avoid using it as much as possible: This method should also be avoided when more specific methods are available (e.g. assertEqual(a, b) instead of assertTrue(a == b)), because they provide a better error message in case of failure. But in our current code we keep abusing its use in many ways, among which we can easily find the following: - Thinking it only matches False/True - assertTrue(expected, actual) --> This will always be true as long as bool(expected) is True, because actual is interpreted as the message to return on failure. - Incorrectly testing values, like checking for a tuple of the form (True, {...}) instead of testing for True in the first position. This patch fixes incorrect some of the incorrect uses of the methods and overwrites default methods so that they behave the way many people think they do: - assertTrue(x) == assertIs(True,x) - assertFalse(x) == assertIs(False,x) This will hopefully help us prevent incorrect usage of the methods. Change-Id: I1e8c82702932e6b6d940bd83d0a2d4494576a81b
This commit is contained in:
parent
2a92448c69
commit
720f07f0d6
|
@ -356,11 +356,28 @@ class TestCase(testtools.TestCase):
|
|||
self.assertEqual(call[1], posargs[2])
|
||||
|
||||
def assertTrue(self, x, *args, **kwargs):
|
||||
if isinstance(x, six.string_types):
|
||||
raise AssertionError("%s (%s) is a string. Use a more "
|
||||
"specific assertion such as assertEqual." %
|
||||
(x, type(x)))
|
||||
super(TestCase, self).assertTrue(x, *args, **kwargs)
|
||||
"""Assert that value is True.
|
||||
|
||||
If original behavior is required we will need to do:
|
||||
assertTrue(bool(result))
|
||||
"""
|
||||
# assertTrue uses msg but assertIs uses message keyword argument
|
||||
args = list(args)
|
||||
msg = kwargs.pop('msg', args.pop(0) if args else '')
|
||||
kwargs.setdefault('message', msg)
|
||||
self.assertIs(True, x, *args, **kwargs)
|
||||
|
||||
def assertFalse(self, x, *args, **kwargs):
|
||||
"""Assert that value is False.
|
||||
|
||||
If original behavior is required we will need to do:
|
||||
assertFalse(bool(result))
|
||||
"""
|
||||
# assertTrue uses msg but assertIs uses message keyword argument
|
||||
args = list(args)
|
||||
msg = kwargs.pop('msg', args.pop(0) if args else '')
|
||||
kwargs.setdefault('message', msg)
|
||||
self.assertIs(False, x, *args, **kwargs)
|
||||
|
||||
|
||||
class ModelsObjectComparatorMixin(object):
|
||||
|
|
|
@ -64,11 +64,11 @@ class APIVersionRequestTests(test.TestCase):
|
|||
|
||||
def test_null_version(self):
|
||||
v = api_version_request.APIVersionRequest()
|
||||
self.assertFalse(v)
|
||||
self.assertFalse(bool(v))
|
||||
|
||||
def test_not_null_version(self):
|
||||
v = api_version_request.APIVersionRequest('1.1')
|
||||
self.assertTrue(v)
|
||||
self.assertTrue(bool(v))
|
||||
|
||||
@ddt.data('2', '200', '2.1.4', '200.23.66.3', '5 .3', '5. 3',
|
||||
'5.03', '02.1', '2.001', '', ' 2.1', '2.1 ')
|
||||
|
|
|
@ -464,7 +464,7 @@ class SnapshotApiTest(test.TestCase):
|
|||
links = res['snapshots_links']
|
||||
|
||||
# Must be a list of links, even if we only get 1 back
|
||||
self.assertTrue(list, type(links))
|
||||
self.assertIsInstance(links, list)
|
||||
next_link = links[0]
|
||||
|
||||
# rel entry must be next
|
||||
|
|
|
@ -393,7 +393,7 @@ class BrickLvmTestCase(test.TestCase):
|
|||
def test_lv_get_origin(self):
|
||||
self.assertEqual('fake-volume-1',
|
||||
self.vg.lv_get_origin('fake-snapshot'))
|
||||
self.assertFalse(None, self.vg.lv_get_origin('test-volumes'))
|
||||
self.assertIsNone(self.vg.lv_get_origin('test-volumes'))
|
||||
|
||||
def test_activate_lv(self):
|
||||
with mock.patch.object(self.vg, '_execute'):
|
||||
|
|
|
@ -90,7 +90,7 @@ class TestCluster(test_objects.BaseObjectsTestCase):
|
|||
def test_is_up_no_last_hearbeat(self):
|
||||
cluster = fake_cluster.fake_cluster_ovo(self.context,
|
||||
last_heartbeat=None)
|
||||
self.assertFalse(cluster.is_up)
|
||||
self.assertFalse(bool(cluster.is_up))
|
||||
|
||||
def test_is_up(self):
|
||||
cluster = fake_cluster.fake_cluster_ovo(
|
||||
|
|
|
@ -580,7 +580,7 @@ class TestVolume(test_objects.BaseObjectsTestCase):
|
|||
def test_is_replicated_no_type(self):
|
||||
volume = fake_volume.fake_volume_obj(
|
||||
self.context, volume_type_id=None, volume_type=None)
|
||||
self.assertFalse(volume.is_replicated())
|
||||
self.assertFalse(bool(volume.is_replicated()))
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
|
|
|
@ -219,7 +219,7 @@ class TestVolumeType(test_objects.BaseObjectsTestCase):
|
|||
def test_is_replicated_no_specs(self):
|
||||
volume_type = fake_volume.fake_volume_type_obj(
|
||||
self.context, extra_specs={})
|
||||
self.assertFalse(volume_type.is_replicated())
|
||||
self.assertFalse(bool(volume_type.is_replicated()))
|
||||
|
||||
@ddt.data('<is> False', '<is> false', '<is> f', 'baddata', 'bad data')
|
||||
def test_is_replicated_specs_false(self, not_enabled):
|
||||
|
|
|
@ -731,7 +731,7 @@ class AffinityFilterTestCase(BackendFiltersTestCase):
|
|||
'scheduler_hints': {
|
||||
'same_host': vol_id}}
|
||||
|
||||
self.assertTrue(filt_cls.backend_passes(host, filter_properties))
|
||||
self.assertTrue(bool(filt_cls.backend_passes(host, filter_properties)))
|
||||
|
||||
def test_same_filter_passes(self):
|
||||
filt_cls = self.class_map['SameBackendFilter']()
|
||||
|
@ -743,7 +743,7 @@ class AffinityFilterTestCase(BackendFiltersTestCase):
|
|||
'scheduler_hints': {
|
||||
'same_host': [vol_id], }}
|
||||
|
||||
self.assertTrue(filt_cls.backend_passes(host, filter_properties))
|
||||
self.assertTrue(bool(filt_cls.backend_passes(host, filter_properties)))
|
||||
|
||||
def test_same_filter_legacy_vol_fails(self):
|
||||
filt_cls = self.class_map['SameBackendFilter']()
|
||||
|
@ -755,7 +755,8 @@ class AffinityFilterTestCase(BackendFiltersTestCase):
|
|||
'scheduler_hints': {
|
||||
'same_host': [vol_id], }}
|
||||
|
||||
self.assertFalse(filt_cls.backend_passes(host, filter_properties))
|
||||
result = filt_cls.backend_passes(host, filter_properties)
|
||||
self.assertEqual([], result.objects)
|
||||
|
||||
def test_same_filter_fails(self):
|
||||
filt_cls = self.class_map['SameBackendFilter']()
|
||||
|
@ -767,7 +768,8 @@ class AffinityFilterTestCase(BackendFiltersTestCase):
|
|||
'scheduler_hints': {
|
||||
'same_host': [vol_id], }}
|
||||
|
||||
self.assertFalse(filt_cls.backend_passes(host, filter_properties))
|
||||
result = filt_cls.backend_passes(host, filter_properties)
|
||||
self.assertEqual([], result.objects)
|
||||
|
||||
def test_same_filter_vol_list_pass(self):
|
||||
filt_cls = self.class_map['SameBackendFilter']()
|
||||
|
@ -781,7 +783,7 @@ class AffinityFilterTestCase(BackendFiltersTestCase):
|
|||
'scheduler_hints': {
|
||||
'same_host': [vol_id1, vol_id2], }}
|
||||
|
||||
self.assertTrue(filt_cls.backend_passes(host, filter_properties))
|
||||
self.assertTrue(bool(filt_cls.backend_passes(host, filter_properties)))
|
||||
|
||||
def test_same_filter_handles_none(self):
|
||||
filt_cls = self.class_map['SameBackendFilter']()
|
||||
|
@ -803,7 +805,8 @@ class AffinityFilterTestCase(BackendFiltersTestCase):
|
|||
'scheduler_hints': {
|
||||
'same_host': [vol_id], }}
|
||||
|
||||
self.assertFalse(filt_cls.backend_passes(host, filter_properties))
|
||||
result = filt_cls.backend_passes(host, filter_properties)
|
||||
self.assertEqual([], result.objects)
|
||||
|
||||
def test_same_filter_fail_nonuuid_hint(self):
|
||||
filt_cls = self.class_map['SameBackendFilter']()
|
||||
|
|
|
@ -187,7 +187,7 @@ class HostManagerTestCase(test.TestCase):
|
|||
self.host_manager.service_states_last_update['host1'])
|
||||
|
||||
# notify capab1 to ceilometer by S0
|
||||
self.assertTrue(1, _mock_get_usage_and_notify.call_count)
|
||||
self.assertEqual(1, _mock_get_usage_and_notify.call_count)
|
||||
|
||||
# S1: update_service_capabilities()
|
||||
self.host_manager_1.update_service_capabilities(service_name, 'host1',
|
||||
|
@ -263,7 +263,7 @@ class HostManagerTestCase(test.TestCase):
|
|||
dict(dict(timestamp=31339), **capab1))
|
||||
|
||||
# Don't notify capab1 to ceilometer.
|
||||
self.assertTrue(1, _mock_get_usage_and_notify.call_count)
|
||||
self.assertEqual(0, _mock_get_usage_and_notify.call_count)
|
||||
|
||||
@mock.patch(
|
||||
'cinder.scheduler.host_manager.HostManager.get_usage_and_notify')
|
||||
|
@ -311,7 +311,7 @@ class HostManagerTestCase(test.TestCase):
|
|||
self.host_manager.service_states['host1'])
|
||||
|
||||
# Don't notify capab1 to ceilometer.
|
||||
self.assertTrue(1, _mock_get_usage_and_notify.call_count)
|
||||
self.assertEqual(0, _mock_get_usage_and_notify.call_count)
|
||||
|
||||
# S0: update_service_capabilities()
|
||||
self.host_manager.update_service_capabilities(service_name, 'host1',
|
||||
|
@ -397,7 +397,7 @@ class HostManagerTestCase(test.TestCase):
|
|||
self.host_manager_1.service_states_last_update['host1'])
|
||||
|
||||
# notify capab2 to ceilometer.
|
||||
self.assertTrue(2, _mock_get_usage_and_notify.call_count)
|
||||
self.assertLess(0, _mock_get_usage_and_notify.call_count)
|
||||
|
||||
# S1: update_service_capabilities()
|
||||
self.host_manager_1.update_service_capabilities(service_name, 'host1',
|
||||
|
@ -471,7 +471,7 @@ class HostManagerTestCase(test.TestCase):
|
|||
self.host_manager.service_states['host1'])
|
||||
|
||||
# S0 notify capab2 to ceilometer.
|
||||
self.assertTrue(3, _mock_get_usage_and_notify.call_count)
|
||||
self.assertLess(0, _mock_get_usage_and_notify.call_count)
|
||||
|
||||
# S0: update_service_capabilities()
|
||||
self.host_manager.update_service_capabilities(service_name, 'host1',
|
||||
|
|
|
@ -136,7 +136,7 @@ class TestBaseISCSITargetDriver(tf.TargetDriverFixture):
|
|||
bad_connector)
|
||||
|
||||
connector = {'initiator': 'fake_init'}
|
||||
self.assertTrue(self.target.validate_connector,
|
||||
self.assertTrue(bool(self.target.validate_connector),
|
||||
connector)
|
||||
|
||||
def test_show_target_error(self):
|
||||
|
|
|
@ -2684,7 +2684,7 @@ class DBAPIBackupTestCase(BaseTest):
|
|||
{'status': fields.BackupStatus.DELETED, 'deleted': True,
|
||||
'deleted_at': UTC_NOW},
|
||||
db.backup_destroy(self.ctxt, backup['id']))
|
||||
self.assertFalse(db.backup_get_all(self.ctxt))
|
||||
self.assertEqual([], db.backup_get_all(self.ctxt))
|
||||
|
||||
def test_backup_not_found(self):
|
||||
self.assertRaises(exception.BackupNotFound, db.backup_get, self.ctxt,
|
||||
|
|
|
@ -94,7 +94,7 @@ class VolumeTypeTestCase(test.TestCase):
|
|||
# on destroying the volume type
|
||||
vol_type_access = db_api._volume_type_access_query(
|
||||
self.ctxt).filter_by(volume_type_id=type_ref['id']).all()
|
||||
self.assertFalse(vol_type_access)
|
||||
self.assertEqual([], vol_type_access)
|
||||
|
||||
@mock.patch('cinder.quota.VolumeTypeQuotaEngine.'
|
||||
'update_quota_resource')
|
||||
|
|
|
@ -1015,7 +1015,7 @@ class VolumeUtilsTestCase(test.TestCase):
|
|||
@ddt.data({}, None, {'key': 'value'})
|
||||
def test_is_replicated_no_specs(self, extra_specs):
|
||||
res = volume_utils.is_replicated_spec(extra_specs)
|
||||
self.assertFalse(res)
|
||||
self.assertFalse(bool(res))
|
||||
|
||||
@ddt.data('<is> False', '<is> false', '<is> f', 'baddata', 'bad data')
|
||||
def test_is_replicated_spec_false(self, enabled):
|
||||
|
|
|
@ -1498,7 +1498,7 @@ class VMAXRestTest(test.TestCase):
|
|||
def test_get_workload_settings_failed(self):
|
||||
wl_settings = self.rest.get_workload_settings(
|
||||
self.data.failed_resource)
|
||||
self.assertFalse(wl_settings)
|
||||
self.assertEqual([], wl_settings)
|
||||
|
||||
def test_get_headroom_capacity(self):
|
||||
ref_headroom = self.data.headroom['headroom'][0]['headroomCapacity']
|
||||
|
@ -1540,7 +1540,7 @@ class VMAXRestTest(test.TestCase):
|
|||
with mock.patch.object(self.rest, 'get_resource', return_value=None):
|
||||
sg_list = self.rest.get_storage_group_list(
|
||||
self.data.array, {})
|
||||
self.assertFalse(sg_list)
|
||||
self.assertEqual([], sg_list)
|
||||
|
||||
def test_create_storage_group(self):
|
||||
with mock.patch.object(self.rest, 'create_resource'):
|
||||
|
@ -1934,7 +1934,7 @@ class VMAXRestTest(test.TestCase):
|
|||
with mock.patch.object(self.rest, 'get_portgroup',
|
||||
return_value=None):
|
||||
port_ids = self.rest.get_port_ids(array, pg_name)
|
||||
self.assertFalse(port_ids)
|
||||
self.assertEqual([], port_ids)
|
||||
|
||||
def test_get_port(self):
|
||||
array = self.data.array
|
||||
|
@ -1975,7 +1975,7 @@ class VMAXRestTest(test.TestCase):
|
|||
with mock.patch.object(self.rest, 'get_port',
|
||||
return_value=None):
|
||||
target_wwns = self.rest.get_target_wwns(array, pg_name)
|
||||
self.assertFalse(target_wwns)
|
||||
self.assertEqual([], target_wwns)
|
||||
|
||||
def test_get_initiator_group(self):
|
||||
array = self.data.array
|
||||
|
@ -2002,7 +2002,7 @@ class VMAXRestTest(test.TestCase):
|
|||
array = self.data.array
|
||||
with mock.patch.object(self.rest, 'get_resource', return_value={}):
|
||||
init_list = self.rest.get_initiator_list(array)
|
||||
self.assertFalse(init_list)
|
||||
self.assertEqual([], init_list)
|
||||
|
||||
def test_get_in_use_initiator_list_from_array(self):
|
||||
ref_list = self.data.initiator_list[2]['initiatorId']
|
||||
|
@ -2015,7 +2015,7 @@ class VMAXRestTest(test.TestCase):
|
|||
with mock.patch.object(self.rest, 'get_initiator_list',
|
||||
return_value=[]):
|
||||
init_list = self.rest.get_in_use_initiator_list_from_array(array)
|
||||
self.assertFalse(init_list)
|
||||
self.assertEqual([], init_list)
|
||||
|
||||
def test_get_initiator_group_from_initiator(self):
|
||||
initiator = self.data.wwpn1
|
||||
|
@ -2088,12 +2088,12 @@ class VMAXRestTest(test.TestCase):
|
|||
return_value=None):
|
||||
masking_view = self.rest.get_masking_views_by_initiator_group(
|
||||
array, initiatorgroup_name)
|
||||
self.assertFalse(masking_view)
|
||||
self.assertEqual([], masking_view)
|
||||
with mock.patch.object(self.rest, 'get_initiator_group',
|
||||
return_value={'name': 'no_mv'}):
|
||||
masking_view = self.rest.get_masking_views_by_initiator_group(
|
||||
array, initiatorgroup_name)
|
||||
self.assertFalse(masking_view)
|
||||
self.assertEqual([], masking_view)
|
||||
|
||||
def test_get_element_from_masking_view(self):
|
||||
array = self.data.array
|
||||
|
@ -2145,7 +2145,7 @@ class VMAXRestTest(test.TestCase):
|
|||
return_value=[]):
|
||||
maskingview_list = self.rest.get_common_masking_views(
|
||||
array, portgroup, initiatorgroup)
|
||||
self.assertFalse(maskingview_list)
|
||||
self.assertEqual([], maskingview_list)
|
||||
|
||||
def test_create_masking_view(self):
|
||||
maskingview_name = self.data.masking_view_name_f
|
||||
|
@ -3293,7 +3293,7 @@ class VMAXCommonTest(test.TestCase):
|
|||
host = 'DifferentHost'
|
||||
maskingview_list = self.common.get_masking_views_from_volume(
|
||||
array, device_id, host)
|
||||
self.assertFalse(maskingview_list)
|
||||
self.assertEqual([], maskingview_list)
|
||||
|
||||
def test_find_host_lun_id_no_host_check(self):
|
||||
volume = self.data.test_volume
|
||||
|
@ -3645,7 +3645,7 @@ class VMAXCommonTest(test.TestCase):
|
|||
return_value=None):
|
||||
target_wwns = self.common.get_target_wwns_from_masking_view(
|
||||
self.data.test_volume, self.data.connector)
|
||||
self.assertFalse(target_wwns)
|
||||
self.assertEqual([], target_wwns)
|
||||
|
||||
def test_get_port_group_from_masking_view(self):
|
||||
array = self.data.array
|
||||
|
@ -4022,7 +4022,7 @@ class VMAXCommonTest(test.TestCase):
|
|||
migrate_status = self.common._slo_workload_migration(
|
||||
device_id, volume, host, volume_name, new_type,
|
||||
extra_specs)
|
||||
self.assertTrue(migrate_status)
|
||||
self.assertTrue(bool(migrate_status))
|
||||
self.common._migrate_volume.assert_called_once_with(
|
||||
extra_specs[utils.ARRAY], device_id,
|
||||
extra_specs[utils.SRP], self.data.slo,
|
||||
|
@ -4511,7 +4511,7 @@ class VMAXFCTest(test.TestCase):
|
|||
return_value=None):
|
||||
zoning_mappings = self.driver._get_zoning_mappings(
|
||||
self.data.test_volume, self.data.connector)
|
||||
self.assertFalse(zoning_mappings)
|
||||
self.assertEqual({}, zoning_mappings)
|
||||
|
||||
def test_cleanup_zones_other_vols_mapped(self):
|
||||
ref_data = {'driver_volume_type': 'fibre_channel',
|
||||
|
|
|
@ -1726,7 +1726,7 @@ class HPE3PARBaseDriver(object):
|
|||
|
||||
retyped = self.driver.retype(
|
||||
self.ctxt, volume, type_ref, None, self.RETYPE_HOST)
|
||||
self.assertTrue(retyped)
|
||||
self.assertTrue(retyped[0])
|
||||
|
||||
expected = [
|
||||
mock.call.modifyVolume('osv-0DM4qZEVSKON-AAAAAAAAA',
|
||||
|
@ -1796,7 +1796,7 @@ class HPE3PARBaseDriver(object):
|
|||
self.volume_type_replicated,
|
||||
None,
|
||||
self.RETYPE_HOST)
|
||||
self.assertTrue(retyped)
|
||||
self.assertTrue(retyped[0])
|
||||
backend_id = self.replication_targets[0]['backend_id']
|
||||
expected = [
|
||||
mock.call.createRemoteCopyGroup(
|
||||
|
@ -1899,7 +1899,7 @@ class HPE3PARBaseDriver(object):
|
|||
|
||||
retyped = self.driver.retype(
|
||||
self.ctxt, volume_1, volume_type, None, self.RETYPE_HOST)
|
||||
self.assertTrue(retyped)
|
||||
self.assertTrue(retyped[0])
|
||||
|
||||
expected = [
|
||||
mock.call.stopRemoteCopy(self.RCG_3PAR_NAME),
|
||||
|
@ -2000,7 +2000,7 @@ class HPE3PARBaseDriver(object):
|
|||
backend_id = self.replication_targets[0]['backend_id']
|
||||
retyped = self.driver.retype(
|
||||
self.ctxt, volume_1, volume_type, None, self.RETYPE_HOST)
|
||||
self.assertTrue(retyped)
|
||||
self.assertTrue(retyped[0])
|
||||
|
||||
expected = [
|
||||
mock.call.stopRemoteCopy(self.RCG_3PAR_NAME),
|
||||
|
|
|
@ -3390,7 +3390,7 @@ class TestHPELeftHandISCSIDriver(HPELeftHandBaseDriver, test.TestCase):
|
|||
mock_do_setup.return_value = mock_client
|
||||
mock_replication_client.return_value = mock_replicated_client
|
||||
self.driver.do_setup(None)
|
||||
self.assertFalse(self.driver._replication_targets)
|
||||
self.assertListEqual([], self.driver._replication_targets)
|
||||
|
||||
def test__create_replication_client(self):
|
||||
# set up driver with default config
|
||||
|
|
|
@ -4970,7 +4970,7 @@ class HuaweiFCDriverTestCase(HuaweiTestBase):
|
|||
self.driver.support_func = FAKE_POOLS_SUPPORT_REPORT
|
||||
retype = self.driver.retype(None, self.volume,
|
||||
test_new_type, None, test_host)
|
||||
self.assertTrue(retype)
|
||||
self.assertTrue(retype[0])
|
||||
|
||||
@ddt.data(FAKE_POOLS_UNSUPPORT_REPORT, FAKE_POOLS_SUPPORT_REPORT)
|
||||
@mock.patch.object(rest_client, 'RestClient')
|
||||
|
@ -4984,7 +4984,7 @@ class HuaweiFCDriverTestCase(HuaweiTestBase):
|
|||
self.driver.support_func = pool_data
|
||||
retype = self.driver.retype(None, self.volume,
|
||||
test_new_replication_type, None, test_host)
|
||||
self.assertTrue(retype)
|
||||
self.assertTrue(retype[0])
|
||||
|
||||
@ddt.data(
|
||||
[
|
||||
|
|
|
@ -576,7 +576,7 @@ class IBMStorageVolumeDriverTest(test.TestCase):
|
|||
|
||||
self.driver.create_volume(volume)
|
||||
ret = self.driver.retype(ctxt, volume, new_type, diff, host)
|
||||
self.assertTrue(ret)
|
||||
self.assertTrue(bool(ret))
|
||||
self.assertEqual('1', volume['easytier'])
|
||||
|
||||
def test_retype_fail_on_exception(self):
|
||||
|
|
|
@ -913,7 +913,7 @@ class NetAppBlockStorageLibraryTestCase(test.TestCase):
|
|||
self.library.zapi_client.destroy_lun.assert_called_once_with(fake.PATH)
|
||||
block_base.LOG.error.assert_not_called()
|
||||
block_base.LOG.warning.assert_called_once()
|
||||
self.assertFalse(self.library.lun_table)
|
||||
self.assertEqual({}, self.library.lun_table)
|
||||
|
||||
@mock.patch.object(block_base, 'LOG', mock.Mock())
|
||||
def test_delete_lun_client_exception(self):
|
||||
|
|
|
@ -1066,7 +1066,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
|
|||
|
||||
client.RestClient._init_features(self.my_client)
|
||||
|
||||
self.assertTrue(self.my_client.features.AUTOSUPPORT)
|
||||
self.assertTrue(bool(self.my_client.features.AUTOSUPPORT))
|
||||
|
||||
@ddt.data('00.00.00.00', '01.52.9000.2', '01.52.9001.2', '01.51.9000.3',
|
||||
'01.51.9001.3', '01.51.9010.5', '0.53.9000.3', '0.53.9001.4')
|
||||
|
@ -1078,7 +1078,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
|
|||
|
||||
client.RestClient._init_features(self.my_client)
|
||||
|
||||
self.assertFalse(self.my_client.features.CHAP_AUTHENTICATION)
|
||||
self.assertFalse(bool(self.my_client.features.CHAP_AUTHENTICATION))
|
||||
|
||||
@ddt.data('01.53.9000.15', '01.53.9000.16', '01.53.8999.15',
|
||||
'01.54.8999.16', '01.54.9010.15', '01.54.9090.15',
|
||||
|
@ -1091,7 +1091,7 @@ class NetAppEseriesClientDriverTestCase(test.TestCase):
|
|||
|
||||
client.RestClient._init_features(self.my_client)
|
||||
|
||||
self.assertTrue(self.my_client.features.CHAP_AUTHENTICATION)
|
||||
self.assertTrue(bool(self.my_client.features.CHAP_AUTHENTICATION))
|
||||
|
||||
@ddt.data('00.00.00.00', '01.52.9000.1', '01.52.9001.2', '00.53.9001.3',
|
||||
'01.53.9090.1', '1.53.9010.14', '0.53.9011.15')
|
||||
|
@ -1206,7 +1206,7 @@ class TestWebserviceClientTestCase(test.TestCase):
|
|||
|
||||
self.assertRaises(exception.NetAppDriverException,
|
||||
self.webclient.invoke_service)
|
||||
self.assertTrue(self.mock_log.exception.find(log_error))
|
||||
self.assertTrue(bool(self.mock_log.exception.find(log_error)))
|
||||
|
||||
def test_invoke_service(self):
|
||||
"""Tests if invoke_service evaluates the right response"""
|
||||
|
|
|
@ -150,7 +150,7 @@ class NetAppESeriesDriverTestCase(object):
|
|||
|
||||
self.library._client.list_storage_system = mock.Mock(wraps=list_system)
|
||||
result = self.library._check_storage_system()
|
||||
self.assertTrue(result)
|
||||
self.assertTrue(bool(result))
|
||||
|
||||
def test_create_destroy(self):
|
||||
self.mock_object(client.RestClient, 'delete_volume',
|
||||
|
|
|
@ -1378,7 +1378,7 @@ class NetAppEseriesLibraryMultiAttachTestCase(test.TestCase):
|
|||
self.library.do_setup(mock.Mock())
|
||||
|
||||
self.assertTrue(mock_check_flags.called)
|
||||
self.assertFalse(mock_create.call_count)
|
||||
self.assertEqual(0, mock_create.call_count)
|
||||
|
||||
def test_do_setup_host_group_does_not_exist(self):
|
||||
mock_check_flags = self.mock_object(na_utils, 'check_flags')
|
||||
|
@ -1394,7 +1394,7 @@ class NetAppEseriesLibraryMultiAttachTestCase(test.TestCase):
|
|||
self.library.do_setup(mock.Mock())
|
||||
|
||||
self.assertTrue(mock_check_flags.called)
|
||||
self.assertTrue(mock_get_host_group.call_count)
|
||||
self.assertLess(0, mock_get_host_group.call_count)
|
||||
|
||||
def test_create_volume(self):
|
||||
self.library._client.create_volume = mock.Mock(
|
||||
|
@ -1403,7 +1403,7 @@ class NetAppEseriesLibraryMultiAttachTestCase(test.TestCase):
|
|||
'_update_consistency_group_members')
|
||||
|
||||
self.library.create_volume(get_fake_volume())
|
||||
self.assertTrue(self.library._client.create_volume.call_count)
|
||||
self.assertLess(0, self.library._client.create_volume.call_count)
|
||||
|
||||
update_members.assert_not_called()
|
||||
|
||||
|
@ -1460,7 +1460,7 @@ class NetAppEseriesLibraryMultiAttachTestCase(test.TestCase):
|
|||
self.assertRaises(exception.NetAppDriverException,
|
||||
self.library.create_volume,
|
||||
get_fake_volume())
|
||||
self.assertFalse(self.library._client.create_volume.call_count)
|
||||
self.assertEqual(0, self.library._client.create_volume.call_count)
|
||||
|
||||
@ddt.data(0, 1, 2)
|
||||
def test_create_snapshot(self, group_count):
|
||||
|
@ -2536,7 +2536,7 @@ class NetAppEseriesISCSICHAPAuthenticationTestCase(test.TestCase):
|
|||
eseries_fake.FAKE_TARGET_IQN)
|
||||
|
||||
self.assertTrue(mock_invoke_generate_random_secret.called)
|
||||
self.assertTrue(mock_log.warning.find(warn_msg))
|
||||
self.assertTrue(bool(mock_log.warning.find(warn_msg)))
|
||||
mock_invoke_set_chap_authentication.assert_called_with(
|
||||
*eseries_fake.FAKE_CLIENT_CHAP_PARAMETERS)
|
||||
self.assertEqual(eseries_fake.FAKE_CHAP_USERNAME, username)
|
||||
|
|
|
@ -832,7 +832,7 @@ class BitSetTestCase(test.TestCase):
|
|||
def test_is_set(self):
|
||||
bitset = na_utils.BitSet(1 << 16)
|
||||
|
||||
self.assertTrue(bitset.is_set(16))
|
||||
self.assertTrue(bool(bitset.is_set(16)))
|
||||
|
||||
def test_not_equal(self):
|
||||
set1 = na_utils.BitSet(1 << 15)
|
||||
|
|
|
@ -725,7 +725,7 @@ class TestProphetStorDPLDriver(test.TestCase):
|
|||
exception.VolumeBackendAPIException,
|
||||
self.dpldriver.terminate_connection,
|
||||
volume=DATA_IN_VOLUME, connector=DATA_IN_CONNECTOR)
|
||||
self.assertTrue(
|
||||
self.assertIsNotNone(
|
||||
re.match(r".*Flexvisor failed", ex.msg))
|
||||
|
||||
def test_get_pool_info(self):
|
||||
|
|
|
@ -623,12 +623,12 @@ class PureBaseVolumeDriverTestCase(PureBaseSharedDriverTestCase):
|
|||
self.assertTrue(result.startswith("really-long-string-that-"))
|
||||
self.assertTrue(result.endswith("-cinder"))
|
||||
self.assertEqual(63, len(result))
|
||||
self.assertTrue(pure.GENERATED_NAME.match(result))
|
||||
self.assertTrue(bool(pure.GENERATED_NAME.match(result)))
|
||||
result = self.driver._generate_purity_host_name("!@#$%^-invalid&*")
|
||||
self.assertTrue(result.startswith("invalid---"))
|
||||
self.assertTrue(result.endswith("-cinder"))
|
||||
self.assertEqual(49, len(result))
|
||||
self.assertTrue(pure.GENERATED_NAME.match(result))
|
||||
self.assertIsNotNone(pure.GENERATED_NAME.match(result))
|
||||
|
||||
@mock.patch(BASE_DRIVER_OBJ + "._add_to_group_if_needed")
|
||||
@mock.patch(BASE_DRIVER_OBJ + "._is_volume_replicated_type", autospec=True)
|
||||
|
@ -2402,7 +2402,7 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
|
|||
actual = self.driver._connect(VOLUME, ISCSI_CONNECTOR)
|
||||
self.assertEqual(expected, actual)
|
||||
self.assertTrue(self.array.connect_host.called)
|
||||
self.assertTrue(self.array.list_volume_private_connections)
|
||||
self.assertTrue(bool(self.array.list_volume_private_connections))
|
||||
|
||||
@mock.patch(ISCSI_DRIVER_OBJ + "._get_host", autospec=True)
|
||||
def test_connect_already_connected_list_hosts_empty(self, mock_host):
|
||||
|
@ -2416,7 +2416,7 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
|
|||
self.assertRaises(exception.PureDriverException, self.driver._connect,
|
||||
VOLUME, ISCSI_CONNECTOR)
|
||||
self.assertTrue(self.array.connect_host.called)
|
||||
self.assertTrue(self.array.list_volume_private_connections)
|
||||
self.assertTrue(bool(self.array.list_volume_private_connections))
|
||||
|
||||
@mock.patch(ISCSI_DRIVER_OBJ + "._get_host", autospec=True)
|
||||
def test_connect_already_connected_list_hosts_exception(self, mock_host):
|
||||
|
@ -2433,7 +2433,7 @@ class PureISCSIDriverTestCase(PureDriverTestCase):
|
|||
self.driver._connect, VOLUME,
|
||||
ISCSI_CONNECTOR)
|
||||
self.assertTrue(self.array.connect_host.called)
|
||||
self.assertTrue(self.array.list_volume_private_connections)
|
||||
self.assertTrue(bool(self.array.list_volume_private_connections))
|
||||
|
||||
@mock.patch(ISCSI_DRIVER_OBJ + "._get_chap_secret_from_init_data")
|
||||
@mock.patch(ISCSI_DRIVER_OBJ + "._get_host", autospec=True)
|
||||
|
@ -2607,7 +2607,7 @@ class PureFCDriverTestCase(PureDriverTestCase):
|
|||
actual = self.driver._connect(VOLUME, FC_CONNECTOR)
|
||||
self.assertEqual(expected, actual)
|
||||
self.assertTrue(self.array.connect_host.called)
|
||||
self.assertTrue(self.array.list_volume_private_connections)
|
||||
self.assertTrue(bool(self.array.list_volume_private_connections))
|
||||
|
||||
@mock.patch(FC_DRIVER_OBJ + "._get_host", autospec=True)
|
||||
def test_connect_already_connected_list_hosts_empty(self, mock_host):
|
||||
|
@ -2621,7 +2621,7 @@ class PureFCDriverTestCase(PureDriverTestCase):
|
|||
self.assertRaises(exception.PureDriverException, self.driver._connect,
|
||||
VOLUME, FC_CONNECTOR)
|
||||
self.assertTrue(self.array.connect_host.called)
|
||||
self.assertTrue(self.array.list_volume_private_connections)
|
||||
self.assertTrue(bool(self.array.list_volume_private_connections))
|
||||
|
||||
@mock.patch(FC_DRIVER_OBJ + "._get_host", autospec=True)
|
||||
def test_connect_already_connected_list_hosts_exception(self, mock_host):
|
||||
|
@ -2637,7 +2637,7 @@ class PureFCDriverTestCase(PureDriverTestCase):
|
|||
self.assertRaises(self.purestorage_module.PureHTTPError,
|
||||
self.driver._connect, VOLUME, FC_CONNECTOR)
|
||||
self.assertTrue(self.array.connect_host.called)
|
||||
self.assertTrue(self.array.list_volume_private_connections)
|
||||
self.assertTrue(bool(self.array.list_volume_private_connections))
|
||||
|
||||
@mock.patch(FC_DRIVER_OBJ + "._get_host", autospec=True)
|
||||
def test_connect_wwn_already_in_use(self, mock_host):
|
||||
|
|
|
@ -1020,7 +1020,7 @@ class VMwareVcVmdkDriverTestCase(test.TestCase):
|
|||
|
||||
def test_in_use_with_available_volume(self):
|
||||
volume = self._create_volume_dict()
|
||||
self.assertFalse(self._driver._in_use(volume))
|
||||
self.assertIsNone(self._driver._in_use(volume))
|
||||
|
||||
@mock.patch.object(VMDK_DRIVER, '_in_use', return_value=True)
|
||||
def test_retype_with_in_use_volume(self, in_use):
|
||||
|
|
|
@ -434,7 +434,7 @@ class ImageVolumeTestCases(base.BaseVolumeTestCase):
|
|||
mock_commit, mock_rollback):
|
||||
vol = tests_utils.create_volume(self.context, **self.volume_params)
|
||||
with mock.patch.object(objects, 'Volume', side_effect=ValueError):
|
||||
self.assertFalse(self.volume._clone_image_volume(
|
||||
self.assertIsNone(self.volume._clone_image_volume(
|
||||
self.context, vol, {'id': fake.VOLUME_ID}))
|
||||
|
||||
mock_reserve.assert_called_once_with(self.context, volumes=1,
|
||||
|
|
|
@ -342,7 +342,7 @@ class SnapshotTestCase(base.BaseVolumeTestCase):
|
|||
# get volume's volume_glance_metadata
|
||||
ctxt = context.get_admin_context()
|
||||
vol_glance_meta = db.volume_glance_metadata_get(ctxt, volume_id)
|
||||
self.assertTrue(vol_glance_meta)
|
||||
self.assertTrue(bool(vol_glance_meta))
|
||||
|
||||
# create snapshot from bootable volume
|
||||
snap = create_snapshot(volume_id)
|
||||
|
@ -351,7 +351,7 @@ class SnapshotTestCase(base.BaseVolumeTestCase):
|
|||
# get snapshot's volume_glance_metadata
|
||||
snap_glance_meta = db.volume_snapshot_glance_metadata_get(
|
||||
ctxt, snap.id)
|
||||
self.assertTrue(snap_glance_meta)
|
||||
self.assertTrue(bool(snap_glance_meta))
|
||||
|
||||
# ensure that volume's glance metadata is copied
|
||||
# to snapshot's glance metadata
|
||||
|
@ -387,7 +387,7 @@ class SnapshotTestCase(base.BaseVolumeTestCase):
|
|||
# get volume's volume_glance_metadata
|
||||
ctxt = context.get_admin_context()
|
||||
vol_glance_meta = db.volume_glance_metadata_get(ctxt, volume_id)
|
||||
self.assertTrue(vol_glance_meta)
|
||||
self.assertTrue(bool(vol_glance_meta))
|
||||
snap = create_snapshot(volume_id)
|
||||
self.assertEqual(36, len(snap.id)) # dynamically-generated UUID
|
||||
self.assertEqual('creating', snap.status)
|
||||
|
|
Loading…
Reference in New Issue