diff --git a/cinder_tempest_plugin/api/volume/test_volume_dependency.py b/cinder_tempest_plugin/api/volume/test_volume_dependency.py index 96a3c83..b204e84 100644 --- a/cinder_tempest_plugin/api/volume/test_volume_dependency.py +++ b/cinder_tempest_plugin/api/volume/test_volume_dependency.py @@ -63,3 +63,59 @@ class VolumeDependencyTests(base.BaseVolumeTest): snapshot_source_volume['id']) self.volumes_client.delete_volume(source_volume['id']) self.volumes_client.wait_for_resource_deletion(source_volume['id']) + + def _delete_vol_and_wait(self, vol_id): + self.volumes_client.delete_volume(vol_id) + + self.volumes_client.wait_for_resource_deletion(vol_id) + + def _delete_snap_and_wait(self, snap_id): + self.snapshots_client.delete_snapshot(snap_id) + + self.snapshots_client.wait_for_resource_deletion(snap_id) + + @decorators.idempotent_id('f8278e5c-50ff-4a1d-8670-3ca0866d411a') + def test_delete_dep_chain(self): + """Test a complex chain of volume and snapshot dependency deletion.""" + volume_1 = self.create_volume()['id'] + snapshot_of_vol_1 = self.create_snapshot(volume_1)['id'] + + volume_2_args = {'snapshot_id': snapshot_of_vol_1} + volume_2 = self.create_volume(**volume_2_args)['id'] + + snapshot_of_vol_2 = self.create_snapshot(volume_2)['id'] + + volume_3_args = {'snapshot_id': snapshot_of_vol_2} + volume_3 = self.create_volume(**volume_3_args)['id'] + + volume_4_args = {'source_volid': volume_3} + volume_4 = self.create_volume(**volume_4_args)['id'] + + self._delete_snap_and_wait(snapshot_of_vol_1) + self._delete_snap_and_wait(snapshot_of_vol_2) + + self._delete_vol_and_wait(volume_3) + self._delete_vol_and_wait(volume_1) + self._delete_vol_and_wait(volume_2) + self._delete_vol_and_wait(volume_4) + + @decorators.idempotent_id('63447ef8-e667-4796-ba66-1b9b883af1f1') + def test_delete_dep_chain_2(self): + """Test a different chain of volume/snapshot dependency deletion.""" + volume_1 = self.create_volume()['id'] + snapshot_of_vol_1 = self.create_snapshot(volume_1)['id'] + + volume_2_args = {'snapshot_id': snapshot_of_vol_1} + volume_2 = self.create_volume(**volume_2_args)['id'] + + snapshot_of_vol_2 = self.create_snapshot(volume_2)['id'] + + volume_3_args = {'snapshot_id': snapshot_of_vol_2} + volume_3 = self.create_volume(**volume_3_args)['id'] + + self._delete_snap_and_wait(snapshot_of_vol_1) + self._delete_snap_and_wait(snapshot_of_vol_2) + + self._delete_vol_and_wait(volume_1) + self._delete_vol_and_wait(volume_2) + self._delete_vol_and_wait(volume_3)