microstack/tools/init/tests/test_questions.py

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()