tests: Begin autopkgtest wrapper for selftests
To start with, just use kexec to test that each kernel boots.
This commit is contained in:
parent
3b781b1ad1
commit
3d15b09115
|
@ -15,4 +15,5 @@
|
|||
/po/
|
||||
/rules.gen
|
||||
/stamps/
|
||||
/tests/control
|
||||
/xen-linux-system-*
|
||||
|
|
|
@ -78,6 +78,9 @@ class Gencontrol(Base):
|
|||
'# Translators should edit %s instead.\n'
|
||||
'#\n' % path)
|
||||
|
||||
# Prepare to generate debian/tests/control
|
||||
self.tests_control = None
|
||||
|
||||
def do_main_makefile(self, makefile, makeflags, extra):
|
||||
fs_enabled = [featureset
|
||||
for featureset in self.config['base', ]['featuresets']
|
||||
|
@ -329,7 +332,8 @@ class Gencontrol(Base):
|
|||
|
||||
vars.setdefault('desc', None)
|
||||
|
||||
packages_own.append(self.process_real_image(image[0], image_fields, vars))
|
||||
image_main = self.process_real_image(image[0], image_fields, vars)
|
||||
packages_own.append(image_main)
|
||||
packages_own.extend(self.process_packages(image[1:], vars))
|
||||
|
||||
if config_entry_build.get('modules', True):
|
||||
|
@ -355,6 +359,16 @@ class Gencontrol(Base):
|
|||
|
||||
self.merge_packages(packages, packages_own + packages_dummy, arch)
|
||||
|
||||
tests_control = self.process_package(
|
||||
self.templates['tests-control.main'][0], vars)
|
||||
tests_control['Depends'].append(
|
||||
PackageRelationGroup(image_main['Package'],
|
||||
override_arches=(arch,)))
|
||||
if self.tests_control:
|
||||
self.tests_control['Depends'].extend(tests_control['Depends'])
|
||||
else:
|
||||
self.tests_control = tests_control
|
||||
|
||||
def get_config(*entry_name):
|
||||
entry_real = ('image',) + entry_name
|
||||
entry = self.config.get(entry_real, None)
|
||||
|
@ -513,11 +527,16 @@ class Gencontrol(Base):
|
|||
def write(self, packages, makefile):
|
||||
self.write_config()
|
||||
super(Gencontrol, self).write(packages, makefile)
|
||||
self.write_tests_control()
|
||||
|
||||
def write_config(self):
|
||||
f = open("debian/config.defines.dump", 'wb')
|
||||
self.config.dump(f)
|
||||
f.close()
|
||||
|
||||
def write_tests_control(self):
|
||||
self.write_rfc822(codecs.open("debian/tests/control", 'w', 'utf-8'),
|
||||
[self.tests_control])
|
||||
|
||||
if __name__ == '__main__':
|
||||
Gencontrol()()
|
||||
|
|
|
@ -2,6 +2,7 @@ linux (4.3~rc7-1~exp2) UNRELEASED; urgency=medium
|
|||
|
||||
[ Ben Hutchings ]
|
||||
* netfilter: Enable NFT_DUP_IPV4, NFT_DUP_IPV6 as modules (Closes: #803370)
|
||||
* tests: Add autopkgtest support
|
||||
|
||||
[ Salvatore Bonaccorso ]
|
||||
* Fix typo in image.plain.postinst template.
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Tests: selftests
|
||||
Restrictions: breaks-testbed, needs-root, isolation-machine
|
||||
Depends: kexec-tools, python3
|
|
@ -0,0 +1,55 @@
|
|||
#!/bin/bash -eu
|
||||
|
||||
PATH=/usr/sbin:/sbin:/usr/bin:/bin
|
||||
|
||||
getconfig() {
|
||||
debian/bin/getconfig.py "$@"
|
||||
}
|
||||
|
||||
# Look up current ABI name and 'localversion' (featureset/flavour) suffixes
|
||||
abiname=$(getconfig version abiname)
|
||||
arch=$(dpkg --print-architecture)
|
||||
localversion=()
|
||||
for featureset in $(getconfig base $arch featuresets); do
|
||||
if [ "$(getconfig base '' $featureset enabled || echo True)" = True ]; then
|
||||
for flavour in $(getconfig base $arch $featureset flavours); do
|
||||
if [ "$featureset" = none ]; then
|
||||
localversion+=(-$flavour)
|
||||
else
|
||||
localversion+=(-$featureset-$flavour)
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
steps=${#localversion[*]}
|
||||
|
||||
case "${ADT_REBOOT_MARK:-}" in
|
||||
"")
|
||||
step=-1
|
||||
;;
|
||||
step*)
|
||||
step=${ADT_REBOOT_MARK#step}
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$step" -ge 0 ]; then
|
||||
ver=$abiname${localversion[$step]}
|
||||
|
||||
if [ "$(uname -r)" != "$ver" ]; then
|
||||
echo >&2 "Should be running: $ver"
|
||||
echo >&2 "Actually running: $(uname -r)"
|
||||
fi
|
||||
fi
|
||||
|
||||
# TODO: build and run tests
|
||||
|
||||
step=$((step + 1))
|
||||
|
||||
if [ "$step" -lt "$steps" ]; then
|
||||
# Load the next kernel
|
||||
ver=$abiname${localversion[$step]}
|
||||
kexec -l /boot/vmlinuz-$ver --initrd /boot/initrd.img-$ver --reuse-cmdline
|
||||
/tmp/autopkgtest-reboot step$step
|
||||
fi
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue