Add snapshot deletion test
This adds a new test to ensure that snapshots
can be deleted when a volume is cloned from them.
This test runs when the "volume_image_dep_tests" option
is enabled.
Depends-On: I8ffb0c1130b30a19f336a98a9efef05905786af2
Change-Id: I18827bba3bc2730cde37696292b00a286bc53ef3
diff --git a/cinder_tempest_plugin/scenario/test_snapshots.py b/cinder_tempest_plugin/scenario/test_snapshots.py
index f376954..02cd6bd 100644
--- a/cinder_tempest_plugin/scenario/test_snapshots.py
+++ b/cinder_tempest_plugin/scenario/test_snapshots.py
@@ -14,10 +14,16 @@
# under the License.
from tempest.common import utils
+from tempest.common import waiters
+from tempest import config
from tempest.lib import decorators
+import testtools
+
from cinder_tempest_plugin.scenario import manager
+CONF = config.CONF
+
class SnapshotDataIntegrityTests(manager.ScenarioTest):
@@ -121,3 +127,33 @@
self.assertEqual(count_snap, i)
self.assertEqual(file_map[i], md5_file)
+
+
+class SnapshotDependencyTests(manager.ScenarioTest):
+ @testtools.skipUnless(CONF.volume_feature_enabled.volume_image_dep_tests,
+ 'dependency tests not enabled')
+ @decorators.idempotent_id('e7028f52-f6d4-479c-8809-6f6cf96cfe0f')
+ @utils.services('image', 'volume')
+ def test_snapshot_removal(self):
+ volume_1 = self.create_volume()
+
+ snapshot_1 = self.create_volume_snapshot(volume_1['id'], force=True)
+ waiters.wait_for_volume_resource_status(
+ self.snapshots_client, snapshot_1['id'], 'available')
+
+ clone_kwargs = {'snapshot_id': snapshot_1['id'],
+ 'size': volume_1['size']}
+ volume_2 = self.volumes_client.create_volume(**clone_kwargs)['volume']
+
+ waiters.wait_for_volume_resource_status(
+ self.volumes_client, volume_2['id'], 'available')
+ volume_2 = self.volumes_client.show_volume(volume_2['id'])['volume']
+
+ self.snapshots_client.delete_snapshot(snapshot_1['id'])
+ self.snapshots_client.wait_for_resource_deletion(snapshot_1['id'])
+
+ self.volumes_client.delete_volume(volume_1['id'])
+ self.volumes_client.wait_for_resource_deletion(volume_1['id'])
+
+ self.volumes_client.delete_volume(volume_2['id'])
+ self.volumes_client.wait_for_resource_deletion(volume_2['id'])