VirtualBox

Changeset 61951 in vbox for trunk


Ignore:
Timestamp:
Jun 30, 2016 9:33:48 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
108394
Message:

testdriver/vbox*.py: Oh, don't be 'smart' and use pollTask to check whether the VM needs powering off. Added needsPoweringOff to the session wrapper for doing that.

Location:
trunk/src/VBox/ValidationKit/testdriver
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/testdriver/vbox.py

    r61950 r61951  
    26492649        # Check if the VM has terminated by it self before powering it off.
    26502650        fClose = True;
    2651         fRc = oSession.pollTask();
    2652         if fRc is not True:
     2651        fRc    = True;
     2652        if oSession.needsPoweringOff():
    26532653            reporter.log('terminateVmBySession: powering off "%s"...' % (oSession.sName,));
    26542654            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);
    26712662                    if fClose is True:
    26722663                        self.waitOnDirectSessionClose(oSession.oVM, 5000);
    26732664                        fClose = oSession.waitForTask(1000);
     2665
    26742666                    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));
    26762676
    26772677        # The final steps.
    26782678        if fClose is True:
     2679            reporter.log('terminateVmBySession: closing session "%s"...' % (oSession.sName,));
    26792680            oSession.close();
    26802681            self.waitOnDirectSessionClose(oSession.oVM, 10000);
  • trunk/src/VBox/ValidationKit/testdriver/vboxwrappers.py

    r61950 r61951  
    701701        return self.oConsoleEventHandler is not None;
    702702
    703 
    704703    def deregisterEventHandlerForTask(self):
    705704        """
     
    710709            self.oConsoleEventHandler = None;
    711710
    712 
    713711    def signalHostMemoryLow(self):
    714712        """
     
    720718        return True;
    721719
     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;
    722758
    723759    def assertPoweredOff(self):
     
    740776                       % (_nameMachineState(eState),));
    741777        return False;
    742 
    743778
    744779    def getMachineStateWithName(self):
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette