35
35
class TestApp (qubes .tests .vm .TestApp ):
36
36
def __init__ (self ):
37
37
super (TestApp , self ).__init__ ()
38
- self .qid_counter = 1
38
+ self .qid_counter = 0
39
39
40
40
def add_new_vm (self , cls , ** kwargs ):
41
41
qid = self .qid_counter
42
- self .qid_counter += 1
43
- vm = cls (self , None , qid = qid , ** kwargs )
42
+ if self .qid_counter == 0 :
43
+ self .qid_counter += 1
44
+ vm = cls (self , None , ** kwargs )
45
+ else :
46
+ self .qid_counter += 1
47
+ vm = cls (self , None , qid = qid , ** kwargs )
44
48
self .domains [vm .name ] = vm
45
49
self .domains [vm ] = vm
46
50
return vm
@@ -58,6 +62,8 @@ def setUp(self):
58
62
name = "linux-kernel"
59
63
)
60
64
self .app .vmm .offline_mode = True
65
+ self .app .default_dispvm = None
66
+ self .adminvm = self .app .add_new_vm (qubes .vm .adminvm .AdminVM )
61
67
self .template = self .app .add_new_vm (
62
68
qubes .vm .templatevm .TemplateVM , name = "test-template" , label = "red"
63
69
)
@@ -68,8 +74,12 @@ def setUp(self):
68
74
template = self .template ,
69
75
label = "red" ,
70
76
)
71
- self .app .domains [self .appvm .name ] = self .appvm
72
- self .app .domains [self .appvm ] = self .appvm
77
+ self .appvm_alt = self .app .add_new_vm (
78
+ qubes .vm .appvm .AppVM ,
79
+ name = "test-vm-alt" ,
80
+ template = self .template ,
81
+ label = "red" ,
82
+ )
73
83
self .addCleanup (self .cleanup_dispvm )
74
84
self .emitter = qubes .tests .TestEmitter ()
75
85
@@ -83,10 +93,15 @@ def cleanup_dispvm(self):
83
93
del self .dispvm
84
94
self .template .close ()
85
95
self .appvm .close ()
86
- del self .template
96
+ self .appvm_alt . close ()
87
97
del self .appvm
98
+ del self .appvm_alt
99
+ del self .template
100
+ del self .adminvm
101
+ self .app .close ()
88
102
self .app .domains .clear ()
89
103
self .app .pools .clear ()
104
+ del self .app
90
105
91
106
async def mock_coro (self , * args , ** kwargs ):
92
107
pass
@@ -275,6 +290,49 @@ def test_000_from_appvm_preload_fill_gap(
275
290
mock_symlink .assert_not_called ()
276
291
mock_makedirs .assert_called_once ()
277
292
293
+ def test_000_get_preload_max (self ):
294
+ self .assertEqual (qubes .vm .dispvm .get_preload_max (self .appvm ), None )
295
+ self .appvm .features ["supported-rpc.qubes.WaitForRunningSystem" ] = True
296
+ self .appvm .features ["preload-dispvm-max" ] = 1
297
+ self .assertEqual (qubes .vm .dispvm .get_preload_max (self .appvm ), 1 )
298
+ self .assertEqual (qubes .vm .dispvm .get_preload_max (self .adminvm ), None )
299
+ self .adminvm .features ["preload-dispvm-max" ] = ""
300
+ self .assertEqual (qubes .vm .dispvm .get_preload_max (self .adminvm ), "" )
301
+ self .adminvm .features ["preload-dispvm-max" ] = 2
302
+ self .assertEqual (qubes .vm .dispvm .get_preload_max (self .adminvm ), 2 )
303
+
304
+ def test_000_get_preload_templates (self ):
305
+ get_preload_templates = qubes .vm .dispvm .get_preload_templates
306
+ self .assertEqual (get_preload_templates (self .app ), [])
307
+ self .appvm .template_for_dispvms = True
308
+ self .appvm_alt .template_for_dispvms = True
309
+ self .assertEqual (get_preload_templates (self .app ), [])
310
+
311
+ self .appvm .features ["supported-rpc.qubes.WaitForRunningSystem" ] = True
312
+ self .appvm_alt .features ["supported-rpc.qubes.WaitForRunningSystem" ] = (
313
+ True
314
+ )
315
+ self .appvm .features ["preload-dispvm-max" ] = 1
316
+ self .appvm_alt .features ["preload-dispvm-max" ] = 0
317
+ self .assertEqual (get_preload_templates (self .app ), [self .appvm ])
318
+
319
+ self .adminvm .features ["preload-dispvm-max" ] = ""
320
+ # Still not default_dispvm
321
+ self .appvm_alt .features ["preload-dispvm-max" ] = 1
322
+ self .assertEqual (
323
+ get_preload_templates (self .app ), [self .appvm , self .appvm_alt ]
324
+ )
325
+
326
+ with mock .patch .object (self .appvm , "fire_event_async" ):
327
+ self .app .default_dispvm = self .appvm
328
+ self .assertEqual (get_preload_templates (self .app ), [self .appvm_alt ])
329
+
330
+ self .app .default_dispvm = None
331
+ self .adminvm .features ["preload-dispvm-max" ] = 1
332
+ self .assertEqual (
333
+ get_preload_templates (self .app ), [self .appvm , self .appvm_alt ]
334
+ )
335
+
278
336
def test_001_from_appvm_reject_not_allowed (self ):
279
337
with self .assertRaises (qubes .exc .QubesException ):
280
338
dispvm = self .loop .run_until_complete (
0 commit comments