-
Notifications
You must be signed in to change notification settings - Fork 199
/
Copy pathtest_qemudriver.py
92 lines (76 loc) · 2.21 KB
/
test_qemudriver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import pytest
from labgrid.driver import QEMUDriver
from labgrid import Environment
@pytest.fixture
def qemu_env(tmpdir):
p = tmpdir.join("config.yaml")
p.write(
"""
targets:
main:
role: foo
images:
kernel: "test.zImage"
dtb: test.dtb"
tools:
qemu: "qemu-system-arm"
paths:
rootfs: "test/path"
"""
)
return Environment(str(p))
@pytest.fixture
def qemu_target(qemu_env):
return qemu_env.get_target()
@pytest.fixture
def qemu_driver(qemu_target):
q = QEMUDriver(
qemu_target,
"qemu",
qemu_bin="qemu",
machine='',
cpu='',
memory='',
boot_args='',
extra_args='',
kernel='kernel',
rootfs='rootfs')
return q
@pytest.fixture
def qemu_mock(mocker):
popen_mock = mocker.patch('subprocess.Popen')
popen_mock.return_value.wait.return_value = 0
popen_mock.return_value.stdout.readline.return_value = b"""
{
"QMP": {
"version": {}
},
"return": {}
}
"""
select_mock = mocker.patch('select.select')
select_mock.return_value = True, None, None
socket_mock = mocker.patch('socket.socket')
socket_mock.return_value.accept.return_value = mocker.MagicMock(), ''
@pytest.fixture
def qemu_version_mock(mocker):
run_mock = mocker.patch('subprocess.run')
run_mock.return_value.returncode = 0
run_mock.return_value.stdout = "QEMU emulator version 4.2.1"
def test_qemu_instance(qemu_target, qemu_driver):
assert (isinstance(qemu_driver, QEMUDriver))
def test_qemu_activate_deactivate(qemu_target, qemu_driver, qemu_version_mock):
qemu_target.activate(qemu_driver)
qemu_target.deactivate(qemu_driver)
def test_qemu_on_off(qemu_target, qemu_driver, qemu_mock, qemu_version_mock):
qemu_target.activate(qemu_driver)
qemu_driver.on()
qemu_driver.off()
qemu_target.deactivate(qemu_driver)
def test_qemu_read_write(qemu_target, qemu_driver, qemu_mock, qemu_version_mock):
qemu_target.activate(qemu_driver)
qemu_driver.on()
qemu_driver.read()
qemu_driver.read(max_size=10)
qemu_driver.write(b'abc')
qemu_target.deactivate(qemu_driver)