Replace time.sleep(10) with service forced_down in tests
The server group functional tests are doing time.sleep(10) in order to make sure a stopped compute service is considered "down" by the nova compute API. Instead of sleeping, we can set the service as "forced_down" to get the desired "down" compute service status and avoid unnecessary delays in these tests. Unnecessary service start() calls are also removed in this change. They appear at the end of tests and services are started during each test setUp() and killed during each test tearDown() via the ServiceFixture. Closes-Bug: #1783565 Change-Id: I74f64b68e4b33ee0f8c45fdc5f570c7e12e05d3b
This commit is contained in:
parent
ba48c2369f
commit
1c93ca82b8
|
@ -13,8 +13,6 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import time
|
||||
|
||||
import mock
|
||||
from oslo_config import cfg
|
||||
import six
|
||||
|
@ -51,10 +49,6 @@ class ServerGroupTestBase(test.TestCase,
|
|||
['ServerGroupAntiAffinityFilter',
|
||||
'ServerGroupAffinityFilter'])
|
||||
|
||||
# Override servicegroup parameters to make the tests run faster
|
||||
_service_down_time = 10
|
||||
_report_interval = 1
|
||||
|
||||
anti_affinity = {'name': 'fake-name-1', 'policies': ['anti-affinity']}
|
||||
affinity = {'name': 'fake-name-2', 'policies': ['affinity']}
|
||||
|
||||
|
@ -70,8 +64,6 @@ class ServerGroupTestBase(test.TestCase,
|
|||
self.flags(disk_allocation_ratio=9999.0)
|
||||
self.flags(weight_classes=self._get_weight_classes(),
|
||||
group='filter_scheduler')
|
||||
self.flags(service_down_time=self._service_down_time)
|
||||
self.flags(report_interval=self._report_interval)
|
||||
|
||||
self.useFixture(policy_fixture.RealPolicyFixture())
|
||||
self.useFixture(nova_fixtures.NeutronFixture(self))
|
||||
|
@ -408,16 +400,20 @@ class ServerGroupTestV21(ServerGroupTestBase):
|
|||
|
||||
return host
|
||||
|
||||
def _set_forced_down(self, service, forced_down):
|
||||
# Use microversion 2.53 for PUT /os-services/{service_id} force down.
|
||||
with utils.temporary_mutation(self.admin_api, microversion='2.53'):
|
||||
self.admin_api.put_service_force_down(service.service_ref.uuid,
|
||||
forced_down)
|
||||
|
||||
def test_evacuate_with_anti_affinity(self):
|
||||
created_group = self.api.post_server_groups(self.anti_affinity)
|
||||
servers = self._boot_servers_to_group(created_group)
|
||||
|
||||
host = self._get_compute_service_by_host_name(
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
host.stop()
|
||||
# Need to wait service_down_time amount of seconds to ensure
|
||||
# nova considers the host down
|
||||
time.sleep(self._service_down_time)
|
||||
# Set forced_down on the host to ensure nova considers the host down.
|
||||
self._set_forced_down(host, True)
|
||||
|
||||
# Start additional host to test evacuation
|
||||
self.start_service('compute', host='host3')
|
||||
|
@ -435,18 +431,14 @@ class ServerGroupTestV21(ServerGroupTestBase):
|
|||
self.assertNotEqual(evacuated_server['OS-EXT-SRV-ATTR:host'],
|
||||
servers[0]['OS-EXT-SRV-ATTR:host'])
|
||||
|
||||
host.start()
|
||||
|
||||
def test_evacuate_with_anti_affinity_no_valid_host(self):
|
||||
created_group = self.api.post_server_groups(self.anti_affinity)
|
||||
servers = self._boot_servers_to_group(created_group)
|
||||
|
||||
host = self._get_compute_service_by_host_name(
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
host.stop()
|
||||
# Need to wait service_down_time amount of seconds to ensure
|
||||
# nova considers the host down
|
||||
time.sleep(self._service_down_time)
|
||||
# Set forced_down on the host to ensure nova considers the host down.
|
||||
self._set_forced_down(host, True)
|
||||
|
||||
post = {'evacuate': {'onSharedStorage': False}}
|
||||
self.admin_api.post_server_action(servers[1]['id'], post)
|
||||
|
@ -459,18 +451,14 @@ class ServerGroupTestV21(ServerGroupTestBase):
|
|||
self.assertEqual(server_after_failed_evac['OS-EXT-SRV-ATTR:host'],
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
|
||||
host.start()
|
||||
|
||||
def test_evacuate_with_affinity_no_valid_host(self):
|
||||
created_group = self.api.post_server_groups(self.affinity)
|
||||
servers = self._boot_servers_to_group(created_group)
|
||||
|
||||
host = self._get_compute_service_by_host_name(
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
host.stop()
|
||||
# Need to wait service_down_time amount of seconds to ensure
|
||||
# nova considers the host down
|
||||
time.sleep(self._service_down_time)
|
||||
# Set forced_down on the host to ensure nova considers the host down.
|
||||
self._set_forced_down(host, True)
|
||||
|
||||
post = {'evacuate': {'onSharedStorage': False}}
|
||||
self.admin_api.post_server_action(servers[1]['id'], post)
|
||||
|
@ -483,8 +471,6 @@ class ServerGroupTestV21(ServerGroupTestBase):
|
|||
self.assertEqual(server_after_failed_evac['OS-EXT-SRV-ATTR:host'],
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
|
||||
host.start()
|
||||
|
||||
def test_soft_affinity_not_supported(self):
|
||||
ex = self.assertRaises(client.OpenStackApiException,
|
||||
self.api.post_server_groups,
|
||||
|
@ -610,10 +596,8 @@ class ServerGroupTestV215(ServerGroupTestV21):
|
|||
|
||||
host = self._get_compute_service_by_host_name(
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
host.stop()
|
||||
# Need to wait service_down_time amount of seconds to ensure
|
||||
# nova considers the host down
|
||||
time.sleep(self._service_down_time)
|
||||
# Set forced_down on the host to ensure nova considers the host down.
|
||||
self._set_forced_down(host, True)
|
||||
|
||||
# Start additional host to test evacuation
|
||||
compute3 = self.start_service('compute', host='host3')
|
||||
|
@ -632,7 +616,6 @@ class ServerGroupTestV215(ServerGroupTestV21):
|
|||
servers[0]['OS-EXT-SRV-ATTR:host'])
|
||||
|
||||
compute3.kill()
|
||||
host.start()
|
||||
|
||||
def test_evacuate_with_anti_affinity_no_valid_host(self):
|
||||
created_group = self.api.post_server_groups(self.anti_affinity)
|
||||
|
@ -640,10 +623,8 @@ class ServerGroupTestV215(ServerGroupTestV21):
|
|||
|
||||
host = self._get_compute_service_by_host_name(
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
host.stop()
|
||||
# Need to wait service_down_time amount of seconds to ensure
|
||||
# nova considers the host down
|
||||
time.sleep(self._service_down_time)
|
||||
# Set forced_down on the host to ensure nova considers the host down.
|
||||
self._set_forced_down(host, True)
|
||||
|
||||
post = {'evacuate': {}}
|
||||
self.admin_api.post_server_action(servers[1]['id'], post)
|
||||
|
@ -656,18 +637,14 @@ class ServerGroupTestV215(ServerGroupTestV21):
|
|||
self.assertEqual(server_after_failed_evac['OS-EXT-SRV-ATTR:host'],
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
|
||||
host.start()
|
||||
|
||||
def test_evacuate_with_affinity_no_valid_host(self):
|
||||
created_group = self.api.post_server_groups(self.affinity)
|
||||
servers = self._boot_servers_to_group(created_group)
|
||||
|
||||
host = self._get_compute_service_by_host_name(
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
host.stop()
|
||||
# Need to wait service_down_time amount of seconds to ensure
|
||||
# nova considers the host down
|
||||
time.sleep(self._service_down_time)
|
||||
# Set forced_down on the host to ensure nova considers the host down.
|
||||
self._set_forced_down(host, True)
|
||||
|
||||
post = {'evacuate': {}}
|
||||
self.admin_api.post_server_action(servers[1]['id'], post)
|
||||
|
@ -680,8 +657,6 @@ class ServerGroupTestV215(ServerGroupTestV21):
|
|||
self.assertEqual(server_after_failed_evac['OS-EXT-SRV-ATTR:host'],
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
|
||||
host.start()
|
||||
|
||||
def _check_group_format(self, group, created_group):
|
||||
self.assertEqual(group['policies'], created_group['policies'])
|
||||
self.assertEqual({}, created_group['metadata'])
|
||||
|
@ -810,10 +785,8 @@ class ServerGroupTestV215(ServerGroupTestV21):
|
|||
|
||||
host = self._get_compute_service_by_host_name(
|
||||
servers[1]['OS-EXT-SRV-ATTR:host'])
|
||||
host.stop()
|
||||
# Need to wait service_down_time amount of seconds to ensure
|
||||
# nova considers the host down
|
||||
time.sleep(self._service_down_time)
|
||||
# Set forced_down on the host to ensure nova considers the host down.
|
||||
self._set_forced_down(host, True)
|
||||
|
||||
post = {'evacuate': {}}
|
||||
self.admin_api.post_server_action(servers[1]['id'], post)
|
||||
|
@ -826,8 +799,6 @@ class ServerGroupTestV215(ServerGroupTestV21):
|
|||
# new host later
|
||||
evacuated_server = self.admin_api.get_server(evacuated_server['id'])
|
||||
|
||||
host.start()
|
||||
|
||||
return [evacuated_server['OS-EXT-SRV-ATTR:host'],
|
||||
servers[0]['OS-EXT-SRV-ATTR:host']]
|
||||
|
||||
|
|
Loading…
Reference in New Issue