Marian Gasparovic e199f7bc38 test designate resolving from VM
Change-Id: I7e35aa387a6c488ffc6532a1e5d3eb9387dc7963
2020-04-22 22:13:49 +02:00

182 lines
5.9 KiB
Python

# 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 copy
from unittest import mock
from rally_openstack.task.contexts.designate import zones
from rally_openstack.task.scenarios.designate import utils
from tests.unit import test
CTX = "rally_openstack.task.contexts"
SCN = "rally_openstack.task.scenarios"
class ZoneGeneratorTestCase(test.ScenarioTestCase):
def _gen_tenants(self, count):
tenants = {}
for id_ in range(count):
tenants[str(id_)] = {"name": str(id_)}
return tenants
def test_init(self):
self.context.update({
"config": {
"zones": {
"zones_per_tenant": 5,
}
}
})
inst = zones.ZoneGenerator(self.context)
self.assertEqual(inst.config, self.context["config"]["zones"])
@mock.patch("%s.designate.utils.DesignateScenario._create_zone" % SCN,
return_value={"id": "uuid"})
def test_setup(self, mock_designate_scenario__create_zone):
tenants_count = 2
users_per_tenant = 5
zones_per_tenant = 5
tenants = self._gen_tenants(tenants_count)
users = []
for id_ in tenants.keys():
for i in range(users_per_tenant):
users.append({"id": i, "tenant_id": id_,
"credential": mock.MagicMock()})
self.context.update({
"config": {
"users": {
"tenants": 2,
"users_per_tenant": 5,
"concurrent": 10,
},
"zones": {
"zones_per_tenant": zones_per_tenant,
"set_zone_in_network": False
}
},
"admin": {
"credential": mock.MagicMock()
},
"users": users,
"tenants": tenants
})
new_context = copy.deepcopy(self.context)
for id_ in tenants.keys():
new_context["tenants"][id_].setdefault("zones", [])
for i in range(zones_per_tenant):
new_context["tenants"][id_]["zones"].append({"id": "uuid"})
zones_ctx = zones.ZoneGenerator(self.context)
zones_ctx.setup()
self.assertEqual(new_context, self.context)
@mock.patch("%s.neutron.utils.NeutronScenario" % SCN)
@mock.patch("%s.designate.utils.DesignateScenario._create_zone" % SCN,
return_value={"id": "uuid", "name": "fake_name"})
def test_setup_for_existinge(self, mock_designate_scenario__create_zone,
mock_neutron_scenario):
tenants_count = 1
users_per_tenant = 1
networks = []
tenants = self._gen_tenants(tenants_count)
users = []
for id_ in tenants.keys():
networks.append(
{"id": f"foo_net_{id_}",
"tenant_id": id_, "subnets": ["foo_subnet"]})
for i in range(users_per_tenant):
users.append({"id": i, "tenant_id": id_,
"credential": mock.MagicMock()})
tenants["0"]["networks"] = networks
self.context.update({
"config": {
"users": {
"tenants": 1,
"users_per_tenant": 1,
"concurrent": 1,
},
"zones": {
"set_zone_in_network": True
},
"network": {}
},
"admin": {
"credential": mock.MagicMock()
},
"users": users,
"tenants": tenants
})
zones_ctx = zones.ZoneGenerator(self.context)
zones_ctx.setup()
mock_neutron_scenario.assert_called_once()
scenario = mock_neutron_scenario.return_value
scenario.clients.assert_called_with("neutron")
neutron = scenario.clients.return_value
neutron.update_network.assert_called_with(
"foo_net_0", {"network": {"dns_domain": "fake_name"}})
@mock.patch("%s.designate.zones.resource_manager.cleanup" % CTX)
def test_cleanup(self, mock_cleanup):
tenants_count = 2
users_per_tenant = 5
zones_per_tenant = 5
tenants = self._gen_tenants(tenants_count)
users = []
for id_ in tenants.keys():
for i in range(users_per_tenant):
users.append({"id": i, "tenant_id": id_,
"endpoint": "endpoint"})
tenants[id_].setdefault("zones", [])
for j in range(zones_per_tenant):
tenants[id_]["zones"].append({"id": "uuid"})
self.context.update({
"config": {
"users": {
"tenants": 2,
"users_per_tenant": 5,
"concurrent": 10,
},
"zones": {
"zones_per_tenant": 5,
}
},
"admin": {
"endpoint": mock.MagicMock()
},
"users": users,
"tenants": tenants
})
zones_ctx = zones.ZoneGenerator(self.context)
zones_ctx.cleanup()
mock_cleanup.assert_called_once_with(
names=["designate.zones"],
users=self.context["users"],
superclass=utils.DesignateScenario,
task_id=self.context["owner_id"])