Merge "Add unit test zone migration with_attached_volume"

This commit is contained in:
Zuul
2025-06-13 12:17:52 +00:00
committed by Gerrit Code Review

View File

@@ -79,6 +79,13 @@ class TestZoneMigration(TestBaseStrategy):
self.m_priority = p_priority.start()
self.addCleanup(p_priority.stop)
p_with_attached_volume = mock.patch.object(
strategies.ZoneMigration, "with_attached_volume",
new_callable=mock.PropertyMock
)
self.m_with_attached_volume = p_with_attached_volume.start()
self.addCleanup(p_with_attached_volume.stop)
model = self.fake_c_cluster.generate_scenario_1()
self.m_c_model.return_value = model
@@ -99,6 +106,7 @@ class TestZoneMigration(TestBaseStrategy):
{"src_pool": "src2@back1#pool1", "dst_pool": "dst2@back2#pool1",
"src_type": "type2", "dst_type": "type3"}
]
self.m_with_attached_volume.return_value = False
self.strategy = strategies.ZoneMigration(
config=mock.Mock())
@@ -154,6 +162,7 @@ class TestZoneMigration(TestBaseStrategy):
setattr(volume, 'size', kwargs.get('size', '1'))
setattr(volume, 'created_at',
kwargs.get('created_at', '1977-01-01T00:00:00'))
setattr(volume, 'attachments', kwargs.get('attachments', []))
volume.volume_type = kwargs.get('volume_type', 'type1')
return volume
@@ -322,6 +331,39 @@ class TestZoneMigration(TestBaseStrategy):
# followup
self.assertIsNone(migration_params['destination_node'])
def test_execute_migrate_volume_no_compute_nodes(self):
instance_on_src1 = self.fake_instance(
host="src1",
id="INSTANCE_1",
name="INSTANCE_1")
vol_attach = [{"server_id": instance_on_src1.id}]
volume_on_src1 = self.fake_volume(host="src1@back1#pool1",
id=volume_uuid_mapping["volume_1"],
name="volume_1",
status="in-use",
attachments=vol_attach)
self.m_c_helper.get_volume_list.return_value = [
volume_on_src1,
]
self.m_migrate_storage_pools.return_value = [
{"src_pool": "src1@back1#pool1",
"dst_pool": "dst1@back1#pool1",
"src_type": "type1", "dst_type": "type1"},
]
self.m_migrate_compute_nodes.return_value = None
self.m_n_helper.get_instance_list.return_value = [
instance_on_src1,
]
self.m_with_attached_volume.return_value = True
# check that the solution contains one 'swap' volume migration and one
# instance migration, once the bug is fixed
# solution = self.strategy.execute()
# temporarily catch the error to demonstrate it
exception = self.assertRaises(TypeError, self.strategy.execute)
self.assertEqual(str(exception), "'NoneType' object is not iterable")
def test_execute_retype_volume(self):
volume_on_src2 = self.fake_volume(host="src2@back1#pool1",
id=volume_uuid_mapping["volume_2"],