rally-openstack/tests/unit/task/contexts/vm/test_image_command_customizer.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

96 lines
3.5 KiB
Python

# Copyright 2015: 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.
"""Tests for the image customizer using a command execution."""
from unittest import mock
from rally import exceptions
from rally_openstack.task.contexts.vm import image_command_customizer
from tests.unit import test
BASE = "rally_openstack.task.contexts.vm.image_command_customizer"
class ImageCommandCustomizerContextVMTestCase(test.TestCase):
def setUp(self):
super(ImageCommandCustomizerContextVMTestCase, self).setUp()
self.context = {
"task": mock.MagicMock(),
"config": {
"image_command_customizer": {
"image": {"name": "image"},
"flavor": {"name": "flavor"},
"username": "fedora",
"password": "foo_password",
"floating_network": "floating",
"port": 1022,
"command": {
"interpreter": "foo_interpreter",
"script_file": "foo_script"
}
}
},
"admin": {
"credential": "credential",
}
}
self.user = {"keypair": {"private": "foo_private"}}
self.fip = {"ip": "foo_ip"}
@mock.patch("%s.vm_utils.VMScenario" % BASE)
def test_customize_image(self, mock_vm_scenario):
mock_vm_scenario.return_value._run_command.return_value = (
0, "foo_stdout", "foo_stderr")
customizer = image_command_customizer.ImageCommandCustomizerContext(
self.context)
retval = customizer.customize_image(server=None, ip=self.fip,
user=self.user)
mock_vm_scenario.assert_called_once_with(customizer.context)
mock_vm_scenario.return_value._run_command.assert_called_once_with(
"foo_ip", 1022, "fedora", "foo_password", pkey="foo_private",
command={"interpreter": "foo_interpreter",
"script_file": "foo_script"})
self.assertEqual((0, "foo_stdout", "foo_stderr"), retval)
@mock.patch("%s.vm_utils.VMScenario" % BASE)
def test_customize_image_fail(self, mock_vm_scenario):
mock_vm_scenario.return_value._run_command.return_value = (
1, "foo_stdout", "foo_stderr")
customizer = image_command_customizer.ImageCommandCustomizerContext(
self.context)
exc = self.assertRaises(
exceptions.ScriptError, customizer.customize_image,
server=None, ip=self.fip, user=self.user)
str_exc = str(exc)
self.assertIn("foo_stdout", str_exc)
self.assertIn("foo_stderr", str_exc)
mock_vm_scenario.return_value._run_command.assert_called_once_with(
"foo_ip", 1022, "fedora", "foo_password", pkey="foo_private",
command={"interpreter": "foo_interpreter",
"script_file": "foo_script"})