
One test per method with proper mocking. Change-Id: Ib0762d1034c71efc9751e81b75a6f2f0755d40d7 Related: blueprint unit-tests-refactoring
195 lines
9.6 KiB
Python
195 lines
9.6 KiB
Python
# Copyright 2013: Mirantis Inc.
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import mock
|
|
|
|
from rally.benchmark.scenarios.nova import utils
|
|
from rally.benchmark import utils as butils
|
|
from rally import exceptions as rally_exceptions
|
|
from rally.openstack.common.fixture import mockpatch
|
|
from tests import fakes
|
|
from tests import test
|
|
|
|
BM_UTILS = 'rally.benchmark.utils'
|
|
NOVA_UTILS = "rally.benchmark.scenarios.nova.utils"
|
|
|
|
|
|
class NovaScenarioTestCase(test.TestCase):
|
|
|
|
def setUp(self):
|
|
super(NovaScenarioTestCase, self).setUp()
|
|
self.server = mock.Mock()
|
|
self.server1 = mock.Mock()
|
|
self.image = mock.Mock()
|
|
self.res_is = mockpatch.Patch(BM_UTILS + ".resource_is")
|
|
self.get_fm = mockpatch.Patch(BM_UTILS + '.get_from_manager')
|
|
self.wait_for = mockpatch.Patch(NOVA_UTILS + ".utils.wait_for")
|
|
self.useFixture(self.wait_for)
|
|
self.useFixture(self.res_is)
|
|
self.useFixture(self.get_fm)
|
|
self.gfm = self.get_fm.mock
|
|
self.useFixture(mockpatch.Patch('time.sleep'))
|
|
|
|
def test_generate_random_name(self):
|
|
for length in [8, 16, 32, 64]:
|
|
name = utils.NovaScenario()._generate_random_name(length)
|
|
self.assertEqual(len(name), length)
|
|
self.assertTrue(name.isalpha())
|
|
|
|
def test_failed_server_status(self):
|
|
self.get_fm.cleanUp()
|
|
server_manager = fakes.FakeFailedServerManager()
|
|
self.assertRaises(rally_exceptions.GetResourceFailure,
|
|
butils.get_from_manager(),
|
|
server_manager.create('fails', '1', '2'))
|
|
|
|
@mock.patch(NOVA_UTILS + '.NovaScenario.clients')
|
|
def test__boot_server(self, mock_clients):
|
|
mock_clients("nova").servers.create.return_value = self.server
|
|
return_server = utils.NovaScenario()._boot_server('server_name',
|
|
'image_id',
|
|
'flavor_id')
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('ACTIVE'))
|
|
self.assertEqual(self.wait_for.mock(), return_server)
|
|
|
|
def test__suspend_server(self):
|
|
utils.NovaScenario()._suspend_server(self.server)
|
|
self.server.suspend.assert_called_once_with()
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('SUSPENDED'))
|
|
|
|
@mock.patch(NOVA_UTILS + '.NovaScenario.clients')
|
|
def test__create_image(self, mock_clients):
|
|
mock_clients("nova").images.get.return_value = self.image
|
|
return_image = utils.NovaScenario()._create_image(self.server)
|
|
self.wait_for.mock.assert_called_once_with(self.image,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('ACTIVE'))
|
|
self.assertEqual(self.wait_for.mock(), return_image)
|
|
|
|
@mock.patch(BM_UTILS + ".is_none")
|
|
def test__delete_server(self, mock_isnone):
|
|
utils.NovaScenario()._delete_server(self.server)
|
|
self.server.delete.assert_called_once_with()
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
is_ready=mock_isnone,
|
|
update_resource=self.gfm(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
|
|
def test__reboot_server(self):
|
|
utils.NovaScenario()._reboot_server(self.server)
|
|
self.server.reboot.assert_called_once_with(reboot_type='SOFT')
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('ACTIVE'))
|
|
|
|
def test__start_server(self):
|
|
utils.NovaScenario()._start_server(self.server)
|
|
self.server.start.assert_called_once_with()
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=2,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('ACTIVE'))
|
|
|
|
def test__stop_server(self):
|
|
utils.NovaScenario()._stop_server(self.server)
|
|
self.server.stop.assert_called_once_with()
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=2,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('SHUTOFF'))
|
|
|
|
def test__rescue_server(self):
|
|
utils.NovaScenario()._rescue_server(self.server)
|
|
self.server.rescue.assert_called_once_with()
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('RESCUE'))
|
|
|
|
def test__unresque_server(self):
|
|
utils.NovaScenario()._unrescue_server(self.server)
|
|
self.server.unrescue.assert_called_once_with()
|
|
self.wait_for.mock.assert_called_once_with(self.server,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('ACTIVE'))
|
|
|
|
@mock.patch(BM_UTILS + ".is_none")
|
|
@mock.patch(NOVA_UTILS + '.NovaScenario.clients')
|
|
def test__delete_all_servers(self, mock_clients, mock_isnone):
|
|
mock_clients("nova").servers.list.return_value = [self.server,
|
|
self.server1]
|
|
utils.NovaScenario()._delete_all_servers()
|
|
expected = [
|
|
mock.call(self.server, is_ready=mock_isnone,
|
|
update_resource=self.gfm(),
|
|
check_interval=3, timeout=600),
|
|
mock.call(self.server1, is_ready=mock_isnone,
|
|
update_resource=self.gfm(),
|
|
check_interval=3, timeout=600)
|
|
]
|
|
self.assertEqual(expected, self.wait_for.mock.mock_calls)
|
|
|
|
def test__delete_image(self):
|
|
utils.NovaScenario()._delete_image(self.image)
|
|
self.image.delete.assert_called_once_with()
|
|
self.wait_for.mock.assert_called_once_with(self.image,
|
|
update_resource=self.gfm(),
|
|
is_ready=self.res_is.mock(),
|
|
check_interval=3,
|
|
timeout=600)
|
|
self.res_is.mock.assert_has_calls(mock.call('DELETED'))
|
|
|
|
@mock.patch(NOVA_UTILS + '.NovaScenario.clients')
|
|
def test__boot_servers(self, mock_clients):
|
|
mock_clients("nova").servers.list.return_value = [self.server,
|
|
self.server1]
|
|
utils.NovaScenario()._boot_servers('prefix', 'image', 'flavor', 2)
|
|
expected = [
|
|
mock.call(self.server, is_ready=self.res_is.mock(),
|
|
update_resource=self.gfm(),
|
|
check_interval=3, timeout=600),
|
|
mock.call(self.server1, is_ready=self.res_is.mock(),
|
|
update_resource=self.gfm(),
|
|
check_interval=3, timeout=600)
|
|
]
|
|
self.assertEqual(expected, self.wait_for.mock.mock_calls)
|
|
self.res_is.mock.assert_has_calls(mock.call('ACTIVE'))
|