a50cdaf2d6
We should rename this directory to be consistent in naming and "deploy" is verb which causes misunderstanding... There are already few places where deployment is used: 1) "rally deployment" command and 2) https://github.com/openstack/rally/blob/master/rally/cli/commands/deployment.py 3) https://github.com/openstack/rally/blob/master/rally/objects/deploy.py#L22 4) https://github.com/openstack/rally/blob/master/rally/db/sqlalchemy/models.py#L55 and we should continue this work and use always "deployment" Change-Id: I0cdf01a80658288f55258587a7704ce0eb47d532
118 lines
3.6 KiB
Python
118 lines
3.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.
|
|
"""Test for vm providers."""
|
|
|
|
import mock
|
|
import six
|
|
|
|
from rally.common import sshutils
|
|
from rally.deployment.serverprovider import provider
|
|
from rally import exceptions
|
|
from tests.unit import test
|
|
|
|
|
|
class ProviderMixIn(object):
|
|
def create_servers(self, image_uuid=None, amount=1):
|
|
pass
|
|
|
|
def destroy_servers(self):
|
|
pass
|
|
|
|
|
|
class ProviderA(ProviderMixIn, provider.ProviderFactory):
|
|
"""Fake server provider.
|
|
|
|
Used for tests.
|
|
"""
|
|
pass
|
|
|
|
|
|
class ProviderB(ProviderMixIn, provider.ProviderFactory):
|
|
"""Fake server provider.
|
|
|
|
Used for tests.
|
|
"""
|
|
pass
|
|
|
|
|
|
class ProviderC(ProviderB):
|
|
"""Fake server provider.
|
|
|
|
Used for tests.
|
|
"""
|
|
pass
|
|
|
|
|
|
FAKE_PROVIDERS = [ProviderA, ProviderB, ProviderC]
|
|
|
|
|
|
class ProviderFactoryTestCase(test.TestCase):
|
|
|
|
@mock.patch.object(provider.ProviderFactory, "validate")
|
|
def test_init(self, mock_validate):
|
|
ProviderA(None, None)
|
|
mock_validate.assert_called_once_with()
|
|
|
|
def test_get_provider_not_found(self):
|
|
self.assertRaises(exceptions.PluginNotFound,
|
|
provider.ProviderFactory.get_provider,
|
|
{"type": "fail"}, None)
|
|
|
|
def test_vm_prvoider_factory_is_abstract(self):
|
|
self.assertRaises(TypeError, provider.ProviderFactory)
|
|
|
|
|
|
class ServerTestCase(test.TestCase):
|
|
def setUp(self):
|
|
super(ServerTestCase, self).setUp()
|
|
self.vals = ["192.168.1.1", "admin", "some_key", "pwd"]
|
|
self.keys = ["host", "user", "key", "password"]
|
|
|
|
def test_init_server_dto(self):
|
|
server = provider.Server(*self.vals)
|
|
for k, v in six.iteritems(dict(zip(self.keys, self.vals))):
|
|
self.assertEqual(getattr(server, k), v)
|
|
self.assertIsInstance(server.ssh, sshutils.SSH)
|
|
|
|
def test_credentials(self):
|
|
server_one = provider.Server(*self.vals)
|
|
creds = server_one.get_credentials()
|
|
server_two = provider.Server.from_credentials(creds)
|
|
for k in self.keys:
|
|
self.assertEqual(getattr(server_one, k), getattr(server_two, k))
|
|
|
|
|
|
class ResourceManagerTestCase(test.TestCase):
|
|
def setUp(self):
|
|
super(ResourceManagerTestCase, self).setUp()
|
|
self.deployment = mock.Mock()
|
|
self.resources = provider.ResourceManager(self.deployment,
|
|
"provider")
|
|
|
|
def test_create(self):
|
|
self.resources.create("info", type="type")
|
|
self.deployment.add_resource.assert_called_once_with("provider",
|
|
type="type",
|
|
info="info")
|
|
|
|
def test_get_all(self):
|
|
self.resources.get_all(type="type")
|
|
self.deployment.get_resources.assert_called_once_with(
|
|
provider_name="provider", type="type")
|
|
|
|
def test_delete(self):
|
|
self.resources.delete("resource_id")
|
|
self.deployment.delete_resource.assert_called_once_with("resource_id")
|