- Timestamp:
- Jun 30, 2016 9:33:48 AM (9 years ago)
- svn:sync-xref-src-repo-rev:
- 108394
- Location:
- trunk/src/VBox/ValidationKit/testdriver
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/ValidationKit/testdriver/vbox.py
r61950 r61951 2649 2649 # Check if the VM has terminated by it self before powering it off. 2650 2650 fClose = True; 2651 fRc = oSession.pollTask();2652 if fRc is not True:2651 fRc = True; 2652 if oSession.needsPoweringOff(): 2653 2653 reporter.log('terminateVmBySession: powering off "%s"...' % (oSession.sName,)); 2654 2654 fRc = oSession.powerOff(fFudgeOnFailure = False); 2655 if fRc is not True: 2656 # power off failed, try terminate it in a nice manner. 2657 fRc = False; 2658 uPid = oSession.getPid(); 2659 if uPid is not None: 2660 reporter.error('terminateVmBySession: Terminating PID %u (VM %s)' % (uPid, oSession.sName)); 2661 fClose = base.processTerminate(uPid); 2662 if fClose is True: 2663 self.waitOnDirectSessionClose(oSession.oVM, 5000); 2664 fClose = oSession.waitForTask(1000); 2665 2666 if fClose is not True: 2667 # Being nice failed... 2668 reporter.error('terminateVmBySession: Termination failed, trying to kill PID %u (VM %s) instead' \ 2669 % (uPid, oSession.sName)); 2670 fClose = base.processKill(uPid); 2655 if fRc is not True: 2656 # power off failed, try terminate it in a nice manner. 2657 fRc = False; 2658 uPid = oSession.getPid(); 2659 if uPid is not None: 2660 reporter.error('terminateVmBySession: Terminating PID %u (VM %s)' % (uPid, oSession.sName)); 2661 fClose = base.processTerminate(uPid); 2671 2662 if fClose is True: 2672 2663 self.waitOnDirectSessionClose(oSession.oVM, 5000); 2673 2664 fClose = oSession.waitForTask(1000); 2665 2674 2666 if fClose is not True: 2675 reporter.error('terminateVmBySession: Failed to kill PID %u (VM %s)' % (uPid, oSession.sName)); 2667 # Being nice failed... 2668 reporter.error('terminateVmBySession: Termination failed, trying to kill PID %u (VM %s) instead' \ 2669 % (uPid, oSession.sName)); 2670 fClose = base.processKill(uPid); 2671 if fClose is True: 2672 self.waitOnDirectSessionClose(oSession.oVM, 5000); 2673 fClose = oSession.waitForTask(1000); 2674 if fClose is not True: 2675 reporter.error('terminateVmBySession: Failed to kill PID %u (VM %s)' % (uPid, oSession.sName)); 2676 2676 2677 2677 # The final steps. 2678 2678 if fClose is True: 2679 reporter.log('terminateVmBySession: closing session "%s"...' % (oSession.sName,)); 2679 2680 oSession.close(); 2680 2681 self.waitOnDirectSessionClose(oSession.oVM, 10000); -
trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py
r61950 r61951 701 701 return self.oConsoleEventHandler is not None; 702 702 703 704 703 def deregisterEventHandlerForTask(self): 705 704 """ … … 710 709 self.oConsoleEventHandler = None; 711 710 712 713 711 def signalHostMemoryLow(self): 714 712 """ … … 720 718 return True; 721 719 720 def needsPoweringOff(self): 721 """ 722 Examins the machine state to see if the VM needs powering off. 723 """ 724 try: 725 try: 726 eState = self.o.machine.state; 727 except Exception, oXcpt: 728 if vbox.ComError.notEqual(oXcpt, vbox.ComError.E_UNEXPECTED): 729 reporter.logXcpt(); 730 return False; 731 finally: 732 self.oTstDrv.processPendingEvents(); 733 734 # Switch 735 if eState == vboxcon.MachineState_Running: 736 return True; 737 if eState == vboxcon.MachineState_Paused: 738 return True; 739 if eState == vboxcon.MachineState_Stuck: 740 return True; 741 if eState == vboxcon.MachineState_Teleporting: 742 return True; 743 if eState == vboxcon.MachineState_LiveSnapshotting: 744 return True; 745 if eState == vboxcon.MachineState_Starting: 746 return True; 747 if eState == vboxcon.MachineState_Saving: 748 return True; 749 if eState == vboxcon.MachineState_Restoring: 750 return True; 751 if eState == vboxcon.MachineState_TeleportingPausedVM: 752 return True; 753 if eState == vboxcon.MachineState_TeleportingIn: 754 return True; 755 if eState == vboxcon.MachineState_FaultTolerantSyncing: 756 return True; 757 return False; 722 758 723 759 def assertPoweredOff(self): … … 740 776 % (_nameMachineState(eState),)); 741 777 return False; 742 743 778 744 779 def getMachineStateWithName(self):
Note:
See TracChangeset
for help on using the changeset viewer.