Skip volume snapshot tests if feature is not enabled
Not all cinder volume backends support volume snapshot. For instance,
the default NFS backend doesn't. This patch adds a new entry to
CONF.volume_feature_enabled to add the possibility to skip volume
snapshot tests.
Change-Id: I40ce17924bbe4eb6f1c941df974bfa832ec2a999
diff --git a/etc/tempest.conf.sample b/etc/tempest.conf.sample
index 761a077..87f08f4 100644
--- a/etc/tempest.conf.sample
+++ b/etc/tempest.conf.sample
@@ -954,6 +954,9 @@
# Runs Cinder volumes backup test (boolean value)
#backup=true
+# Runs Cinder volume snapshot test (boolean value)
+#snapshot=true
+
# A list of enabled volume extensions with a special entry all
# which indicates every extension is enabled (list value)
#api_extensions=all
diff --git a/tempest/api/volume/test_volumes_snapshots.py b/tempest/api/volume/test_volumes_snapshots.py
index 2ce3a4f..6294cd9 100644
--- a/tempest/api/volume/test_volumes_snapshots.py
+++ b/tempest/api/volume/test_volumes_snapshots.py
@@ -29,6 +29,9 @@
super(VolumesSnapshotTest, cls).setUpClass()
cls.volume_origin = cls.create_volume()
+ if not CONF.volume_feature_enabled.snapshot:
+ raise cls.skipException("Cinder volume snapshots are disabled")
+
@classmethod
def tearDownClass(cls):
super(VolumesSnapshotTest, cls).tearDownClass()
diff --git a/tempest/api/volume/test_volumes_snapshots_negative.py b/tempest/api/volume/test_volumes_snapshots_negative.py
index 9e47c03..61aa307 100644
--- a/tempest/api/volume/test_volumes_snapshots_negative.py
+++ b/tempest/api/volume/test_volumes_snapshots_negative.py
@@ -14,13 +14,23 @@
from tempest.api.volume import base
from tempest.common.utils import data_utils
+from tempest import config
from tempest import exceptions
from tempest import test
+CONF = config.CONF
+
class VolumesSnapshotNegativeTest(base.BaseVolumeV1Test):
_interface = "json"
+ @classmethod
+ def setUpClass(cls):
+ super(VolumesSnapshotNegativeTest, cls).setUpClass()
+
+ if not CONF.volume_feature_enabled.snapshot:
+ raise cls.skipException("Cinder volume snapshots are disabled")
+
@test.attr(type=['negative', 'gate'])
def test_create_snapshot_with_nonexistent_volume_id(self):
# Create a snapshot with nonexistent volume id
diff --git a/tempest/cli/simple_read_only/test_cinder.py b/tempest/cli/simple_read_only/test_cinder.py
index afbd732..723333b 100644
--- a/tempest/cli/simple_read_only/test_cinder.py
+++ b/tempest/cli/simple_read_only/test_cinder.py
@@ -16,6 +16,7 @@
import logging
import re
import subprocess
+import testtools
import tempest.cli
from tempest import config
@@ -86,6 +87,8 @@
def test_cinder_rate_limits(self):
self.cinder('rate-limits')
+ @testtools.skipUnless(CONF.volume_feature_enabled.snapshot,
+ 'Volume snapshot not available.')
def test_cinder_snapshot_list(self):
self.cinder('snapshot-list')
diff --git a/tempest/config.py b/tempest/config.py
index b0945bb..be2a137 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -453,6 +453,9 @@
cfg.BoolOpt('backup',
default=True,
help='Runs Cinder volumes backup test'),
+ cfg.BoolOpt('snapshot',
+ default=True,
+ help='Runs Cinder volume snapshot test'),
cfg.ListOpt('api_extensions',
default=['all'],
help='A list of enabled volume extensions with a special '
diff --git a/tempest/scenario/test_stamp_pattern.py b/tempest/scenario/test_stamp_pattern.py
index 128ec17..5235871 100644
--- a/tempest/scenario/test_stamp_pattern.py
+++ b/tempest/scenario/test_stamp_pattern.py
@@ -50,6 +50,13 @@
14. Check the existence of a file which created at 6. in volume2
"""
+ @classmethod
+ def setUpClass(cls):
+ super(TestStampPattern, cls).setUpClass()
+
+ if not CONF.volume_feature_enabled.snapshot:
+ raise cls.skipException("Cinder volume snapshots are disabled")
+
def _wait_for_volume_snapshot_status(self, volume_snapshot, status):
self.status_timeout(self.volume_client.volume_snapshots,
volume_snapshot.id, status)
diff --git a/tempest/scenario/test_volume_boot_pattern.py b/tempest/scenario/test_volume_boot_pattern.py
index e89ea70..faca31f 100644
--- a/tempest/scenario/test_volume_boot_pattern.py
+++ b/tempest/scenario/test_volume_boot_pattern.py
@@ -35,6 +35,12 @@
* Boot an additional instance from the new snapshot based volume
* Check written content in the instance booted from snapshot
"""
+ @classmethod
+ def setUpClass(cls):
+ super(TestVolumeBootPattern, cls).setUpClass()
+
+ if not CONF.volume_feature_enabled.snapshot:
+ raise cls.skipException("Cinder volume snapshots are disabled")
def _create_volume_from_image(self):
img_uuid = CONF.compute.image_ref