rally-openstack/tests/unit/task/contexts/sahara/test_sahara_job_binaries.py
Andrey Kurilin d2f4e9717d Restruct the project
Move all modules under the next structure:

- rally_openstack.common
- rally_openstack.enviromnet
- rally_openstack.task
- rally_openstack.verification

Change-Id: I41702d017cd49b117da3b8e12b19c7327229ae32
2020-03-27 19:06:13 +02:00

145 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_openstack.task.contexts.sahara import sahara_job_binaries
from rally_openstack.task.scenarios.sahara import utils as sahara_utils
from tests.unit import test
CTX = "rally_openstack.task.contexts.sahara"
class SaharaJobBinariesTestCase(test.ScenarioTestCase):
def setUp(self):
super(SaharaJobBinariesTestCase, self).setUp()
self.tenants_num = 2
self.users_per_tenant = 2
self.users = self.tenants_num * self.users_per_tenant
self.task = mock.MagicMock()
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": "credential"})
self.user_key = [{"id": i, "tenant_id": j, "credential": "credential"}
for j in range(self.tenants_num)
for i in range(self.users_per_tenant)]
self.context.update({
"config": {
"users": {
"tenants": self.tenants_num,
"users_per_tenant": self.users_per_tenant,
},
"sahara_job_binaries": {
"libs": [
{
"name": "test.jar",
"download_url": "http://example.com/test.jar"
}
],
"mains": [
{
"name": "test.jar",
"download_url": "http://example.com/test.jar"
}
]
},
},
"admin": {"credential": mock.MagicMock()},
"task": mock.MagicMock(),
"users": self.users_key,
"tenants": self.tenants
})
@mock.patch("%s.sahara_job_binaries.resource_manager.cleanup" % CTX)
@mock.patch(("%s.sahara_job_binaries.SaharaJobBinaries."
"download_and_save_lib") % CTX)
@mock.patch("%s.sahara_job_binaries.osclients" % CTX)
def test_setup_and_cleanup(
self,
mock_osclients,
mock_sahara_job_binaries_download_and_save_lib,
mock_cleanup):
mock_sahara = mock_osclients.Clients(mock.MagicMock()).sahara()
sahara_ctx = sahara_job_binaries.SaharaJobBinaries(self.context)
download_calls = []
for i in range(self.tenants_num):
download_calls.append(mock.call(
sahara=mock_sahara,
lib_type="mains",
name="test.jar",
download_url="http://example.com/test.jar",
tenant_id=str(i)))
download_calls.append(mock.call(
sahara=mock_sahara,
lib_type="libs",
name="test.jar",
download_url="http://example.com/test.jar",
tenant_id=str(i)))
sahara_ctx.setup()
(mock_sahara_job_binaries_download_and_save_lib.
assert_has_calls(download_calls))
sahara_ctx.cleanup()
mock_cleanup.assert_called_once_with(
names=["sahara.job_binary_internals", "sahara.job_binaries"],
users=self.context["users"],
superclass=sahara_utils.SaharaScenario,
task_id=self.context["task"]["uuid"])
@mock.patch("%s.sahara_job_binaries.requests" % CTX)
@mock.patch("%s.sahara_job_binaries.osclients" % CTX)
def test_download_and_save_lib(self, mock_osclients, mock_requests):
mock_requests.get.content.return_value = "some_binary_content"
mock_sahara = mock_osclients.Clients(mock.MagicMock()).sahara()
mock_sahara.job_binary_internals.create.return_value = (
mock.MagicMock(id=42))
sahara_ctx = sahara_job_binaries.SaharaJobBinaries(self.context)
sahara_ctx.context["tenants"]["0"]["sahara"] = {"mains": []}
sahara_ctx.context["tenants"]["0"]["sahara"]["libs"] = []
sahara_ctx.download_and_save_lib(sahara=mock_sahara,
lib_type="mains",
name="test_binary",
download_url="http://somewhere",
tenant_id="0")
sahara_ctx.download_and_save_lib(sahara=mock_sahara,
lib_type="libs",
name="test_binary_2",
download_url="http://somewhere",
tenant_id="0")
mock_requests.get.assert_called_once_with("http://somewhere")