[linux] 05/17: tests: Begin autopkgtest wrapper for selftests

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Sat Oct 31 22:18:16 UTC 2015


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch master
in repository linux.

commit 3d15b09115b75374c4216dfcd2827c13f6cb9c09
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Wed Aug 12 00:21:41 2015 +0200

    tests: Begin autopkgtest wrapper for selftests
    
    To start with, just use kexec to test that each kernel boots.
---
 debian/.gitignore                      |  1 +
 debian/bin/gencontrol.py               | 21 ++++++++++++-
 debian/changelog                       |  1 +
 debian/templates/tests-control.main.in |  3 ++
 debian/tests/selftests                 | 55 ++++++++++++++++++++++++++++++++++
 5 files changed, 80 insertions(+), 1 deletion(-)

diff --git a/debian/.gitignore b/debian/.gitignore
index 9df6faf..597471e 100644
--- a/debian/.gitignore
+++ b/debian/.gitignore
@@ -15,4 +15,5 @@
 /po/
 /rules.gen
 /stamps/
+/tests/control
 /xen-linux-system-*
diff --git a/debian/bin/gencontrol.py b/debian/bin/gencontrol.py
index 71fcd08..a7dea7d 100755
--- a/debian/bin/gencontrol.py
+++ b/debian/bin/gencontrol.py
@@ -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()()
diff --git a/debian/changelog b/debian/changelog
index a96bb7f..75a9973 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -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.
diff --git a/debian/templates/tests-control.main.in b/debian/templates/tests-control.main.in
new file mode 100644
index 0000000..511c10e
--- /dev/null
+++ b/debian/templates/tests-control.main.in
@@ -0,0 +1,3 @@
+Tests: selftests
+Restrictions: breaks-testbed, needs-root, isolation-machine
+Depends: kexec-tools, python3
diff --git a/debian/tests/selftests b/debian/tests/selftests
new file mode 100644
index 0000000..734a6de
--- /dev/null
+++ b/debian/tests/selftests
@@ -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

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git



More information about the Kernel-svn-changes mailing list