Skip to content

Commit f5d096f

Browse files
committed
Ensure that test are run inside their own directory
1 parent 9b47643 commit f5d096f

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

tests/supervisor/test_qemu_instance.py

+32-4
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,12 +54,25 @@ 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+
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")
73+
74+
# Patch journal.stream so the output of qemu proecss is shown in the test output
75+
mocker.patch("aleph.vm.hypervisors.qemu.qemuvm.journal.stream", return_value=None)
6276

6377
# Patch journal.stream so the output of qemu proecss is shown in the test output
6478
mocker.patch("aleph.vm.hypervisors.qemu.qemuvm.journal.stream", return_value=None)
@@ -69,10 +83,12 @@ async def test_create_qemu_instance(mocker):
6983
)
7084

7185
logging.basicConfig(level=logging.DEBUG)
72-
86+
logger = logging.getLogger(__name__)
7387
# Ensure that the settings are correct and required files present.
7488
settings.setup()
7589
settings.check()
90+
logger.info(settings.EXECUTION_ROOT)
91+
logger.info(settings.PERSISTENT_VOLUMES_DIR)
7692

7793
# The database is required for the metrics and is currently not optional.
7894
engine = metrics.setup_engine()
@@ -121,10 +137,20 @@ async def test_create_qemu_instance_online(mocker):
121137
mocker.patch.object(settings, "ALLOW_VM_NETWORKING", True)
122138
mocker.patch.object(settings, "USE_FAKE_INSTANCE_BASE", True)
123139
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)
140+
mocker.patch.object(settings, "FAKE_INSTANCE_BASE", settings.FAKE_QEMU_INSTANCE_BASE)
125141
mocker.patch.object(settings, "ENABLE_CONFIDENTIAL_COMPUTING", False)
126142
mocker.patch.object(settings, "USE_JAILER", False)
127143

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

@@ -134,10 +160,12 @@ async def test_create_qemu_instance_online(mocker):
134160
settings.FAKE_QEMU_INSTANCE_BASE
135161
)
136162
)
163+
logger = logging.getLogger(__name__)
137164
# Ensure that the settings are correct and required files present.
138165
settings.setup()
139166
settings.check()
140-
167+
logger.info(settings.EXECUTION_ROOT)
168+
logger.info(settings.PERSISTENT_VOLUMES_DIR)
141169
# The database is required for the metrics and is currently not optional.
142170
engine = metrics.setup_engine()
143171
await metrics.create_tables(engine)

0 commit comments

Comments
 (0)