Merge "Add resize-server for nova benchmark"
This commit is contained in:
commit
36f710af91
30
doc/samples/tasks/scenarios/nova/resize-server.json
Normal file
30
doc/samples/tasks/scenarios/nova/resize-server.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"NovaServers.resize_server": [
|
||||
{
|
||||
"args": {
|
||||
"flavor": {
|
||||
"name": "m1.nano"
|
||||
},
|
||||
"image": {
|
||||
"name": "cirros-0.3.1-x86_64-uec"
|
||||
},
|
||||
"to_flavor": {
|
||||
"name": "m1.small"
|
||||
},
|
||||
"confirm": true
|
||||
},
|
||||
"runner": {
|
||||
"type": "constant",
|
||||
"times": 10,
|
||||
"concurrency": 5,
|
||||
},
|
||||
"context": {
|
||||
"users": {
|
||||
"tenants": 1,
|
||||
"users_per_tenant": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
19
doc/samples/tasks/scenarios/nova/resize-server.yaml
Normal file
19
doc/samples/tasks/scenarios/nova/resize-server.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
NovaServers.resize_server:
|
||||
-
|
||||
args:
|
||||
flavor:
|
||||
name: "m1.nano"
|
||||
image:
|
||||
name: "cirros-0.3.1-x86_64-uec"
|
||||
to_flavor:
|
||||
name: "m1.small"
|
||||
confirm: true
|
||||
runner:
|
||||
type: "constant"
|
||||
times: 10
|
||||
concurrency: 5
|
||||
context:
|
||||
users:
|
||||
tenants: 1
|
||||
users_per_tenant: 1
|
@ -584,6 +584,25 @@
|
||||
tenants: 1
|
||||
users_per_tenant: 1
|
||||
|
||||
NovaServers.resize_server:
|
||||
-
|
||||
args:
|
||||
flavor:
|
||||
name: "m1.tiny"
|
||||
image:
|
||||
name: "cirros-0.3.2-x86_64-uec"
|
||||
to_flavor:
|
||||
name: "m1.small"
|
||||
confirm: true
|
||||
runner:
|
||||
type: "constant"
|
||||
times: 4
|
||||
concurrency: 2
|
||||
context:
|
||||
users:
|
||||
tenants: 1
|
||||
users_per_tenant: 1
|
||||
|
||||
NovaServers.boot_and_bounce_server:
|
||||
-
|
||||
args:
|
||||
|
@ -212,3 +212,22 @@ class NovaServers(utils.NovaScenario,
|
||||
"""
|
||||
self._rescue_server(server)
|
||||
self._unrescue_server(server)
|
||||
|
||||
@types.set(image=types.ImageResourceType,
|
||||
flavor=types.FlavorResourceType,
|
||||
to_flavor=types.FlavorResourceType)
|
||||
@validation.add(validation.image_valid_on_flavor("flavor", "image"))
|
||||
@base.scenario(context={"cleanup": ["nova"]})
|
||||
@validation.required_services(consts.Service.NOVA)
|
||||
def resize_server(self, image, flavor, to_flavor, **kwargs):
|
||||
"""Tests resize serveri."""
|
||||
server = self._boot_server(self._generate_random_name(),
|
||||
image, flavor, **kwargs)
|
||||
self._resize(server, to_flavor)
|
||||
# by default we confirm
|
||||
confirm = kwargs.get('confirm', True)
|
||||
if confirm:
|
||||
self._resize_confirm(server)
|
||||
else:
|
||||
self._resize_revert(server)
|
||||
self._delete_server(server)
|
||||
|
@ -34,7 +34,10 @@ option_names_and_defaults = [
|
||||
('unrescue', 2, 300, 2),
|
||||
('suspend', 2, 300, 2),
|
||||
('image_create', 0, 300, 2),
|
||||
('image_delete', 0, 300, 2)
|
||||
('image_delete', 0, 300, 2),
|
||||
('resize', 2, 400, 5),
|
||||
('resize_confirm', 0, 200, 2),
|
||||
('resize_revert', 0, 200, 2),
|
||||
]
|
||||
|
||||
for action, prepoll, timeout, poll in option_names_and_defaults:
|
||||
@ -422,3 +425,38 @@ class NovaScenario(base.Scenario):
|
||||
def _list_networks(self):
|
||||
"""Returns user networks list."""
|
||||
return self.clients("nova").networks.list()
|
||||
|
||||
@scenario_utils.atomic_action_timer('nova.resize')
|
||||
def _resize(self, server, flavor):
|
||||
server.resize(flavor)
|
||||
bench_utils.wait_for(
|
||||
server,
|
||||
is_ready=bench_utils.resource_is("VERIFY_RESIZE"),
|
||||
update_resource=bench_utils.get_from_manager(),
|
||||
timeout=CONF.benchmark.nova_server_resize_timeout,
|
||||
check_interval=CONF.benchmark.nova_server_resize_poll_interval
|
||||
)
|
||||
|
||||
@scenario_utils.atomic_action_timer('nova.resize_confirm')
|
||||
def _resize_confirm(self, server):
|
||||
server.confirm_resize()
|
||||
bench_utils.wait_for(
|
||||
server,
|
||||
is_ready=bench_utils.resource_is("ACTIVE"),
|
||||
update_resource=bench_utils.get_from_manager(),
|
||||
timeout=CONF.benchmark.nova_server_resize_confirm_timeout,
|
||||
check_interval=(
|
||||
CONF.benchmark.nova_server_resize_confirm_poll_interval)
|
||||
)
|
||||
|
||||
@scenario_utils.atomic_action_timer('nova.resize_revert')
|
||||
def _resize_revert(self, server):
|
||||
server.revert_resize()
|
||||
bench_utils.wait_for(
|
||||
server,
|
||||
is_ready=bench_utils.resource_is("ACTIVE"),
|
||||
update_resource=bench_utils.get_from_manager(),
|
||||
timeout=CONF.benchmark.nova_server_resize_revert_timeout,
|
||||
check_interval=(
|
||||
CONF.benchmark.nova_server_resize_revert_poll_interval)
|
||||
)
|
||||
|
@ -322,3 +322,34 @@ class NovaServersTestCase(test.TestCase):
|
||||
mock.call(fake_server),
|
||||
mock.call(fake_server)])
|
||||
scenario._delete_image.assert_called_once_with(fake_image)
|
||||
|
||||
def _test_resize(self, confirm=False):
|
||||
fake_server = object()
|
||||
fake_image = fakes.FakeImageManager()._create()
|
||||
fake_image.id = "image_id"
|
||||
flavor = mock.MagicMock()
|
||||
to_flavor = mock.MagicMock()
|
||||
|
||||
scenario = servers.NovaServers()
|
||||
scenario._generate_random_name = mock.MagicMock(return_value="name")
|
||||
scenario._boot_server = mock.MagicMock(return_value=fake_server)
|
||||
scenario._resize_confirm = mock.MagicMock()
|
||||
scenario._resize_revert = mock.MagicMock()
|
||||
scenario._resize = mock.MagicMock()
|
||||
scenario._delete_server = mock.MagicMock()
|
||||
|
||||
kwargs = {'confirm': confirm}
|
||||
scenario.resize_server(fake_image, flavor, to_flavor, **kwargs)
|
||||
|
||||
scenario._resize.assert_called_once_with(fake_server, to_flavor)
|
||||
|
||||
if confirm:
|
||||
scenario._resize_confirm.assert_called_once_with(fake_server)
|
||||
else:
|
||||
scenario._resize_revert.assert_called_once_with(fake_server)
|
||||
|
||||
def test_resize_with_confirm(self):
|
||||
self._test_resize(confirm=True)
|
||||
|
||||
def test_resize_with_revert(self):
|
||||
self._test_resize(confirm=False)
|
||||
|
@ -447,3 +447,22 @@ class NovaScenarioTestCase(test.TestCase):
|
||||
self.assertEqual(network_list, return_network_list)
|
||||
self._test_atomic_action_timer(nova_scenario.atomic_actions(),
|
||||
'nova.list_networks')
|
||||
|
||||
def test__resize(self):
|
||||
nova_scenario = utils.NovaScenario()
|
||||
to_flavor = mock.Mock()
|
||||
nova_scenario._resize(self.server, to_flavor)
|
||||
self._test_atomic_action_timer(nova_scenario.atomic_actions(),
|
||||
'nova.resize')
|
||||
|
||||
def test__resize_confirm(self):
|
||||
nova_scenario = utils.NovaScenario()
|
||||
nova_scenario._resize_confirm(self.server)
|
||||
self._test_atomic_action_timer(nova_scenario.atomic_actions(),
|
||||
'nova.resize_confirm')
|
||||
|
||||
def test__resize_revert(self):
|
||||
nova_scenario = utils.NovaScenario()
|
||||
nova_scenario._resize_revert(self.server)
|
||||
self._test_atomic_action_timer(nova_scenario.atomic_actions(),
|
||||
'nova.resize_revert')
|
||||
|
Loading…
x
Reference in New Issue
Block a user