@@ -250,3 +250,172 @@ def test_023_revert_specific(self):
250
250
['revert' , 'testvm:private' , '20050101' ],
251
251
app = self .app ))
252
252
self .assertAllCalled ()
253
+
254
+ def test_030_set_revisions_to_keep (self ):
255
+ self .app .expected_calls [('dom0' , 'admin.vm.List' , None , None )] = \
256
+ b'0\x00 testvm class=AppVM state=Running\n '
257
+ self .app .expected_calls [
258
+ ('testvm' , 'admin.vm.volume.List' , None , None )] = \
259
+ b'0\x00 root\n private\n '
260
+ self .app .expected_calls [
261
+ ('testvm' , 'admin.vm.volume.Set.revisions_to_keep' , 'private' ,
262
+ b'3' )] = b'0\x00 '
263
+ self .assertEqual (0 ,
264
+ qubesadmin .tools .qvm_volume .main (
265
+ ['set' , 'testvm:private' , 'revisions_to_keep' , '3' ],
266
+ app = self .app ))
267
+ self .assertAllCalled ()
268
+
269
+ def test_031_set_rw (self ):
270
+ self .app .expected_calls [('dom0' , 'admin.vm.List' , None , None )] = \
271
+ b'0\x00 testvm class=AppVM state=Running\n '
272
+ self .app .expected_calls [
273
+ ('testvm' , 'admin.vm.volume.List' , None , None )] = \
274
+ b'0\x00 root\n private\n '
275
+ self .app .expected_calls [
276
+ ('testvm' , 'admin.vm.volume.Set.rw' , 'private' ,
277
+ b'True' )] = b'0\x00 '
278
+ self .assertEqual (0 ,
279
+ qubesadmin .tools .qvm_volume .main (
280
+ ['set' , 'testvm:private' , 'rw' , 'True' ],
281
+ app = self .app ))
282
+ self .assertAllCalled ()
283
+
284
+ def test_032_set_invalid (self ):
285
+ self .app .expected_calls [('dom0' , 'admin.vm.List' , None , None )] = \
286
+ b'0\x00 testvm class=AppVM state=Running\n '
287
+ self .app .expected_calls [
288
+ ('testvm' , 'admin.vm.volume.List' , None , None )] = \
289
+ b'0\x00 root\n private\n '
290
+ self .assertNotEqual (0 ,
291
+ qubesadmin .tools .qvm_volume .main (
292
+ ['set' , 'testvm:private' , 'invalid' , 'True' ],
293
+ app = self .app ))
294
+ self .assertAllCalled ()
295
+
296
+ def test_040_info (self ):
297
+ self .app .expected_calls [('dom0' , 'admin.vm.List' , None , None )] = \
298
+ b'0\x00 testvm class=AppVM state=Running\n '
299
+ self .app .expected_calls [
300
+ ('testvm' , 'admin.vm.volume.List' , None , None )] = \
301
+ b'0\x00 root\n private\n '
302
+ self .app .expected_calls [
303
+ ('testvm' , 'admin.vm.volume.Info' , 'private' , None )] = \
304
+ b'0\x00 pool=lvm\n ' \
305
+ b'vid=qubes_dom0/vm-testvm-private\n ' \
306
+ b'size=2147483648\n ' \
307
+ b'usage=10000000\n ' \
308
+ b'rw=True\n ' \
309
+ b'source=\n ' \
310
+ b'save_on_stop=True\n ' \
311
+ b'snap_on_start=False\n ' \
312
+ b'revisions_to_keep=3\n ' \
313
+ b'is_outdated=False\n '
314
+ self .app .expected_calls [
315
+ ('testvm' , 'admin.vm.volume.ListSnapshots' , 'private' , None )] = \
316
+ b'0\x00 200101010000\n 200201010000\n 200301010000\n '
317
+ with qubesadmin .tests .tools .StdoutBuffer () as stdout :
318
+ self .assertEqual (0 ,
319
+ qubesadmin .tools .qvm_volume .main (['info' , 'testvm:private' ],
320
+ app = self .app ))
321
+ self .assertEqual (stdout .getvalue (),
322
+ 'pool lvm\n '
323
+ 'vid qubes_dom0/vm-testvm-private\n '
324
+ 'rw True\n '
325
+ 'source \n '
326
+ 'save_on_stop True\n '
327
+ 'snap_on_start False\n '
328
+ 'size 2147483648\n '
329
+ 'usage 10000000\n '
330
+ 'revisions_to_keep 3\n '
331
+ 'is_outdated False\n '
332
+ 'Available revisions (for revert):\n '
333
+ ' 200101010000\n '
334
+ ' 200201010000\n '
335
+ ' 200301010000\n ' )
336
+ self .assertAllCalled ()
337
+
338
+ def test_041_info_no_revisions (self ):
339
+ self .app .expected_calls [('dom0' , 'admin.vm.List' , None , None )] = \
340
+ b'0\x00 testvm class=AppVM state=Running\n '
341
+ self .app .expected_calls [
342
+ ('testvm' , 'admin.vm.volume.List' , None , None )] = \
343
+ b'0\x00 root\n private\n '
344
+ self .app .expected_calls [
345
+ ('testvm' , 'admin.vm.volume.Info' , 'root' , None )] = \
346
+ b'0\x00 pool=lvm\n ' \
347
+ b'vid=qubes_dom0/vm-testvm-root\n ' \
348
+ b'size=2147483648\n ' \
349
+ b'usage=10000000\n ' \
350
+ b'rw=True\n ' \
351
+ b'source=qubes_dom0/vm-fedora-26-root\n ' \
352
+ b'save_on_stop=False\n ' \
353
+ b'snap_on_start=True\n ' \
354
+ b'revisions_to_keep=0\n ' \
355
+ b'is_outdated=False\n '
356
+ self .app .expected_calls [
357
+ ('testvm' , 'admin.vm.volume.ListSnapshots' , 'root' , None )] = \
358
+ b'0\x00 '
359
+ with qubesadmin .tests .tools .StdoutBuffer () as stdout :
360
+ self .assertEqual (0 ,
361
+ qubesadmin .tools .qvm_volume .main (['info' , 'testvm:root' ],
362
+ app = self .app ))
363
+ self .assertEqual (stdout .getvalue (),
364
+ 'pool lvm\n '
365
+ 'vid qubes_dom0/vm-testvm-root\n '
366
+ 'rw True\n '
367
+ 'source qubes_dom0/vm-fedora-26-root\n '
368
+ 'save_on_stop False\n '
369
+ 'snap_on_start True\n '
370
+ 'size 2147483648\n '
371
+ 'usage 10000000\n '
372
+ 'revisions_to_keep 0\n '
373
+ 'is_outdated False\n '
374
+ 'Available revisions (for revert): none\n ' )
375
+ self .assertAllCalled ()
376
+
377
+ def test_042_info_single_prop (self ):
378
+ self .app .expected_calls [('dom0' , 'admin.vm.List' , None , None )] = \
379
+ b'0\x00 testvm class=AppVM state=Running\n '
380
+ self .app .expected_calls [
381
+ ('testvm' , 'admin.vm.volume.List' , None , None )] = \
382
+ b'0\x00 root\n private\n '
383
+ self .app .expected_calls [
384
+ ('testvm' , 'admin.vm.volume.Info' , 'root' , None )] = \
385
+ b'0\x00 pool=lvm\n ' \
386
+ b'vid=qubes_dom0/vm-testvm-root\n ' \
387
+ b'size=2147483648\n ' \
388
+ b'usage=10000000\n ' \
389
+ b'rw=True\n ' \
390
+ b'source=qubes_dom0/vm-fedora-26-root\n ' \
391
+ b'save_on_stop=False\n ' \
392
+ b'snap_on_start=True\n ' \
393
+ b'revisions_to_keep=0\n ' \
394
+ b'is_outdated=False\n '
395
+ with qubesadmin .tests .tools .StdoutBuffer () as stdout :
396
+ self .assertEqual (0 ,
397
+ qubesadmin .tools .qvm_volume .main (
398
+ ['info' , 'testvm:root' , 'usage' ],
399
+ app = self .app ))
400
+ self .assertEqual (stdout .getvalue (), '10000000\n ' )
401
+ self .assertAllCalled ()
402
+
403
+ def test_043_info_revisions_only (self ):
404
+ self .app .expected_calls [('dom0' , 'admin.vm.List' , None , None )] = \
405
+ b'0\x00 testvm class=AppVM state=Running\n '
406
+ self .app .expected_calls [
407
+ ('testvm' , 'admin.vm.volume.List' , None , None )] = \
408
+ b'0\x00 root\n private\n '
409
+ self .app .expected_calls [
410
+ ('testvm' , 'admin.vm.volume.ListSnapshots' , 'private' , None )] = \
411
+ b'0\x00 200101010000\n 200201010000\n 200301010000\n '
412
+ with qubesadmin .tests .tools .StdoutBuffer () as stdout :
413
+ self .assertEqual (0 ,
414
+ qubesadmin .tools .qvm_volume .main (
415
+ ['info' , 'testvm:private' , 'revisions' ],
416
+ app = self .app ))
417
+ self .assertEqual (stdout .getvalue (),
418
+ '200101010000\n '
419
+ '200201010000\n '
420
+ '200301010000\n ' )
421
+ self .assertAllCalled ()
0 commit comments