Skip to content

Commit ebef745

Browse files
committed
test: Ensure that test are run inside their own directory
1 parent a2329a6 commit ebef745

File tree

1 file changed

+35
-8
lines changed

1 file changed

+35
-8
lines changed

tests/supervisor/test_qemu_instance.py

+35-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import asyncio
22
import logging
3+
import tempfile
34
from asyncio.subprocess import Process
45
from pathlib import Path
56

@@ -53,14 +54,24 @@ async def test_create_qemu_instance(mocker):
5354
No network.
5455
We don't actually check that the system ping since there is no network
5556
"""
57+
original_linux_path = settings.LINUX_PATH
5658
mocker.patch.object(settings, "ALLOW_VM_NETWORKING", False)
5759
mocker.patch.object(settings, "USE_FAKE_INSTANCE_BASE", True)
5860
mocker.patch.object(settings, "FAKE_INSTANCE_MESSAGE", settings.FAKE_INSTANCE_QEMU_MESSAGE)
59-
mocker.patch.object(settings, "FAKE_INSTANCE_BASE", settings.FAKE_INSTANCE_QEMU_MESSAGE)
61+
mocker.patch.object(settings, "FAKE_INSTANCE_BASE", settings.FAKE_QEMU_INSTANCE_BASE)
6062
mocker.patch.object(settings, "ENABLE_CONFIDENTIAL_COMPUTING", False)
6163
mocker.patch.object(settings, "USE_JAILER", False)
64+
tmp_dir = tempfile.TemporaryDirectory(prefix="alephtest_")
65+
tmp_path = Path(tmp_dir.name)
66+
cache_root = tmp_path / "cache"
67+
exec_root = tmp_path / "exec"
68+
mocker.patch.object(settings, "CACHE_ROOT", cache_root)
69+
mocker.patch.object(settings, "EXECUTION_ROOT", exec_root)
70+
mocker.patch.object(settings, "PERSISTENT_VOLUMES_DIR", exec_root / "volumes" / "persistent")
71+
mocker.patch.object(settings, "JAILER_BASE_DIRECTORY", exec_root / "jailer")
72+
mocker.patch.object(settings, "EXECUTION_LOG_DIRECTORY", exec_root / "executions")
6273

63-
# Patch journal.stream so the output of qemu proecss is shown in the test output
74+
# Patch journal.stream so the output of qemu process is shown in the test output
6475
mocker.patch("aleph.vm.hypervisors.qemu.qemuvm.journal.stream", return_value=None)
6576

6677
if not settings.FAKE_INSTANCE_BASE.exists():
@@ -69,10 +80,12 @@ async def test_create_qemu_instance(mocker):
6980
)
7081

7182
logging.basicConfig(level=logging.DEBUG)
72-
83+
logger = logging.getLogger(__name__)
7384
# Ensure that the settings are correct and required files present.
7485
settings.setup()
7586
settings.check()
87+
logger.info(settings.EXECUTION_ROOT)
88+
logger.info(settings.PERSISTENT_VOLUMES_DIR)
7689

7790
# The database is required for the metrics and is currently not optional.
7891
engine = metrics.setup_engine()
@@ -110,6 +123,7 @@ async def test_create_qemu_instance(mocker):
110123
await qemu_execution.qemu_process.wait()
111124
assert qemu_execution.qemu_process.returncode is not None
112125
await execution.stop()
126+
settings.LINUX_PATH = original_linux_path
113127

114128

115129
@pytest.mark.asyncio
@@ -118,26 +132,37 @@ async def test_create_qemu_instance_online(mocker):
118132
Create an instance and check that it start / init / stop properly.
119133
With network, wait for ping
120134
"""
135+
original_linux_path = settings.LINUX_PATH
121136
mocker.patch.object(settings, "ALLOW_VM_NETWORKING", True)
122137
mocker.patch.object(settings, "USE_FAKE_INSTANCE_BASE", True)
123138
mocker.patch.object(settings, "FAKE_INSTANCE_MESSAGE", settings.FAKE_INSTANCE_QEMU_MESSAGE)
124-
mocker.patch.object(settings, "FAKE_INSTANCE_BASE", settings.FAKE_INSTANCE_QEMU_MESSAGE)
139+
mocker.patch.object(settings, "FAKE_INSTANCE_BASE", settings.FAKE_QEMU_INSTANCE_BASE)
125140
mocker.patch.object(settings, "ENABLE_CONFIDENTIAL_COMPUTING", False)
126141
mocker.patch.object(settings, "USE_JAILER", False)
127142

143+
tmp_dir = tempfile.TemporaryDirectory(prefix="alephtest_")
144+
tmp_path = Path(tmp_dir.name)
145+
cache_root = tmp_path / "cache"
146+
exec_root = tmp_path / "exec"
147+
mocker.patch.object(settings, "CACHE_ROOT", cache_root)
148+
mocker.patch.object(settings, "EXECUTION_ROOT", exec_root)
149+
mocker.patch.object(settings, "PERSISTENT_VOLUMES_DIR", exec_root / "volumes" / "persistent")
150+
mocker.patch.object(settings, "JAILER_BASE_DIRECTORY", exec_root / "jailer")
151+
mocker.patch.object(settings, "EXECUTION_LOG_DIRECTORY", exec_root / "executions")
152+
128153
# Patch journal.stream so the output of qemu process is shown in the test output
129154
mocker.patch("aleph.vm.hypervisors.qemu.qemuvm.journal.stream", return_value=None)
130155

131156
if not settings.FAKE_INSTANCE_BASE.exists():
132157
pytest.xfail(
133-
"Test instance disk {} not setup. run `cd runtimes/instance-rootfs && sudo ./create-debian-12-qemu-disk.sh` ".format(
134-
settings.FAKE_QEMU_INSTANCE_BASE
135-
)
158+
f"Test instance disk {settings.FAKE_QEMU_INSTANCE_BASE} not setup. run `cd runtimes/instance-rootfs && sudo ./create-debian-12-qemu-disk.sh` "
136159
)
160+
logger = logging.getLogger(__name__)
137161
# Ensure that the settings are correct and required files present.
138162
settings.setup()
139163
settings.check()
140-
164+
logger.info(settings.EXECUTION_ROOT)
165+
logger.info(settings.PERSISTENT_VOLUMES_DIR)
141166
# The database is required for the metrics and is currently not optional.
142167
engine = metrics.setup_engine()
143168
await metrics.create_tables(engine)
@@ -192,3 +217,5 @@ async def test_create_qemu_instance_online(mocker):
192217
qemu_execution, process = await mock_systemd_manager.stop_and_disable(execution.vm_hash)
193218
await execution.stop()
194219
assert qemu_execution is None
220+
221+
settings.LINUX_PATH = original_linux_path

0 commit comments

Comments
 (0)