Files
rally/tests/benchmark/scenarios/nova/test_utils.py
Hugh Saunders 94415a3f40 Prepare instances for SSH access
This patchset is in preparation for a scenario for running a
test/benchmark within an instance.

Change-Id: I94276237fb5b453b194e58ed00df589a3420a6ed
2013-12-27 21:12:36 +00:00

94 lines
3.9 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 import test
from tests import fakes
class NovaScenarioTestCase(test.TestCase):
def setUp(self):
super(NovaScenarioTestCase, self).setUp()
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):
server_manager = fakes.FakeFailedServerManager()
self.assertRaises(rally_exceptions.GetResourceFailure,
butils.get_from_manager(),
server_manager.create('fails', '1', '2'))
@mock.patch("rally.benchmark.scenarios.nova.utils.time.sleep")
@mock.patch("rally.utils")
@mock.patch("rally.benchmark.utils.osclients")
@mock.patch("rally.benchmark.utils.resource_is")
def test_server_helper_methods(self, mock_ris, mock_osclients,
mock_rally_utils, mock_sleep):
def _is_ready(resource):
return resource.status == "ACTIVE"
mock_ris.return_value = _is_ready
get_from_mgr = butils.get_from_manager()
fc = fakes.FakeClients()
mock_osclients.Clients.return_value = fc
fake_nova = fakes.FakeNovaClient()
fc.get_nova_client = lambda: fake_nova
fsm = fakes.FakeServerManager(fake_nova.images)
fake_server = fsm.create("s1", "i1", 1)
fsm.create = lambda name, iid, fid, **kwargs: fake_server
fake_nova.servers = fsm
fake_image_id = fsm.create_image(fake_server, 'img')
fake_image = fsm.images.get(fake_image_id)
fsm.create_image = lambda svr, name: fake_image.id
temp_keys = ["username", "password", "tenant_name", "uri"]
users_endpoints = [dict(zip(temp_keys, temp_keys))]
utils.NovaScenario._clients = butils.\
create_openstack_clients(users_endpoints, temp_keys)[0]
utils.utils = mock_rally_utils
utils.bench_utils.get_from_manager = lambda: get_from_mgr
utils.NovaScenario._boot_server("s1", "i1", 1)
utils.NovaScenario._create_image(fake_server)
utils.NovaScenario._suspend_server(fake_server)
utils.NovaScenario._delete_server(fake_server)
expected = [
mock.call.wait_for(fake_server, is_ready=_is_ready,
update_resource=butils.get_from_manager(),
check_interval=3, timeout=600),
mock.call.wait_for(fake_image, is_ready=_is_ready,
update_resource=butils.get_from_manager(),
check_interval=3, timeout=600),
mock.call.wait_for(fake_server, is_ready=_is_ready,
update_resource=butils.get_from_manager(),
check_interval=3, timeout=600),
mock.call.wait_for(fake_server, is_ready=butils.is_none,
update_resource=butils.get_from_manager(),
check_interval=3, timeout=600)
]
self.assertEqual(expected, mock_rally_utils.mock_calls)