This will be useful for running a smaller test set on "make check", instead of testing every single machine-type/device combination.
Signed-off-by: Eduardo Habkost <[email protected]> --- scripts/device-crash-test | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/scripts/device-crash-test b/scripts/device-crash-test index 364c779cdb..632b128e44 100755 --- a/scripts/device-crash-test +++ b/scripts/device-crash-test @@ -41,6 +41,11 @@ Test a single QEMU binary: device-crash-test /path/to/qemu/binary +Test all QEMU binaries found in the current directory, using only the default +machine-type: + + device-crash-test -t machine=DEFAULT + """ import sys @@ -357,7 +362,7 @@ class QemuBinaryInfo(object): # there's no way to query DeviceClass::user_creatable using QMP, # so use 'info qdm': self.no_user_devs = set([d['name'] for d in infoQDM(vm, ) if d['no-user']]) - self.machines = list(m['name'] for m in vm.command('query-machines')) + self.machines = vm.command('query-machines') self.user_devs = self.alldevs.difference(self.no_user_devs) self.kvm_available = vm.command('query-kvm')['enabled'] finally: @@ -390,6 +395,19 @@ class QemuBinaryInfo(object): self._machine_info[machine] = mi return mi + def defaultMachine(self): + """Default machine-type for the QEMU binary + + If no default machine-type is returned by query-machines, return the + first machine-type in the list. + """ + machines = self.machines + defmachine = [m['name'] for m in self.machines if m.get('is-default')] + if defmachine: + return defmachine[0] + else: + return self.machines[0]['name'] + BINARY_INFO = {} @@ -455,7 +473,7 @@ def accelsToTest(args, testcase): def machinesToTest(args, testcase): - return getBinaryInfo(args, testcase['binary']).machines + return [m['name'] for m in getBinaryInfo(args, testcase['binary']).machines] def devicesToTest(args, testcase): @@ -580,6 +598,13 @@ def main(): return 1 for t in casesToTest(args, tc): + + # expand some test case variables to their actual values before + # using them: + # "-t machine=DEFAULT" can be used to use the default machine-type + if t['machine'] == 'DEFAULT': + t['machine'] = getBinaryInfo(args, t['binary']).defaultMachine() + logger.info("running test case: %s", formatTestCase(t)) total += 1 -- 2.14.3
