![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
96 lines
3.5 KiB
Python
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"})
|