rally/tests/unit/deploy/test_multihost.py
jacobliberman d25fd5b447 Replace ' with " in rally/benchmark and tests/unit
Partial bug: 1405884

Change-Id: I43cb7440b7b2a284ff08538860b1f85c1da0925d
2015-02-05 15:15:56 -06: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 import deploy
from tests.unit import fakes
from tests.unit import test
MOD = "rally.deploy.engines.multihost."
class TestMultihostEngine(test.TestCase):
def setUp(self):
super(TestMultihostEngine, 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 = deploy.engine.EngineFactory.get_engine("MultihostEngine",
self.deployment)
@mock.patch(MOD + "objects.Deployment")
@mock.patch(MOD + "engine.EngineFactory")
def test__deploy_node(self, fakeEngineFactory, fakeDeployment):
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)
fakeDeployment.return_value = fake_deployment
fakeEngineFactory.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)
fakeDeployment.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, update_ip, deploy_node):
fake_endpoints = [mock.Mock()]
fake_endpoints[0].auth_url = "http://h1.net"
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, update_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, m_db, m_api):
m_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, m_api.mock_calls)