VirtualBox

Changeset 69554 in vbox


Ignore:
Timestamp:
Nov 2, 2017 3:26:26 PM (7 years ago)
Author:
vboxsync
Message:

testdriver/vbox.py: Display COM stats after dropping and destroying VBoxMgr.

File:
1 edited

Legend:

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

    r69543 r69554  
    14301430        if not self.fImportedVBoxApi:
    14311431            return True;
     1432        import gc;
    14321433
    14331434        self.aoRemoteSessions = [];
     
    14391440
    14401441        try:
    1441             import gc
    14421442            gc.collect();
    1443             objects = gc.get_objects()
     1443            aObjects = gc.get_objects();
    14441444            try:
    1445                 try:
    1446                     from types import InstanceType
    1447                 except ImportError:
    1448                     InstanceType = None # Python 3.x compatibility
    1449                 for o in objects:
    1450                     objtype = type(o)
    1451                     if objtype == InstanceType: # Python 2.x codepath
    1452                         objtype = o.__class__
    1453                     if objtype.__name__ == 'VirtualBoxManager':
     1445                try:                from types import InstanceType; # For old-style python 2.x objects, not in python 3.
     1446                except ImportError: InstanceType = None;
     1447                for oObj in aObjects:
     1448                    oObjType = type(oObj)
     1449                    if oObjType == InstanceType: # Python 2.x codepath
     1450                        oObjType = oObj.__class__
     1451                    if oObjType.__name__ == 'VirtualBoxManager':
    14541452                        reporter.log('actionCleanupAfter: CAUTION, there is still a VirtualBoxManager object, GC trouble')
    14551453                        break
    14561454            finally:
    1457                 del objects
     1455                del aObjects;
    14581456        except:
    14591457            reporter.logXcpt();
     
    14621460
    14631461        if self.sHost == 'win':
    1464             pass; ## TODO shutdown COM if possible/necessary?
     1462            try:
     1463                import pythoncom;                       # pylint: disable=F0401
     1464                cIfs  = pythoncom._GetInterfaceCount(); # pylint: disable=no-member,protected-access
     1465                cObjs = pythoncom._GetGatewayCount();   # pylint: disable=no-member,protected-access
     1466                if cObjs == 0 and cIfs == 0:
     1467                    reporter.log('actionCleanupAfter: no interfaces or objects left behind.');
     1468                else:
     1469                    reporter.log('actionCleanupAfter: Python COM still has %s objects and %s interfaces...' % ( cObjs, cIfs));
     1470                    from win32com.client import DispatchBaseClass;
     1471                    for oObj in gc.get_objects():
     1472                        if isinstance(oObj, DispatchBaseClass):
     1473                            reporter.log('actionCleanupAfter:   %s' % (oObj,));
     1474                    oObj = None;
     1475            except:
     1476                reporter.logXcpt();
    14651477        else:
    14661478            try:
Note: See TracChangeset for help on using the changeset viewer.

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