![Andrey Kurilin](/assets/img/avatar_default.png)
Move all modules under the next structure: - rally_openstack.common - rally_openstack.enviromnet - rally_openstack.task - rally_openstack.verification Change-Id: I41702d017cd49b117da3b8e12b19c7327229ae32
149 lines
5.4 KiB
Python
149 lines
5.4 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.
|
|
|
|
from unittest import mock
|
|
|
|
from rally.common import cfg
|
|
from rally import exceptions
|
|
from rally_openstack.task.contexts.sahara import sahara_cluster
|
|
from rally_openstack.task.scenarios.sahara import utils as sahara_utils
|
|
from tests.unit import test
|
|
|
|
CONF = cfg.CONF
|
|
|
|
CTX = "rally_openstack.task.contexts.sahara"
|
|
|
|
|
|
class SaharaClusterTestCase(test.ScenarioTestCase):
|
|
|
|
patch_task_utils = False
|
|
|
|
def setUp(self):
|
|
super(SaharaClusterTestCase, self).setUp()
|
|
self.tenants_num = 2
|
|
self.users_per_tenant = 2
|
|
self.users = self.tenants_num * self.users_per_tenant
|
|
|
|
self.tenants = {}
|
|
self.users_key = []
|
|
|
|
for i in range(self.tenants_num):
|
|
self.tenants[str(i)] = {"id": str(i), "name": str(i),
|
|
"sahara": {"image": "42"}}
|
|
for j in range(self.users_per_tenant):
|
|
self.users_key.append({"id": "%s_%s" % (str(i), str(j)),
|
|
"tenant_id": str(i),
|
|
"credential": mock.MagicMock()})
|
|
|
|
CONF.set_override("sahara_cluster_check_interval", 0, "openstack")
|
|
|
|
self.context.update({
|
|
"config": {
|
|
"users": {
|
|
"tenants": self.tenants_num,
|
|
"users_per_tenant": self.users_per_tenant
|
|
},
|
|
"sahara_cluster": {
|
|
"master_flavor_id": "test_flavor_m",
|
|
"worker_flavor_id": "test_flavor_w",
|
|
"workers_count": 2,
|
|
"plugin_name": "test_plugin",
|
|
"hadoop_version": "test_version"
|
|
}
|
|
},
|
|
"admin": {"credential": mock.MagicMock()},
|
|
"users": self.users_key,
|
|
"tenants": self.tenants
|
|
})
|
|
|
|
@mock.patch("%s.sahara_cluster.resource_manager.cleanup" % CTX)
|
|
@mock.patch("%s.sahara_cluster.utils.SaharaScenario._launch_cluster" % CTX,
|
|
return_value=mock.MagicMock(id=42))
|
|
def test_setup_and_cleanup(self, mock_sahara_scenario__launch_cluster,
|
|
mock_cleanup):
|
|
sahara_ctx = sahara_cluster.SaharaCluster(self.context)
|
|
|
|
launch_cluster_calls = []
|
|
|
|
for i in self.tenants:
|
|
launch_cluster_calls.append(mock.call(
|
|
flavor_id=None,
|
|
plugin_name="test_plugin",
|
|
hadoop_version="test_version",
|
|
master_flavor_id="test_flavor_m",
|
|
worker_flavor_id="test_flavor_w",
|
|
workers_count=2,
|
|
image_id=self.context["tenants"][i]["sahara"]["image"],
|
|
floating_ip_pool=None,
|
|
volumes_per_node=None,
|
|
volumes_size=1,
|
|
auto_security_group=True,
|
|
security_groups=None,
|
|
node_configs=None,
|
|
cluster_configs=None,
|
|
enable_anti_affinity=False,
|
|
enable_proxy=False,
|
|
wait_active=False,
|
|
use_autoconfig=True
|
|
))
|
|
|
|
self.clients("sahara").clusters.get.side_effect = [
|
|
mock.MagicMock(status="not-active"),
|
|
mock.MagicMock(status="active")]
|
|
sahara_ctx.setup()
|
|
|
|
mock_sahara_scenario__launch_cluster.assert_has_calls(
|
|
launch_cluster_calls)
|
|
sahara_ctx.cleanup()
|
|
mock_cleanup.assert_called_once_with(
|
|
names=["sahara.clusters"],
|
|
users=self.context["users"],
|
|
superclass=sahara_utils.SaharaScenario,
|
|
task_id=self.context["owner_id"])
|
|
|
|
@mock.patch("%s.sahara_cluster.utils.SaharaScenario._launch_cluster" % CTX,
|
|
return_value=mock.MagicMock(id=42))
|
|
def test_setup_and_cleanup_error(self,
|
|
mock_sahara_scenario__launch_cluster):
|
|
sahara_ctx = sahara_cluster.SaharaCluster(self.context)
|
|
|
|
launch_cluster_calls = []
|
|
|
|
for i in self.tenants:
|
|
launch_cluster_calls.append(mock.call(
|
|
flavor_id=None,
|
|
plugin_name="test_plugin",
|
|
hadoop_version="test_version",
|
|
master_flavor_id="test_flavor_m",
|
|
worker_flavor_id="test_flavor_w",
|
|
workers_count=2,
|
|
image_id=self.context["tenants"][i]["sahara"]["image"],
|
|
floating_ip_pool=None,
|
|
volumes_per_node=None,
|
|
volumes_size=1,
|
|
auto_security_groups=True,
|
|
security_groups=None,
|
|
node_configs=None,
|
|
cluster_configs=None,
|
|
wait_active=False,
|
|
use_autoconfig=True
|
|
))
|
|
|
|
self.clients("sahara").clusters.get.side_effect = [
|
|
mock.MagicMock(status="not-active"),
|
|
mock.MagicMock(status="error")
|
|
]
|
|
|
|
self.assertRaises(exceptions.ContextSetupFailure, sahara_ctx.setup)
|