don't reuse servers in test_server_actions
One of the most problematic parts of Tempest failures has been
the test_server_actions test, which tries to optimize what it's
doing by reusing a functional server for subsequent tests.
The problem is, it's not clear that server is always functional.
It would be much better to take the time hit and just use a clean
server on every go if this increases reliability.
Change-Id: I78958250d85f2e6b32d912283936b2ee74c38feb
diff --git a/tempest/api/compute/servers/test_server_actions.py b/tempest/api/compute/servers/test_server_actions.py
index 80e6008..4637561 100644
--- a/tempest/api/compute/servers/test_server_actions.py
+++ b/tempest/api/compute/servers/test_server_actions.py
@@ -32,28 +32,16 @@
run_ssh = CONF.compute.run_ssh
def setUp(self):
- # NOTE(afazekas): Normally we use the same server with all test cases,
- # but if it has an issue, we build a new one
super(ServerActionsTestJSON, self).setUp()
- # Check if the server is in a clean state after test
- try:
- self.client.wait_for_server_status(self.server_id, 'ACTIVE')
- except Exception:
- # Rebuild server if something happened to it during a test
- self.__class__.server_id = self.rebuild_server(self.server_id)
-
- def tearDown(self):
- _, server = self.client.get_server(self.server_id)
- self.assertEqual(self.image_ref, server['image']['id'])
- self.server_check_teardown()
- super(ServerActionsTestJSON, self).tearDown()
+ resp, server = self.create_test_server(wait_until='ACTIVE')
+ self.addCleanup(self.client.delete_server, server['id'])
+ self.server_id = server['id']
@classmethod
def setUpClass(cls):
cls.prepare_instance_network()
super(ServerActionsTestJSON, cls).setUpClass()
cls.client = cls.servers_client
- cls.server_id = cls.rebuild_server(None)
@testtools.skipUnless(CONF.compute_feature_enabled.change_password,
'Change password not available.')
diff --git a/tempest/api/compute/v3/servers/test_server_actions.py b/tempest/api/compute/v3/servers/test_server_actions.py
index 721fe42..5840360 100644
--- a/tempest/api/compute/v3/servers/test_server_actions.py
+++ b/tempest/api/compute/v3/servers/test_server_actions.py
@@ -30,15 +30,10 @@
run_ssh = CONF.compute.run_ssh
def setUp(self):
- # NOTE(afazekas): Normally we use the same server with all test cases,
- # but if it has an issue, we build a new one
super(ServerActionsV3Test, self).setUp()
- # Check if the server is in a clean state after test
- try:
- self.client.wait_for_server_status(self.server_id, 'ACTIVE')
- except Exception:
- # Rebuild server if something happened to it during a test
- self.__class__.server_id = self.rebuild_server(self.server_id)
+ resp, server = self.create_test_server(wait_until='ACTIVE')
+ self.addCleanup(self.client.delete_server, server['id'])
+ self.server_id = server['id']
def tearDown(self):
_, server = self.client.get_server(self.server_id)
@@ -51,7 +46,6 @@
cls.prepare_instance_network()
super(ServerActionsV3Test, cls).setUpClass()
cls.client = cls.servers_client
- cls.server_id = cls.rebuild_server(None)
@testtools.skipUnless(CONF.compute_feature_enabled.change_password,
'Change password not available.')