80 lines
3.0 KiB
Python
80 lines
3.0 KiB
Python
import unittest
|
|
|
|
import mock
|
|
import os
|
|
import sys
|
|
|
|
from init.questions import NovaHypervisor
|
|
|
|
sys.path.append(os.getcwd()) # noqa
|
|
|
|
|
|
class TestNovaHypervisor(unittest.TestCase):
|
|
|
|
@mock.patch('os.path.exists', return_value=False)
|
|
def test_is_kvm_api_available_no_kvm_char_file(self, mock_exists):
|
|
self.assertFalse(NovaHypervisor._is_kvm_api_available())
|
|
|
|
@mock.patch('os.access', side_effect=(
|
|
lambda p, m: False if p == '/dev/kvm' else True))
|
|
@mock.patch('os.path.exists', return_value=True)
|
|
def test_is_kvm_api_available_inaccessible_kvm_char_file(
|
|
self, mock_exists, mock_access):
|
|
self.assertFalse(NovaHypervisor._is_kvm_api_available())
|
|
|
|
@mock.patch('stat.S_ISCHR', side_effect=lambda m: False)
|
|
@mock.patch('os.stat')
|
|
@mock.patch('os.access', return_value=True)
|
|
@mock.patch('os.path.exists', return_value=True)
|
|
def test_is_kvm_api_available_kvm_file_is_not_char_file(
|
|
self, mock_exists, mock_access, mock_stat, mock_ischr):
|
|
self.assertFalse(NovaHypervisor._is_kvm_api_available())
|
|
|
|
@mock.patch('os.minor')
|
|
@mock.patch('os.major')
|
|
@mock.patch('stat.S_ISCHR', return_value=True)
|
|
@mock.patch('os.stat')
|
|
@mock.patch('os.access', return_value=True)
|
|
@mock.patch('os.path.exists', return_value=True)
|
|
def test_is_kvm_api_available_kvm_file_invalid_major_minor(
|
|
self, mock_exists, mock_access, mock_stat, mock_ischr,
|
|
invalid_major, invalid_minor):
|
|
self.assertFalse(NovaHypervisor._is_kvm_api_available())
|
|
|
|
@mock.patch('os.minor')
|
|
@mock.patch('os.major', return_value=42)
|
|
@mock.patch('stat.S_ISCHR', return_value=True)
|
|
@mock.patch('os.stat')
|
|
@mock.patch('os.access', return_value=True)
|
|
@mock.patch('os.path.exists', return_value=True)
|
|
def test_is_kvm_api_available_kvm_file_invalid_major(
|
|
self, mock_exists, mock_access, mock_stat, mock_ischr,
|
|
invalid_major, invalid_minor):
|
|
self.assertFalse(NovaHypervisor._is_kvm_api_available())
|
|
|
|
@mock.patch('os.minor', return_value=42)
|
|
@mock.patch('os.major', return_value=10)
|
|
@mock.patch('stat.S_ISCHR', return_value=True)
|
|
@mock.patch('os.stat')
|
|
@mock.patch('os.access', return_value=True)
|
|
@mock.patch('os.path.exists', return_value=True)
|
|
def test_is_kvm_api_available_kvm_file_invalid_minor(
|
|
self, mock_exists, mock_access, mock_stat, mock_ischr,
|
|
invalid_major, invalid_minor):
|
|
self.assertFalse(NovaHypervisor._is_kvm_api_available())
|
|
|
|
@mock.patch('os.minor', return_value=232)
|
|
@mock.patch('os.major', return_value=10)
|
|
@mock.patch('stat.S_ISCHR', return_value=True)
|
|
@mock.patch('os.stat')
|
|
@mock.patch('os.access', return_value=True)
|
|
@mock.patch('os.path.exists', return_value=True)
|
|
def test_is_kvm_api_available_ok(
|
|
self, mock_exists, mock_access, mock_stat, mock_ischr,
|
|
invalid_major, invalid_minor):
|
|
self.assertTrue(NovaHypervisor._is_kvm_api_available())
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|