Skip to content
This repository has been archived by the owner on Oct 31, 2023. It is now read-only.

Commit

Permalink
Disabled virtualization check on Linux (#3949)
Browse files Browse the repository at this point in the history
  • Loading branch information
kmazurek authored Mar 6, 2019
1 parent 3997b36 commit 7db8b63
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 12 deletions.
16 changes: 10 additions & 6 deletions golem/core/virtualization.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from cpuinfo import get_cpu_info

from golem.core.common import get_golem_path, is_windows
from golem.core.common import get_golem_path, is_linux, is_windows
from golem.core.windows import run_powershell
from golem.rpc import utils as rpc_utils

Expand All @@ -15,13 +15,17 @@


@rpc_utils.expose('env.hw.virtualization')
def is_virtualization_enabled() -> bool:
def is_virtualization_satisfied() -> bool:
""" Checks if hardware virtualization is available on this machine.
Currently, this check is limited to Intel CPUs (VT and VT-x support).
:return bool: True if virtualization is available. On Windows, we also check
if the feature is enabled in firmware.
If hardware virtualization is not required to run Golem (e.g. on Linux),
the actual check is skipped. Currently, this function is limited to Intel
CPUs (VT and VT-x support).
:return bool: True if virtualization is available or is not required.
On Windows, we additionally check if the feature is enabled in firmware.
"""
if is_windows():
if is_linux():
return True
elif is_windows():
return _check_vt_windows()

return _check_vt_unix()
Expand Down
22 changes: 16 additions & 6 deletions tests/golem/core/test_virtualization.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
from unittest import TestCase
from unittest.mock import patch

from golem.core.virtualization import is_virtualization_enabled, WIN_SCRIPT_PATH
from golem.core.virtualization import is_virtualization_satisfied,\
WIN_SCRIPT_PATH


def get_mock_cpuinfo_output(vt_supported=True) -> dict:
Expand All @@ -17,32 +18,41 @@ def get_mock_cpuinfo_output(vt_supported=True) -> dict:
}


@patch('golem.core.virtualization.is_linux', side_effect=lambda: True)
class VirtualizationTestLinux(TestCase):

def test_vt_enabled(self, *_):
self.assertTrue(is_virtualization_satisfied())


@patch('golem.core.virtualization.is_linux', side_effect=lambda: False)
@patch('golem.core.virtualization.is_windows', side_effect=lambda: False)
class VirtualizationTestUnix(TestCase):
class VirtualizationTestOsx(TestCase):

@patch('golem.core.virtualization.get_cpu_info',
return_value=get_mock_cpuinfo_output())
def test_vt_enabled(self, *_):
self.assertTrue(is_virtualization_enabled())
self.assertTrue(is_virtualization_satisfied())

@patch('golem.core.virtualization.get_cpu_info',
return_value=get_mock_cpuinfo_output(vt_supported=False))
def test_vt_unsupported(self, *_):
self.assertFalse(is_virtualization_enabled())
self.assertFalse(is_virtualization_satisfied())


@patch('golem.core.virtualization.is_linux', side_effect=lambda: False)
@patch('golem.core.virtualization.is_windows', side_effect=lambda: True)
class VirtualizationTestWindows(TestCase):

@patch('golem.core.virtualization.run_powershell',
return_value='True')
def test_vt_enabled(self, *_):
self.assertTrue(is_virtualization_enabled())
self.assertTrue(is_virtualization_satisfied())

@patch('golem.core.virtualization.run_powershell',
return_value='False')
def test_vt_disabled(self, *_):
self.assertFalse(is_virtualization_enabled())
self.assertFalse(is_virtualization_satisfied())

def test_script_path(self, *_):
self.assertTrue(Path(WIN_SCRIPT_PATH).exists())

0 comments on commit 7db8b63

Please # to comment.