kiwi-el8/test/unit/storage_raid_device_test.py
Marcus Schäfer e6cc5bfa09 Move from nose to pytest
nose is no longer maintained, thus we have to move to another
testing system. This commit updates the tox setup and all tests
to use pytest instead of nose.
2016-03-14 12:23:14 +01:00

90 lines
3.0 KiB
Python

from mock import patch
import mock
from .test_helper import *
from kiwi.exceptions import *
from kiwi.storage.raid_device import RaidDevice
class TestRaidDevice(object):
def setup(self):
storage_device = mock.Mock()
storage_device.get_device = mock.Mock(
return_value='/dev/some-device'
)
storage_device.is_loop = mock.Mock(
return_value=True
)
self.raid = RaidDevice(storage_device)
@raises(KiwiRaidSetupError)
def test_create_degraded_raid_invalid_level(self):
self.raid.create_degraded_raid('bogus-level')
@raises(KiwiRaidSetupError)
@patch('os.path.exists')
def test_create_degraded_raid_no_free_device(self, mock_path):
mock_path.return_value = True
self.raid.create_degraded_raid('mirroring')
@patch('os.path.exists')
def test_get_device(self, mock_path):
mock_path.return_value = True
self.raid.raid_device = '/dev/md0'
assert self.raid.get_device().get_device() == '/dev/md0'
self.raid.raid_device = None
@patch('kiwi.storage.raid_device.Command.run')
@patch('os.path.exists')
def test_create_degraded_raid(self, mock_path, mock_command):
mock_path.return_value = False
self.raid.create_degraded_raid('mirroring')
mock_command.assert_called_once_with(
[
'mdadm', '--create', '--run', '/dev/md0',
'--level', '1', '--raid-disks', '2',
'/dev/some-device', 'missing'
]
)
self.raid.raid_device = None
@patch('kiwi.storage.raid_device.Command.run')
@patch('builtins.open')
def test_create_raid_config(self, mock_open, mock_command):
self.raid.raid_device = '/dev/md0'
command_call = mock.Mock()
command_call.output = 'data'
mock_command.return_value = command_call
context_manager_mock = mock.Mock()
mock_open.return_value = context_manager_mock
file_mock = mock.Mock()
enter_mock = mock.Mock()
exit_mock = mock.Mock()
enter_mock.return_value = file_mock
setattr(context_manager_mock, '__enter__', enter_mock)
setattr(context_manager_mock, '__exit__', exit_mock)
self.raid.create_raid_config('mdadm.conf')
mock_command.assert_called_once_with(
['mdadm', '-Db', '/dev/md0']
)
file_mock.write.assert_called_once_with('data')
self.raid.raid_device = None
def test_is_loop(self):
assert self.raid.is_loop() is True
@patch('kiwi.storage.raid_device.Command.run')
@patch('kiwi.storage.raid_device.log.warning')
def test_destructor(self, mock_log_warn, mock_command):
self.raid.raid_device = '/dev/md0'
mock_command.side_effect = Exception
self.raid.__del__()
mock_command.assert_called_once_with(
['mdadm', '--stop', '/dev/md0']
)
assert mock_log_warn.called
self.raid.raid_device = None