Fix resource_setup order in scenarios
As resource_setup() document says, we should check skip condition before
resource_setup. However some functions in scenarios setup resources
before skip checks. We should avoid to setup unnecessary resources as
possible. This commit fixes the order.
Change-Id: Id0529fc80f2b80f028fd078140fe5fd7459e9309
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 383a28d..7f591ba 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -475,9 +475,9 @@
@classmethod
def resource_setup(cls):
+ cls.check_preconditions()
super(NetworkScenarioTest, cls).resource_setup()
cls.tenant_id = cls.manager.identity_client.tenant_id
- cls.check_preconditions()
def _create_network(self, client=None, tenant_id=None,
namestart='network-smoke-'):
@@ -1016,12 +1016,11 @@
class BaremetalScenarioTest(ScenarioTest):
@classmethod
def resource_setup(cls):
- super(BaremetalScenarioTest, cls).resource_setup()
-
if (not CONF.service_available.ironic or
not CONF.baremetal.driver_enabled):
msg = 'Ironic not available or Ironic compute driver not enabled'
raise cls.skipException(msg)
+ super(BaremetalScenarioTest, cls).resource_setup()
# use an admin client manager for baremetal client
manager = clients.Manager(
@@ -1195,9 +1194,9 @@
@classmethod
def resource_setup(cls):
- super(OrchestrationScenarioTest, cls).resource_setup()
if not CONF.service_available.heat:
raise cls.skipException("Heat support is required")
+ super(OrchestrationScenarioTest, cls).resource_setup()
@classmethod
def credentials(cls):
@@ -1240,12 +1239,12 @@
@classmethod
def resource_setup(cls):
- cls.set_network_resources()
- super(SwiftScenarioTest, cls).resource_setup()
if not CONF.service_available.swift:
skip_msg = ("%s skipped as swift is not available" %
cls.__name__)
raise cls.skipException(skip_msg)
+ cls.set_network_resources()
+ super(SwiftScenarioTest, cls).resource_setup()
# Clients for Swift
cls.account_client = cls.manager.account_client
cls.container_client = cls.manager.container_client
diff --git a/tempest/scenario/test_dashboard_basic_ops.py b/tempest/scenario/test_dashboard_basic_ops.py
index f218fb2..875a1d9 100644
--- a/tempest/scenario/test_dashboard_basic_ops.py
+++ b/tempest/scenario/test_dashboard_basic_ops.py
@@ -35,11 +35,10 @@
@classmethod
def resource_setup(cls):
- cls.set_network_resources()
- super(TestDashboardBasicOps, cls).resource_setup()
-
if not CONF.service_available.horizon:
raise cls.skipException("Horizon support is required")
+ cls.set_network_resources()
+ super(TestDashboardBasicOps, cls).resource_setup()
def check_login_page(self):
response = urllib2.urlopen(CONF.dashboard.dashboard_url)
diff --git a/tempest/scenario/test_network_basic_ops.py b/tempest/scenario/test_network_basic_ops.py
index 5d75b64..ec7b0ed 100644
--- a/tempest/scenario/test_network_basic_ops.py
+++ b/tempest/scenario/test_network_basic_ops.py
@@ -89,13 +89,13 @@
@classmethod
def resource_setup(cls):
- # Create no network resources for these tests.
- cls.set_network_resources()
- super(TestNetworkBasicOps, cls).resource_setup()
for ext in ['router', 'security-group']:
if not test.is_extension_enabled(ext, 'network'):
msg = "%s extension not enabled." % ext
raise cls.skipException(msg)
+ # Create no network resources for these tests.
+ cls.set_network_resources()
+ super(TestNetworkBasicOps, cls).resource_setup()
def setUp(self):
super(TestNetworkBasicOps, self).setUp()
diff --git a/tempest/scenario/test_server_advanced_ops.py b/tempest/scenario/test_server_advanced_ops.py
index c53e22b..d10fcce 100644
--- a/tempest/scenario/test_server_advanced_ops.py
+++ b/tempest/scenario/test_server_advanced_ops.py
@@ -36,12 +36,11 @@
@classmethod
def resource_setup(cls):
- cls.set_network_resources()
- super(TestServerAdvancedOps, cls).resource_setup()
-
if CONF.compute.flavor_ref_alt == CONF.compute.flavor_ref:
msg = "Skipping test - flavor_ref and flavor_ref_alt are identical"
raise cls.skipException(msg)
+ cls.set_network_resources()
+ super(TestServerAdvancedOps, cls).resource_setup()
@testtools.skipUnless(CONF.compute_feature_enabled.resize,
'Resize is not available.')
diff --git a/tempest/scenario/test_stamp_pattern.py b/tempest/scenario/test_stamp_pattern.py
index 8ea2814..9ec899b 100644
--- a/tempest/scenario/test_stamp_pattern.py
+++ b/tempest/scenario/test_stamp_pattern.py
@@ -52,10 +52,9 @@
@classmethod
def resource_setup(cls):
- super(TestStampPattern, cls).resource_setup()
-
if not CONF.volume_feature_enabled.snapshot:
raise cls.skipException("Cinder volume snapshots are disabled")
+ super(TestStampPattern, cls).resource_setup()
def _wait_for_volume_snapshot_status(self, volume_snapshot, status):
self.snapshots_client.wait_for_snapshot_status(volume_snapshot['id'],
diff --git a/tempest/scenario/test_volume_boot_pattern.py b/tempest/scenario/test_volume_boot_pattern.py
index a20db5c..62876c4 100644
--- a/tempest/scenario/test_volume_boot_pattern.py
+++ b/tempest/scenario/test_volume_boot_pattern.py
@@ -37,10 +37,9 @@
"""
@classmethod
def resource_setup(cls):
- super(TestVolumeBootPattern, cls).resource_setup()
-
if not CONF.volume_feature_enabled.snapshot:
raise cls.skipException("Cinder volume snapshots are disabled")
+ super(TestVolumeBootPattern, cls).resource_setup()
def _create_volume_from_image(self):
img_uuid = CONF.compute.image_ref