@@ -241,6 +241,9 @@ def _networking_paused_from_none_to_existent(
241241 self .assertEqual (
242242 self .testvm1 .features .get ("deferred-netvm-original" , None ), ""
243243 )
244+ self .assertIsNone (
245+ self .testvm1 .features .get ("deferred-netvm-force" , None )
246+ )
244247 self .loop .run_until_complete (self .testvm1 .unpause ())
245248 self ._run_cmd_and_log_output (self .testvm1 , ip_deadline )
246249 self ._run_cmd_and_log_output (self .testvm1 , name_deadline )
@@ -254,8 +257,11 @@ def _networking_paused_from_none_to_existent(
254257 0 ,
255258 "Ping by name on " + test + " failed" ,
256259 )
257- self .assertEqual (
258- self .testvm1 .features .get ("deferred-netvm-original" , None ), None
260+ self .assertIsNone (
261+ self .testvm1 .features .get ("deferred-netvm-original" , None )
262+ )
263+ self .assertIsNone (
264+ self .testvm1 .features .get ("deferred-netvm-force" , None )
259265 )
260266 self .shutdown_and_wait (self .testvm1 )
261267
@@ -273,6 +279,9 @@ def _networking_paused_from_existent_to_none(
273279 self .testvm1 .features .get ("deferred-netvm-original" , None ),
274280 self .testnetvm .name ,
275281 )
282+ self .assertIsNone (
283+ self .testvm1 .features .get ("deferred-netvm-force" , None )
284+ )
276285 self .loop .run_until_complete (self .testvm1 .unpause ())
277286 self .assertNotEqual (
278287 self .run_cmd (self .testvm1 , ip ),
@@ -284,8 +293,11 @@ def _networking_paused_from_existent_to_none(
284293 0 ,
285294 "Ping by name on " + test + " succeeded but should have failed" ,
286295 )
287- self .assertEqual (
288- self .testvm1 .features .get ("deferred-netvm-original" , None ), None
296+ self .assertIsNone (
297+ self .testvm1 .features .get ("deferred-netvm-original" , None )
298+ )
299+ self .assertIsNone (
300+ self .testvm1 .features .get ("deferred-netvm-force" , None )
289301 )
290302 self .shutdown_and_wait (self .testvm1 )
291303
@@ -303,6 +315,9 @@ def _networking_paused_change_shutdown_old(
303315 self .testvm1 .features .get ("deferred-netvm-original" , None ),
304316 self .testnetvm2 .name ,
305317 )
318+ self .assertIsNone (
319+ self .testvm1 .features .get ("deferred-netvm-force" , None )
320+ )
306321 self .shutdown_and_wait (self .testnetvm2 )
307322 self .loop .run_until_complete (self .testvm1 .unpause ())
308323 self ._run_cmd_and_log_output (self .testvm1 , ip_deadline )
@@ -317,8 +332,11 @@ def _networking_paused_change_shutdown_old(
317332 0 ,
318333 "Ping by name on " + test + " failed" ,
319334 )
320- self .assertEqual (
321- self .testvm1 .features .get ("deferred-netvm-original" , None ), None
335+ self .assertIsNone (
336+ self .testvm1 .features .get ("deferred-netvm-original" , None )
337+ )
338+ self .assertIsNone (
339+ self .testvm1 .features .get ("deferred-netvm-force" , None )
322340 )
323341 self .shutdown_and_wait (self .testvm1 )
324342
@@ -337,6 +355,9 @@ def _networking_paused_change_purge_old(
337355 self .testvm1 .features .get ("deferred-netvm-original" , None ),
338356 self .testnetvm2 .name ,
339357 )
358+ self .assertIsNone (
359+ self .testvm1 .features .get ("deferred-netvm-force" , None )
360+ )
340361 self .loop .run_until_complete (self .testnetvm2 .kill ())
341362 del self .app .domains [self .testnetvm2 ]
342363 self .loop .run_until_complete (self .testnetvm2 .remove_from_disk ())
@@ -355,8 +376,84 @@ def _networking_paused_change_purge_old(
355376 0 ,
356377 "Ping by name on " + test + " failed" ,
357378 )
379+ self .assertIsNone (
380+ self .testvm1 .features .get ("deferred-netvm-original" , None )
381+ )
382+ self .assertIsNone (
383+ self .testvm1 .features .get ("deferred-netvm-force" , None )
384+ )
385+ self .shutdown_and_wait (self .testvm1 )
386+
387+ def _networking_paused_restart_netvm (
388+ self , ip , name , ip_deadline , name_deadline
389+ ):
390+ test = "restart netvm and unpause client"
391+ self .log .critical (test )
392+ print (test )
393+ self .testvm1 .netvm = self .testnetvm
394+ self .loop .run_until_complete (self .start_vm (self .testvm1 ))
395+ self .loop .run_until_complete (self .testvm1 .pause ())
396+ self .shutdown_and_wait (self .testnetvm , force = True )
397+ self .assertEqual (
398+ self .testvm1 .features .get ("deferred-netvm-original" , None ),
399+ self .testnetvm .name ,
400+ )
401+ self .assertTrue (self .testvm1 .features .get ("deferred-netvm-force" , None ))
402+ self .loop .run_until_complete (self .start_vm (self .testnetvm ))
403+ self .loop .run_until_complete (self .testvm1 .unpause ())
404+ self ._run_cmd_and_log_output (self .testvm1 , ip_deadline )
405+ self ._run_cmd_and_log_output (self .testvm1 , name_deadline )
406+ self .assertEqual (
407+ self .run_cmd (self .testvm1 , ip ),
408+ 0 ,
409+ "Ping by IP on " + test + " failed" ,
410+ )
411+ self .assertEqual (
412+ self .run_cmd (self .testvm1 , name ),
413+ 0 ,
414+ "Ping by name on " + test + " failed" ,
415+ )
416+ self .assertIsNone (
417+ self .testvm1 .features .get ("deferred-netvm-original" , None )
418+ )
419+ self .assertIsNone (
420+ self .testvm1 .features .get ("deferred-netvm-force" , None )
421+ )
422+ self .shutdown_and_wait (self .testvm1 )
423+
424+ def _networking_paused_shutdown_netvm (
425+ self , ip , name , ip_deadline , name_deadline
426+ ):
427+ test = "shutdown netvm and unpause client"
428+ self .log .critical (test )
429+ print (test )
430+ self .testvm1 .netvm = self .testnetvm
431+ self .loop .run_until_complete (self .start_vm (self .testvm1 ))
432+ self .loop .run_until_complete (self .testvm1 .pause ())
433+ self .shutdown_and_wait (self .testnetvm , force = True )
434+ self .assertEqual (
435+ self .testvm1 .features .get ("deferred-netvm-original" , None ),
436+ self .testnetvm .name ,
437+ )
438+ self .assertTrue (self .testvm1 .features .get ("deferred-netvm-force" , None ))
439+ self .loop .run_until_complete (self .testvm1 .unpause ())
440+ self ._run_cmd_and_log_output (self .testvm1 , ip_deadline )
441+ self ._run_cmd_and_log_output (self .testvm1 , name_deadline )
442+ self .assertEqual (
443+ self .run_cmd (self .testvm1 , ip ),
444+ 0 ,
445+ "Ping by IP on " + test + " failed" ,
446+ )
358447 self .assertEqual (
359- self .testvm1 .features .get ("deferred-netvm-original" , None ), None
448+ self .run_cmd (self .testvm1 , name ),
449+ 0 ,
450+ "Ping by name on " + test + " failed" ,
451+ )
452+ self .assertIsNone (
453+ self .testvm1 .features .get ("deferred-netvm-original" , None )
454+ )
455+ self .assertIsNone (
456+ self .testvm1 .features .get ("deferred-netvm-force" , None )
360457 )
361458 self .shutdown_and_wait (self .testvm1 )
362459
@@ -406,6 +503,28 @@ def test_001_simple_networking_paused_change_purge_old(self):
406503 self .ping_deadline_name ,
407504 )
408505
506+ def test_001_simple_networking_paused_restart_netvm (self ):
507+ """
508+ :type self: qubes.tests.SystemTestCase | VmNetworkingMixin
509+ """
510+ self ._networking_paused_restart_netvm (
511+ self .ping_ip ,
512+ self .ping_name ,
513+ self .ping_deadline_ip ,
514+ self .ping_deadline_name ,
515+ )
516+
517+ def test_001_simple_networking_paused_shutdown_netvm (self ):
518+ """
519+ :type self: qubes.tests.SystemTestCase | VmNetworkingMixin
520+ """
521+ self ._networking_paused_shutdown_netvm (
522+ self .ping_ip ,
523+ self .ping_name ,
524+ self .ping_deadline_ip ,
525+ self .ping_deadline_name ,
526+ )
527+
409528 def test_010_simple_proxyvm (self ):
410529 """
411530 :type self: qubes.tests.SystemTestCase | VmNetworkingMixin
0 commit comments