VirtualBox

Changeset 65483 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jan 27, 2017 2:14:30 PM (8 years ago)
Author:
vboxsync
Message:

ValidationKit/tdStorageBenchmark1: Add option to log I/O requests for the executed test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py

    r64847 r65483  
    472472        self.fReportBenchmarkResults = True;
    473473        self.oStorCfg                = None;
     474        self.sIoLogPathDef           = self.sScratchPath;
     475        self.sIoLogPath              = self.sIoLogPathDef;
     476        self.fIoLog                  = False;
    474477
    475478    #
     
    520523        reporter.log('  --dont-report-benchmark-results');
    521524        reporter.log('      Don\'t report any benchmark results');
     525        reporter.log('  --io-log-path <path>');
     526        reporter.log('      Default: %s' % (self.sIoLogPathDef));
     527        reporter.log('  --enable-io-log');
     528        reporter.log('      Whether to enable I/O logging for each test');
    522529        return rc;
    523530
     
    604611        elif asArgs[iArg] == '--dont-report-benchmark-results':
    605612            self.fReportBenchmarkResults = False;
     613        elif asArgs[iArg] == '--io-log-path':
     614            if iArg >= len(asArgs): raise base.InvalidOption('The "--io-log-path" takes a path argument');
     615            self.sIoLogPath = asArgs[iArg];
     616        elif asArgs[iArg] == '--enable-io-log':
     617            self.fIoLog = True;
    606618        else:
    607619            return vbox.TestDriver.parseOption(self, asArgs, iArg);
     
    786798        return eStorageCtrl;
    787799
     800    def getStorageDriverFromEnum(self, eStorageCtrl, fHardDisk):
     801        """
     802        Returns the appropriate driver name for the given storage controller
     803        and a flag whether the driver has the generic SCSI driver attached.
     804        """
     805        if eStorageCtrl == vboxcon.StorageControllerType_IntelAhci:
     806            if fHardDisk:
     807                return ('ahci', False);
     808            else:
     809                return ('ahci', True);
     810        elif eStorageCtrl == vboxcon.StorageControllerType_PIIX4:
     811            return ('piix3ide', False);
     812        elif eStorageCtrl == vboxcon.StorageControllerType_LsiLogicSas:
     813            return ('lsilogicsas', True);
     814        elif eStorageCtrl == vboxcon.StorageControllerType_LsiLogic:
     815            return ('lsilogicscsi', True);
     816        elif eStorageCtrl == vboxcon.StorageControllerType_BusLogic:
     817            return ('buslogic', True);
     818        elif eStorageCtrl == vboxcon.StorageControllerType_NVMe:
     819            return ('nvme', False);
     820
     821        return ('<invalid>', False);
     822
    788823    def isTestCfgSupported(self, asTestCfg):
    789824        """
     
    900935        return oHd;
    901936
    902     def testOneCfg(self, sVmName, eStorageController, sHostIoCache, sDiskFormat, # pylint: disable=R0913,R0915
     937    def testOneCfg(self, sVmName, eStorageController, sHostIoCache, sDiskFormat, # pylint: disable=R0913,R0914,R0915
    903938                   sDiskVariant, sDiskPath, cCpus, sIoTest, sVirtMode, sTestSet):
    904939        """
     
    939974
    940975        for iDiffLvl in range(self.cDiffLvls + 1):
     976            sIoLogFile = None;
    941977
    942978            if iDiffLvl == 0:
     
    9831019                else:
    9841020                    fRc = False;
     1021
     1022                # Set up the I/O logging config if enabled
     1023                if fRc and self.fIoLog:
     1024                    try:
     1025                        oSession.o.machine.setExtraData('VBoxInternal2/EnableDiskIntegrityDriver', '1');
     1026
     1027                        iLun = 0;
     1028                        if eStorageController == vboxcon.StorageControllerType_PIIX3 or \
     1029                           eStorageController == vboxcon.StorageControllerType_PIIX4:
     1030                            iLun = 1
     1031                        sDrv, fDrvScsi = self.getStorageDriverFromEnum(eStorageController, True);
     1032                        if fDrvScsi:
     1033                            sCfgmPath = 'VBoxInternal/Devices/%s/0/LUN#%u/AttachedDriver/Config' % (sDrv, iLun);
     1034                        else:
     1035                            sCfgmPath = 'VBoxInternal/Devices/%s/0/LUN#%u/Config' % (sDrv, iLun);
     1036
     1037                        sIoLogFile = '%s/%s.iolog' % (self.sIoLogPath, sDrv);
     1038                        print sCfgmPath;
     1039                        print sIoLogFile;
     1040                        oSession.o.machine.setExtraData('%s/IoLog' % (sCfgmPath,), sIoLogFile);
     1041                    except:
     1042                        reporter.logXcpt();
     1043
    9851044                fRc = fRc and oSession.enableVirtEx(fHwVirt);
    9861045                fRc = fRc and oSession.enableNestedPaging(fNestedPaging);
     
    10181077                    # cleanup.
    10191078                    self.removeTask(oTxsSession);
    1020                     self.terminateVmBySession(oSession)
     1079                    self.terminateVmBySession(oSession);
     1080
     1081                    # Add the I/O log if it exists and the test failed
     1082                    if reporter.testErrorCount() > 0 \
     1083                       and sIoLogFile is not None \
     1084                       and os.path.exists(sIoLogFile):
     1085                        reporter.addLogFile(sIoLogFile, 'misc/other', 'I/O log');
     1086                        os.remove(sIoLogFile);
     1087
    10211088                else:
    10221089                    fRc = False;
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