mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.1 KiB
Python
84 lines
3.1 KiB
Python
# Copyright: Contributors to the Ansible project
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
|
|
from __future__ import annotations
|
|
|
|
import pathlib
|
|
|
|
from ansible.module_utils.facts.hardware import darwin
|
|
from ansible.module_utils.facts.sysctl import get_sysctl
|
|
import pytest
|
|
|
|
|
|
class TestDarwinHardwareFacts:
|
|
def _get_mock_sysctl_data(self):
|
|
fixtures = pathlib.Path(__file__).parent / "fixtures"
|
|
return (fixtures / "sysctl_darwin.txt").read_text()
|
|
|
|
@pytest.fixture()
|
|
def mocked_module(self, mocker, request):
|
|
request.cls.module = mocker.MagicMock()
|
|
request.cls.module.get_bin_path.return_value = "/usr/sbin/sysctl"
|
|
yield request.cls.module
|
|
|
|
def test_get_mac_facts(self, mocked_module):
|
|
mocked_module.run_command.return_value = (0, self._get_mock_sysctl_data(), "")
|
|
darwin_hardware = darwin.DarwinHardware(mocked_module)
|
|
darwin_hardware.sysctl = get_sysctl(
|
|
mocked_module, ["hw", "machdep", "kern", "hw.model"]
|
|
)
|
|
|
|
mac_facts = darwin_hardware.get_mac_facts()
|
|
expected_mac_facts = {
|
|
"model": "MacBookPro18,1",
|
|
"product_name": "MacBookPro18,1",
|
|
"osversion": "23E224",
|
|
"osrevision": "199506",
|
|
}
|
|
assert mac_facts == expected_mac_facts
|
|
|
|
def test_get_cpu_facts(self, mocked_module):
|
|
mocked_module.run_command.return_value = (0, self._get_mock_sysctl_data(), "")
|
|
darwin_hardware = darwin.DarwinHardware(mocked_module)
|
|
darwin_hardware.sysctl = get_sysctl(
|
|
mocked_module, ["hw", "machdep", "kern", "hw.model"]
|
|
)
|
|
|
|
cpu_facts = darwin_hardware.get_cpu_facts()
|
|
expected_cpu_facts = {
|
|
"processor": "Apple M1 Pro",
|
|
"processor_cores": "10",
|
|
"processor_vcpus": "10",
|
|
}
|
|
assert cpu_facts == expected_cpu_facts
|
|
|
|
def test_get_memory_facts(self, mocked_module):
|
|
fixtures = pathlib.Path(__file__).parent / "fixtures"
|
|
mocked_module.get_bin_path.side_effect = [
|
|
"/usr/sbin/sysctl",
|
|
"/usr/bin/vm_stat",
|
|
]
|
|
mocked_vm_stat = (fixtures / "vm_stat_darwin.txt").read_text()
|
|
mocked_module.run_command.side_effect = [
|
|
(0, self._get_mock_sysctl_data(), ""),
|
|
(0, mocked_vm_stat, ""),
|
|
]
|
|
darwin_hardware = darwin.DarwinHardware(mocked_module)
|
|
darwin_hardware.sysctl = get_sysctl(
|
|
mocked_module, ["hw", "machdep", "kern", "hw.model"]
|
|
)
|
|
|
|
memory_facts = darwin_hardware.get_memory_facts()
|
|
expected_memory_facts = {"memtotal_mb": 32768, "memfree_mb": 26491}
|
|
assert memory_facts == expected_memory_facts
|
|
|
|
def test_get_uptime_facts(self, mocked_module):
|
|
darwin_hardware = darwin.DarwinHardware(mocked_module)
|
|
mocked_module.run_command.return_value = (
|
|
0,
|
|
b"\xc0\xa0\x05f\x00\x00\x00\x00\xac-\x05\x00\x00\x00\x00\x00",
|
|
"",
|
|
)
|
|
uptime_facts = darwin_hardware.get_uptime_facts()
|
|
assert "uptime_seconds" in uptime_facts
|