rally/tests/unit/deployment/test_multihost.py
Alexandr Nevenchannyy a629d9a3eb Rename EngineFactory -> Engine
Renaming as part of refactoring engine.py.

Change-Id: I1f5814d9fe16aa8f95d2882bdf53376fd3c31785
2015-08-04 17:35:58 +03:00

115 lines
4.2 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 import consts
from rally.deployment import engine
from tests.unit import fakes
from tests.unit import test
MOD = "rally.deployment.engines.multihost."
class MultihostEngineTestCase(test.TestCase):
def setUp(self):
super(MultihostEngineTestCase, self).setUp()
self.config = {
"type": "MultihostEngine",
"controller": {
"type": "DummyEngine",
"endpoint": {"auth_url": "http://h1.net"}
},
"nodes": [
{
"type": "DummyEngine",
"endpoint": {"auth_url": "endpoint1"},
},
{
"type": "DummyEngine",
"endpoint": {"auth_url": "endpoint2",
"cnt": "{controller_ip}"}
}
]
}
self.deployment = fakes.FakeDeployment(
uuid="905b2f16-6453-4b86-8ba5-6d32025fcfa6",
config=self.config,
)
self.engine = engine.Engine.get_engine("MultihostEngine",
self.deployment)
@mock.patch(MOD + "objects.Deployment")
@mock.patch(MOD + "engine.Engine")
def test__deploy_node(self, mock_engine, mock_deployment):
fake_endpoint = mock.Mock()
fake_deployment = mock.Mock()
fake_engine = mock.Mock()
fake_engine.__enter__ = mock.Mock()
fake_engine.__exit__ = mock.Mock()
fake_engine.make_deploy = mock.Mock(return_value=fake_endpoint)
mock_deployment.return_value = fake_deployment
mock_engine.get_engine = mock.Mock(return_value=fake_engine)
engine, endpoint = self.engine._deploy_node(self.config["nodes"][0])
self.assertEqual(fake_engine, engine)
self.assertEqual(fake_endpoint, endpoint)
mock_deployment.assert_called_once_with(
config=self.config["nodes"][0],
parent_uuid=self.deployment["uuid"])
fake_engine.__enter__.assert_called_once_with()
fake_engine.__exit__.assert_called_once_with(None, None, None)
def test__update_controller_ip(self):
self.engine.controller_ip = "1.2.3.4"
self.engine._update_controller_ip(self.config)
expected = {"auth_url": "endpoint2", "cnt": "1.2.3.4"}
self.assertEqual(expected, self.config["nodes"][1]["endpoint"])
@mock.patch(MOD + "MultihostEngine._deploy_node")
@mock.patch(MOD + "MultihostEngine._update_controller_ip")
def test_deploy(self, mock__update_controller_ip, mock__deploy_node):
fake_endpoints = [mock.Mock()]
fake_endpoints[0].auth_url = "http://h1.net"
mock__deploy_node.return_value = [mock.Mock(), fake_endpoints]
endpoints = self.engine.deploy()
self.assertEqual(self.engine.controller_ip, "h1.net")
self.assertEqual(fake_endpoints, endpoints)
expected = [
mock.call(self.config["nodes"][0]),
mock.call(self.config["nodes"][1]),
]
self.assertEqual(expected, mock__update_controller_ip.mock_calls)
self.deployment.update_status.assert_called_once_with(
consts._DeployStatus.DEPLOY_SUBDEPLOY)
@mock.patch("rally.api")
@mock.patch(MOD + "db")
def test_cleanup(self, mock_db, mock_api):
mock_db.deployment_list.return_value = [{"uuid": "uuid1"},
{"uuid": "uuid2"}]
self.engine.cleanup()
api_calls = [
mock.call.Deployment.destroy("uuid1"),
mock.call.Deployment.destroy("uuid2"),
]
self.assertEqual(api_calls, mock_api.mock_calls)