mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-11-04 02:24:24 +00:00 
			
		
		
		
	Implement 'run_boottest' flag, similarly to 'run_autopkgset'.
This commit is contained in:
		
						commit
						8d0cc0f292
					
				@ -62,6 +62,10 @@ SMOOTH_UPDATES    = badgers
 | 
			
		||||
 | 
			
		||||
REMOVE_OBSOLETE   = no
 | 
			
		||||
 | 
			
		||||
ADT_ENABLE        = yes
 | 
			
		||||
ADT_ENABLE        = no
 | 
			
		||||
ADT_DEBUG         = no
 | 
			
		||||
ADT_ARCHES        = amd64 i386
 | 
			
		||||
 | 
			
		||||
BOOTTEST_ARCHES   = armhf
 | 
			
		||||
BOOTTEST_ENABLE   = yes
 | 
			
		||||
BOOTTEST_DEBUG    = yes
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								britney.py
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								britney.py
									
									
									
									
									
								
							@ -1368,6 +1368,7 @@ class Britney(object):
 | 
			
		||||
        # the starting point is that we will update the candidate and run autopkgtests
 | 
			
		||||
        update_candidate = True
 | 
			
		||||
        run_autopkgtest = True
 | 
			
		||||
        run_boottest = True
 | 
			
		||||
        
 | 
			
		||||
        # if the version in unstable is older, then stop here with a warning in the excuse and return False
 | 
			
		||||
        if source_t and apt_pkg.version_compare(source_u[VERSION], source_t[VERSION]) < 0:
 | 
			
		||||
@ -1381,6 +1382,7 @@ class Britney(object):
 | 
			
		||||
            excuse.addhtml("%s source package doesn't exist" % (src))
 | 
			
		||||
            update_candidate = False
 | 
			
		||||
            run_autopkgtest = False
 | 
			
		||||
            run_boottest = False
 | 
			
		||||
 | 
			
		||||
        # retrieve the urgency for the upload, ignoring it if this is a NEW package (not present in testing)
 | 
			
		||||
        urgency = self.urgencies.get(src, self.options.default_urgency)
 | 
			
		||||
@ -1399,6 +1401,7 @@ class Britney(object):
 | 
			
		||||
                excuse.addreason("remove")
 | 
			
		||||
                update_candidate = False
 | 
			
		||||
                run_autopkgtest = False
 | 
			
		||||
                run_boottest = False
 | 
			
		||||
 | 
			
		||||
        # check if there is a `block' or `block-udeb' hint for this package, or a `block-all source' hint
 | 
			
		||||
        blocked = {}
 | 
			
		||||
@ -1478,6 +1481,7 @@ class Britney(object):
 | 
			
		||||
                else:
 | 
			
		||||
                    update_candidate = False
 | 
			
		||||
                    run_autopkgtest = False
 | 
			
		||||
                    run_boottest = False
 | 
			
		||||
                    excuse.addreason("age")
 | 
			
		||||
 | 
			
		||||
        if suite in ['pu', 'tpu']:
 | 
			
		||||
@ -1513,6 +1517,8 @@ class Britney(object):
 | 
			
		||||
                    update_candidate = False
 | 
			
		||||
                    if arch in self.options.adt_arches.split():
 | 
			
		||||
                        run_autopkgtest = False
 | 
			
		||||
                    if arch in self.options.boottest_arches.split():
 | 
			
		||||
                        run_boottest = False
 | 
			
		||||
                    excuse.addreason("arch")
 | 
			
		||||
                    excuse.addreason("arch-%s" % arch)
 | 
			
		||||
                    excuse.addreason("build-arch")
 | 
			
		||||
@ -1555,6 +1561,8 @@ class Britney(object):
 | 
			
		||||
                        update_candidate = False
 | 
			
		||||
                        if arch in self.options.adt_arches.split():
 | 
			
		||||
                            run_autopkgtest = False
 | 
			
		||||
                        if arch in self.options.boottest_arches.split():
 | 
			
		||||
                            run_boottest = False
 | 
			
		||||
 | 
			
		||||
            # if there are out-of-date packages, warn about them in the excuse and set update_candidate
 | 
			
		||||
            # to False to block the update; if the architecture where the package is out-of-date is
 | 
			
		||||
@ -1581,6 +1589,8 @@ class Britney(object):
 | 
			
		||||
                    update_candidate = False
 | 
			
		||||
                    if arch in self.options.adt_arches.split():
 | 
			
		||||
                        run_autopkgtest = False
 | 
			
		||||
                    if arch in self.options.boottest_arches.split():
 | 
			
		||||
                        run_boottest = False
 | 
			
		||||
                    excuse.addreason("arch")
 | 
			
		||||
                    excuse.addreason("arch-%s" % arch)
 | 
			
		||||
                    if uptodatebins:
 | 
			
		||||
@ -1598,11 +1608,13 @@ class Britney(object):
 | 
			
		||||
            excuse.addreason("no-binaries")
 | 
			
		||||
            update_candidate = False
 | 
			
		||||
            run_autopkgtest = False
 | 
			
		||||
            run_boottest = False
 | 
			
		||||
        elif not built_anywhere:
 | 
			
		||||
            excuse.addhtml("%s has no up-to-date binaries on any arch" % src)
 | 
			
		||||
            excuse.addreason("no-binaries")
 | 
			
		||||
            update_candidate = False
 | 
			
		||||
            run_autopkgtest = False
 | 
			
		||||
            run_boottest = False
 | 
			
		||||
 | 
			
		||||
        # if the suite is unstable, then we have to check the release-critical bug lists before
 | 
			
		||||
        # updating testing; if the unstable package has RC bugs that do not apply to the testing
 | 
			
		||||
@ -1635,6 +1647,7 @@ class Britney(object):
 | 
			
		||||
                        ["<a href=\"http://bugs.debian.org/%s\">#%s</a>" % (urllib.quote(a), a) for a in new_bugs])))
 | 
			
		||||
                    update_candidate = False
 | 
			
		||||
                    run_autopkgtest = False
 | 
			
		||||
                    run_boottest = False
 | 
			
		||||
                    excuse.addreason("buggy")
 | 
			
		||||
 | 
			
		||||
                if len(old_bugs) > 0:
 | 
			
		||||
@ -1653,6 +1666,7 @@ class Britney(object):
 | 
			
		||||
            excuse.force()
 | 
			
		||||
            update_candidate = True
 | 
			
		||||
            run_autopkgtest = True
 | 
			
		||||
            run_boottest = True
 | 
			
		||||
 | 
			
		||||
        # if the package can be updated, it is a valid candidate
 | 
			
		||||
        if update_candidate:
 | 
			
		||||
@ -1662,6 +1676,7 @@ class Britney(object):
 | 
			
		||||
            # TODO
 | 
			
		||||
            excuse.addhtml("Not considered")
 | 
			
		||||
        excuse.run_autopkgtest = run_autopkgtest
 | 
			
		||||
        excuse.run_boottest = run_boottest
 | 
			
		||||
 | 
			
		||||
        self.excuses.append(excuse)
 | 
			
		||||
        return update_candidate
 | 
			
		||||
@ -1895,7 +1910,7 @@ class Britney(object):
 | 
			
		||||
                debug=boottest_debug)
 | 
			
		||||
            for excuse in self.excuses:
 | 
			
		||||
                # Skip already invalid excuses.
 | 
			
		||||
                if not excuse.is_valid:
 | 
			
		||||
                if not excuse.run_boottest:
 | 
			
		||||
                    continue
 | 
			
		||||
                # Also skip removals, binary-only candidates, proposed-updates
 | 
			
		||||
                # and unknown versions.
 | 
			
		||||
@ -1927,7 +1942,7 @@ class Britney(object):
 | 
			
		||||
                                    forces[0].user))
 | 
			
		||||
                        status = 'PASS'
 | 
			
		||||
                    statuses.add(status)
 | 
			
		||||
                # No boottest attemps requested, it's not relevant in this
 | 
			
		||||
                # No boottest attempts requested, it's not relevant in this
 | 
			
		||||
                # context, rely on other checks to judge promotion.
 | 
			
		||||
                if not statuses:
 | 
			
		||||
                    continue
 | 
			
		||||
 | 
			
		||||
@ -1,70 +0,0 @@
 | 
			
		||||
# Configuration file for britney
 | 
			
		||||
 | 
			
		||||
# Paths for control files
 | 
			
		||||
TESTING           = data/%(SERIES)
 | 
			
		||||
UNSTABLE          = data/%(SERIES)-proposed
 | 
			
		||||
PARTIAL_UNSTABLE  = yes
 | 
			
		||||
 | 
			
		||||
# Output
 | 
			
		||||
NONINST_STATUS    = data/%(SERIES)/non-installable-status
 | 
			
		||||
EXCUSES_OUTPUT    = output/%(SERIES)/excuses.html
 | 
			
		||||
EXCUSES_YAML_OUTPUT = output/%(SERIES)/excuses.yaml
 | 
			
		||||
UPGRADE_OUTPUT    = output/%(SERIES)/output.txt
 | 
			
		||||
HEIDI_OUTPUT      = output/%(SERIES)/HeidiResult
 | 
			
		||||
 | 
			
		||||
# List of release architectures
 | 
			
		||||
ARCHITECTURES     = amd64 arm64 armhf i386 powerpc ppc64el
 | 
			
		||||
 | 
			
		||||
# if you're not in this list, arch: all packages are allowed to break on you
 | 
			
		||||
NOBREAKALL_ARCHES = amd64
 | 
			
		||||
 | 
			
		||||
# if you're in this list, your packages may not stay in sync with the source
 | 
			
		||||
OUTOFSYNC_ARCHES  =
 | 
			
		||||
 | 
			
		||||
# if you're in this list, your uninstallability count may increase
 | 
			
		||||
BREAK_ARCHES      =
 | 
			
		||||
 | 
			
		||||
# if you're in this list, you are a new architecture
 | 
			
		||||
NEW_ARCHES        =
 | 
			
		||||
 | 
			
		||||
# priorities and delays
 | 
			
		||||
MINDAYS_LOW       = 0
 | 
			
		||||
MINDAYS_MEDIUM    = 0
 | 
			
		||||
MINDAYS_HIGH      = 0
 | 
			
		||||
MINDAYS_CRITICAL  = 0
 | 
			
		||||
MINDAYS_EMERGENCY = 0
 | 
			
		||||
DEFAULT_URGENCY   = medium
 | 
			
		||||
 | 
			
		||||
# hint permissions
 | 
			
		||||
HINTS_CJWATSON    = ALL
 | 
			
		||||
HINTS_ADCONRAD    = ALL
 | 
			
		||||
HINTS_KITTERMAN   = ALL
 | 
			
		||||
HINTS_LANEY       = ALL
 | 
			
		||||
HINTS_JRIDDELL    = ALL
 | 
			
		||||
HINTS_STEFANOR    = ALL
 | 
			
		||||
HINTS_STGRABER    = ALL
 | 
			
		||||
HINTS_VORLON      = ALL
 | 
			
		||||
HINTS_FREEZE      = block block-all
 | 
			
		||||
 | 
			
		||||
HINTS_UBUNTU-TOUCH/DIDROCKS     = block unblock
 | 
			
		||||
HINTS_UBUNTU-TOUCH/EV           = block unblock
 | 
			
		||||
HINTS_UBUNTU-TOUCH/KEN-VANDINE  = block unblock
 | 
			
		||||
HINTS_UBUNTU-TOUCH/LOOL         = block unblock
 | 
			
		||||
HINTS_UBUNTU-TOUCH/MATHIEU-TL   = block unblock
 | 
			
		||||
HINTS_UBUNTU-TOUCH/OGRA         = block unblock
 | 
			
		||||
 | 
			
		||||
# support for old libraries in testing (smooth update)
 | 
			
		||||
# use ALL to enable smooth updates for all the sections
 | 
			
		||||
#
 | 
			
		||||
# naming a non-existent section will effectively disable new smooth
 | 
			
		||||
# updates but still allow removals to occur
 | 
			
		||||
SMOOTH_UPDATES    = badgers
 | 
			
		||||
 | 
			
		||||
REMOVE_OBSOLETE   = no
 | 
			
		||||
 | 
			
		||||
ADT_ENABLE        = no
 | 
			
		||||
ADT_DEBUG         = no
 | 
			
		||||
ADT_ARCHES        = amd64 i386
 | 
			
		||||
 | 
			
		||||
BOOTTEST_ENABLE   = yes
 | 
			
		||||
BOOTTEST_DEBUG    = yes
 | 
			
		||||
@ -92,7 +92,15 @@ class TestBoottestEnd2End(TestBase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(TestBoottestEnd2End, self).setUp()
 | 
			
		||||
        self.britney_conf = os.path.join(
 | 
			
		||||
            PROJECT_DIR, 'britney_boottest.conf')
 | 
			
		||||
            PROJECT_DIR, 'britney.conf')
 | 
			
		||||
        old_config = None
 | 
			
		||||
        with open(self.britney_conf, 'r') as fp:
 | 
			
		||||
            self.old_config = fp.read()
 | 
			
		||||
        config = self.old_config.replace(
 | 
			
		||||
            'ADT_ENABLE        = yes', 'ADT_ENABLE        = no')
 | 
			
		||||
        with open(self.britney_conf, 'w') as fp:
 | 
			
		||||
            fp.write(config)
 | 
			
		||||
 | 
			
		||||
        self.data.add('libc6', False, {'Architecture': 'armhf'}),
 | 
			
		||||
 | 
			
		||||
        self.data.add(
 | 
			
		||||
@ -110,6 +118,11 @@ class TestBoottestEnd2End(TestBase):
 | 
			
		||||
            'pyqt5:armhf 1.0',
 | 
			
		||||
        ])
 | 
			
		||||
 | 
			
		||||
    def tearDown(self):
 | 
			
		||||
        """ Replace the old_config. """
 | 
			
		||||
        with open(self.britney_conf, 'w') as fp:
 | 
			
		||||
            fp.write(self.old_config)
 | 
			
		||||
 | 
			
		||||
    def create_manifest(self, lines):
 | 
			
		||||
        """Create a manifest for this britney run context."""
 | 
			
		||||
        path = os.path.join(
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user