11import  asyncio 
22import  logging 
3+ import  tempfile 
34from  asyncio .subprocess  import  Process 
45from  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 }  
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