VirtualBox

Changeset 63746 in vbox


Ignore:
Timestamp:
Sep 7, 2016 10:31:07 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
110536
Message:

ValidationKit/tdStorageBenchmark: Add option to test the different host I/O cache settings for each controller

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

Legend:

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

    r63142 r63746  
    16361636        return False
    16371637
     1638    def setStorageControllerHostIoCache(self, sController, fUseHostIoCache):
     1639        """
     1640        Set maximum ports count for storage controller
     1641        """
     1642        try:
     1643            oCtl = self.o.machine.getStorageControllerByName(sController);
     1644            oCtl.useHostIOCache = fUseHostIoCache;
     1645            self.oTstDrv.processPendingEvents();
     1646            reporter.log('set controller "%s" host I/O cache setting to %r' % (sController, fUseHostIoCache));
     1647            return True;
     1648        except:
     1649            reporter.log('unable to set storage controller "%s" host I/O cache setting to %r' % (sController, fUseHostIoCache));
     1650
     1651        return False;
     1652
    16381653    def setBootOrder(self, iPosition, eType):
    16391654        """
  • trunk/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py

    r63235 r63746  
    424424    };
    425425
     426    kdHostIoCacheDescs = {
     427        'default'        : 'HostCacheDef',
     428        'hostiocache'    : 'HostCacheOn',
     429        'no-hostiocache' : 'HostCacheOff'
     430    };
     431
    426432    # Array indexes for the test configs.
    427433    kiVmName      = 0;
    428434    kiStorageCtrl = 1;
    429     kiDiskFmt     = 2;
    430     kiDiskVar     = 3;
    431     kiCpuCount    = 4;
    432     kiVirtMode    = 5;
    433     kiIoTest      = 6;
    434     kiTestSet     = 7;
     435    kiHostIoCache = 2
     436    kiDiskFmt     = 3;
     437    kiDiskVar     = 4;
     438    kiCpuCount    = 5;
     439    kiVirtMode    = 6;
     440    kiIoTest      = 7;
     441    kiTestSet     = 8;
    435442
    436443    def __init__(self):
     
    446453        self.asStorageCtrlsDef       = ['AHCI', 'IDE', 'LsiLogicSAS', 'LsiLogic', 'BusLogic', 'NVMe'];
    447454        self.asStorageCtrls          = self.asStorageCtrlsDef;
     455        self.asHostIoCacheDef        = ['default', 'hostiocache', 'no-hostiocache'];
     456        self.asHostIoCache           = self.asHostIoCacheDef;
    448457        self.asDiskFormatsDef        = ['VDI', 'VMDK', 'VHD', 'QED', 'Parallels', 'QCOW', 'iSCSI'];
    449458        self.asDiskFormats           = self.asDiskFormatsDef;
     
    475484        reporter.log('  --storage-ctrls <type1[:type2[:...]]>');
    476485        reporter.log('      Default: %s' % (':'.join(self.asStorageCtrlsDef)));
     486        reporter.log('  --host-io-cache <setting1[:setting2[:...]]>');
     487        reporter.log('      Default: %s' % (':'.join(self.asHostIoCacheDef)));
    477488        reporter.log('  --disk-formats  <type1[:type2[:...]]>');
    478489        reporter.log('      Default: %s' % (':'.join(self.asDiskFormatsDef)));
     
    480491        reporter.log('      Default: %s' % (':'.join(self.asDiskVariantsDef)));
    481492        reporter.log('  --iscsi-targets     <target1[:target2[:...]]>');
    482         reporter.log('      Default: %s' % (':'.join(self.asIscsiTargets)));
     493        reporter.log('      Default: %s' % (':'.join(self.asIscsiTargetsDef)));
    483494        reporter.log('  --tests         <test1[:test2[:...]]>');
    484         reporter.log('      Default: %s' % (':'.join(self.asTests)));
     495        reporter.log('      Default: %s' % (':'.join(self.asTestsDef)));
    485496        reporter.log('  --test-sets     <set1[:set2[:...]]>');
    486         reporter.log('      Default: %s' % (':'.join(self.asTestSets)));
     497        reporter.log('      Default: %s' % (':'.join(self.asTestSetsDef)));
    487498        reporter.log('  --test-vms      <vm1[:vm2[:...]]>');
    488499        reporter.log('      Test the specified VMs in the given order. Use this to change');
     
    530541                raise base.InvalidOption('The "--storage-ctrls" takes a colon separated list of Storage controller types');
    531542            self.asStorageCtrls = asArgs[iArg].split(':');
     543        elif asArgs[iArg] == '--host-io-cache':
     544            iArg += 1;
     545            if iArg >= len(asArgs):
     546                raise base.InvalidOption('The "--host-io-cache" takes a colon separated list of I/O cache settings');
     547            self.asHostIoCache = asArgs[iArg].split(':');
    532548        elif asArgs[iArg] == '--disk-formats':
    533549            iArg += 1;
     
    780796            return False;
    781797
     798        # IDE does not support the no host I/O cache setting
     799        if     asTestCfg[self.kiHostIoCache] == 'no-hostiocache' \
     800           and asTestCfg[self.kiStorageCtrl] == 'IDE':
     801            return False;
     802
    782803        return True;
    783804
     
    797818        """
    798819        return self.kdVirtModeDescs[sVirtMode];
     820
     821    def fnFormatHostIoCache(self, sHostIoCache):
     822        """
     823        Formats the host I/O cache mode to be a little less cryptic for use in test
     824        descriptions.
     825        """
     826        return self.kdHostIoCacheDescs[sHostIoCache];
    799827
    800828    def testBenchmark(self, sTargetOs, sBenchmark, sMountpoint, oExecutor, dTestSet):
     
    828856        return fRc;
    829857
    830     def testOneCfg(self, sVmName, eStorageController, sDiskFormat, sDiskVariant, # pylint: disable=R0913
    831                    sDiskPath, cCpus, sIoTest, sVirtMode, sTestSet):
     858    def testOneCfg(self, sVmName, eStorageController, sHostIoCache, sDiskFormat, # pylint: disable=R0913,R0915
     859                   sDiskVariant, sDiskPath, cCpus, sIoTest, sVirtMode, sTestSet):
    832860        """
    833861        Runs the specified VM thru test #1.
     
    870898            fRc = oSession.ensureControllerAttached(_ControllerTypeToName(eStorageController));
    871899            fRc = fRc and oSession.setStorageControllerType(eStorageController, _ControllerTypeToName(eStorageController));
     900
     901            if sHostIoCache == 'hostiocache':
     902                fRc = fRc and oSession.setStorageControllerHostIoCache(_ControllerTypeToName(eStorageController), True);
     903            elif sHostIoCache == 'no-hostiocache':
     904                fRc = fRc and oSession.setStorageControllerHostIoCache(_ControllerTypeToName(eStorageController), False);
    872905
    873906            iDevice = 0;
     
    9871020        aasTestCfgs.insert(self.kiVmName,      self.asTestVMs);
    9881021        aasTestCfgs.insert(self.kiStorageCtrl, self.asStorageCtrls);
     1022        aasTestCfgs.insert(self.kiHostIoCache, (self.asHostIoCache, self.fnFormatHostIoCache));
    9891023        aasTestCfgs.insert(self.kiDiskFmt,     self.asDiskFormats);
    9901024        aasTestCfgs.insert(self.kiDiskVar,     self.asDiskVariants);
     
    10031037        while len(asTestCfg) > 0:
    10041038            fRc = self.testOneCfg(asTestCfg[self.kiVmName], self.getStorageCtrlFromName(asTestCfg[self.kiStorageCtrl]), \
    1005                                   asTestCfg[self.kiDiskFmt], asTestCfg[self.kiDiskVar], sDiskPath, \
    1006                                   asTestCfg[self.kiCpuCount], asTestCfg[self.kiIoTest], asTestCfg[self.kiVirtMode], \
    1007                                   asTestCfg[self.kiTestSet]) and fRc and True; # pychecker hack.
     1039                                  asTestCfg[self.kiHostIoCache], asTestCfg[self.kiDiskFmt], asTestCfg[self.kiDiskVar],
     1040                                  sDiskPath, asTestCfg[self.kiCpuCount], asTestCfg[self.kiIoTest], \
     1041                                  asTestCfg[self.kiVirtMode], asTestCfg[self.kiTestSet]) and fRc and True; # pychecker hack.
    10081042
    10091043            asTestCfg = oTstCfgMgr.getNextTestCfg();
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