Merge lp:~joetalbott/britney/boottest_like_autopkgtest into lp:~canonical-ci-engineering/britney/boottesting-support

Proposed by Joe Talbott
Status: Merged
Merged at revision: 443
Proposed branch: lp:~joetalbott/britney/boottest_like_autopkgtest
Merge into: lp:~canonical-ci-engineering/britney/boottesting-support
Prerequisite: lp:~joetalbott/britney/dynamic_manifest_fetch
Diff against target: 238 lines (+35/-73)
4 files modified
britney.conf (+4/-0)
britney.py (+17/-2)
britney_boottest.conf (+0/-70)
tests/test_boottest.py (+14/-1)
To merge this branch: bzr merge lp:~joetalbott/britney/boottest_like_autopkgtest
Reviewer Review Type Date Requested Status
Canonical CI Engineering Pending
Review via email: mp+248179@code.launchpad.net

Commit message

Make boottest like autopkgtest to avoid waiting for slow arches.

* adds BOOTTEST_ARCHES config options.
* consolidates britney_boottest.conf into britney.conf

Description of the change

Make boottest like autopkgtest to avoid waiting for slow arches.

* adds BOOTTEST_ARCHES config options.
* consolidates britney_boottest.conf into britney.conf

To post a comment you must log in.
Revision history for this message
Vincent Ladeuil (vila) wrote :

Not a full review.

I think that's the right approach (unless there is an even simpler way).

See inline comments but my main question is: how far did you go with this proposal ? Up to generating a test request (or at least ensure calling lp:auto-package-testing adt-britney will ?).

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'britney.conf'
--- britney.conf 2014-12-18 15:42:20 +0000
+++ britney.conf 2015-01-30 22:57:35 +0000
@@ -65,3 +65,7 @@
65ADT_ENABLE = yes65ADT_ENABLE = yes
66ADT_DEBUG = no66ADT_DEBUG = no
67ADT_ARCHES = amd64 i38667ADT_ARCHES = amd64 i386
68
69BOOTTEST_ARCHES = armhf
70BOOTTEST_ENABLE = yes
71BOOTTEST_DEBUG = yes
6872
=== modified file 'britney.py'
--- britney.py 2015-01-26 21:09:50 +0000
+++ britney.py 2015-01-30 22:57:35 +0000
@@ -1368,6 +1368,7 @@
1368 # the starting point is that we will update the candidate and run autopkgtests1368 # the starting point is that we will update the candidate and run autopkgtests
1369 update_candidate = True1369 update_candidate = True
1370 run_autopkgtest = True1370 run_autopkgtest = True
1371 run_boottest = True
1371 1372
1372 # if the version in unstable is older, then stop here with a warning in the excuse and return False1373 # if the version in unstable is older, then stop here with a warning in the excuse and return False
1373 if source_t and apt_pkg.version_compare(source_u[VERSION], source_t[VERSION]) < 0:1374 if source_t and apt_pkg.version_compare(source_u[VERSION], source_t[VERSION]) < 0:
@@ -1381,6 +1382,7 @@
1381 excuse.addhtml("%s source package doesn't exist" % (src))1382 excuse.addhtml("%s source package doesn't exist" % (src))
1382 update_candidate = False1383 update_candidate = False
1383 run_autopkgtest = False1384 run_autopkgtest = False
1385 run_boottest = False
13841386
1385 # retrieve the urgency for the upload, ignoring it if this is a NEW package (not present in testing)1387 # retrieve the urgency for the upload, ignoring it if this is a NEW package (not present in testing)
1386 urgency = self.urgencies.get(src, self.options.default_urgency)1388 urgency = self.urgencies.get(src, self.options.default_urgency)
@@ -1399,6 +1401,7 @@
1399 excuse.addreason("remove")1401 excuse.addreason("remove")
1400 update_candidate = False1402 update_candidate = False
1401 run_autopkgtest = False1403 run_autopkgtest = False
1404 run_boottest = False
14021405
1403 # check if there is a `block' or `block-udeb' hint for this package, or a `block-all source' hint1406 # check if there is a `block' or `block-udeb' hint for this package, or a `block-all source' hint
1404 blocked = {}1407 blocked = {}
@@ -1478,6 +1481,7 @@
1478 else:1481 else:
1479 update_candidate = False1482 update_candidate = False
1480 run_autopkgtest = False1483 run_autopkgtest = False
1484 run_boottest = False
1481 excuse.addreason("age")1485 excuse.addreason("age")
14821486
1483 if suite in ['pu', 'tpu']:1487 if suite in ['pu', 'tpu']:
@@ -1513,6 +1517,8 @@
1513 update_candidate = False1517 update_candidate = False
1514 if arch in self.options.adt_arches.split():1518 if arch in self.options.adt_arches.split():
1515 run_autopkgtest = False1519 run_autopkgtest = False
1520 if arch in self.options.boottest_arches.split():
1521 run_boottest = False
1516 excuse.addreason("arch")1522 excuse.addreason("arch")
1517 excuse.addreason("arch-%s" % arch)1523 excuse.addreason("arch-%s" % arch)
1518 excuse.addreason("build-arch")1524 excuse.addreason("build-arch")
@@ -1555,6 +1561,8 @@
1555 update_candidate = False1561 update_candidate = False
1556 if arch in self.options.adt_arches.split():1562 if arch in self.options.adt_arches.split():
1557 run_autopkgtest = False1563 run_autopkgtest = False
1564 if arch in self.options.boottest_arches.split():
1565 run_boottest = False
15581566
1559 # if there are out-of-date packages, warn about them in the excuse and set update_candidate1567 # if there are out-of-date packages, warn about them in the excuse and set update_candidate
1560 # to False to block the update; if the architecture where the package is out-of-date is1568 # to False to block the update; if the architecture where the package is out-of-date is
@@ -1581,6 +1589,8 @@
1581 update_candidate = False1589 update_candidate = False
1582 if arch in self.options.adt_arches.split():1590 if arch in self.options.adt_arches.split():
1583 run_autopkgtest = False1591 run_autopkgtest = False
1592 if arch in self.options.boottest_arches.split():
1593 run_boottest = False
1584 excuse.addreason("arch")1594 excuse.addreason("arch")
1585 excuse.addreason("arch-%s" % arch)1595 excuse.addreason("arch-%s" % arch)
1586 if uptodatebins:1596 if uptodatebins:
@@ -1598,11 +1608,13 @@
1598 excuse.addreason("no-binaries")1608 excuse.addreason("no-binaries")
1599 update_candidate = False1609 update_candidate = False
1600 run_autopkgtest = False1610 run_autopkgtest = False
1611 run_boottest = False
1601 elif not built_anywhere:1612 elif not built_anywhere:
1602 excuse.addhtml("%s has no up-to-date binaries on any arch" % src)1613 excuse.addhtml("%s has no up-to-date binaries on any arch" % src)
1603 excuse.addreason("no-binaries")1614 excuse.addreason("no-binaries")
1604 update_candidate = False1615 update_candidate = False
1605 run_autopkgtest = False1616 run_autopkgtest = False
1617 run_boottest = False
16061618
1607 # if the suite is unstable, then we have to check the release-critical bug lists before1619 # if the suite is unstable, then we have to check the release-critical bug lists before
1608 # updating testing; if the unstable package has RC bugs that do not apply to the testing1620 # updating testing; if the unstable package has RC bugs that do not apply to the testing
@@ -1635,6 +1647,7 @@
1635 ["<a href=\"http://bugs.debian.org/%s\">#%s</a>" % (urllib.quote(a), a) for a in new_bugs])))1647 ["<a href=\"http://bugs.debian.org/%s\">#%s</a>" % (urllib.quote(a), a) for a in new_bugs])))
1636 update_candidate = False1648 update_candidate = False
1637 run_autopkgtest = False1649 run_autopkgtest = False
1650 run_boottest = False
1638 excuse.addreason("buggy")1651 excuse.addreason("buggy")
16391652
1640 if len(old_bugs) > 0:1653 if len(old_bugs) > 0:
@@ -1653,6 +1666,7 @@
1653 excuse.force()1666 excuse.force()
1654 update_candidate = True1667 update_candidate = True
1655 run_autopkgtest = True1668 run_autopkgtest = True
1669 run_boottest = True
16561670
1657 # if the package can be updated, it is a valid candidate1671 # if the package can be updated, it is a valid candidate
1658 if update_candidate:1672 if update_candidate:
@@ -1662,6 +1676,7 @@
1662 # TODO1676 # TODO
1663 excuse.addhtml("Not considered")1677 excuse.addhtml("Not considered")
1664 excuse.run_autopkgtest = run_autopkgtest1678 excuse.run_autopkgtest = run_autopkgtest
1679 excuse.run_boottest = run_boottest
16651680
1666 self.excuses.append(excuse)1681 self.excuses.append(excuse)
1667 return update_candidate1682 return update_candidate
@@ -1895,7 +1910,7 @@
1895 debug=boottest_debug)1910 debug=boottest_debug)
1896 for excuse in self.excuses:1911 for excuse in self.excuses:
1897 # Skip already invalid excuses.1912 # Skip already invalid excuses.
1898 if not excuse.is_valid:1913 if not excuse.run_boottest:
1899 continue1914 continue
1900 # Also skip removals, binary-only candidates, proposed-updates1915 # Also skip removals, binary-only candidates, proposed-updates
1901 # and unknown versions.1916 # and unknown versions.
@@ -1927,7 +1942,7 @@
1927 forces[0].user))1942 forces[0].user))
1928 status = 'PASS'1943 status = 'PASS'
1929 statuses.add(status)1944 statuses.add(status)
1930 # No boottest attemps requested, it's not relevant in this1945 # No boottest attempts requested, it's not relevant in this
1931 # context, rely on other checks to judge promotion.1946 # context, rely on other checks to judge promotion.
1932 if not statuses:1947 if not statuses:
1933 continue1948 continue
19341949
=== removed file 'britney_boottest.conf'
--- britney_boottest.conf 2015-01-19 19:59:19 +0000
+++ britney_boottest.conf 1970-01-01 00:00:00 +0000
@@ -1,70 +0,0 @@
1# Configuration file for britney
2
3# Paths for control files
4TESTING = data/%(SERIES)
5UNSTABLE = data/%(SERIES)-proposed
6PARTIAL_UNSTABLE = yes
7
8# Output
9NONINST_STATUS = data/%(SERIES)/non-installable-status
10EXCUSES_OUTPUT = output/%(SERIES)/excuses.html
11EXCUSES_YAML_OUTPUT = output/%(SERIES)/excuses.yaml
12UPGRADE_OUTPUT = output/%(SERIES)/output.txt
13HEIDI_OUTPUT = output/%(SERIES)/HeidiResult
14
15# List of release architectures
16ARCHITECTURES = amd64 arm64 armhf i386 powerpc ppc64el
17
18# if you're not in this list, arch: all packages are allowed to break on you
19NOBREAKALL_ARCHES = amd64
20
21# if you're in this list, your packages may not stay in sync with the source
22OUTOFSYNC_ARCHES =
23
24# if you're in this list, your uninstallability count may increase
25BREAK_ARCHES =
26
27# if you're in this list, you are a new architecture
28NEW_ARCHES =
29
30# priorities and delays
31MINDAYS_LOW = 0
32MINDAYS_MEDIUM = 0
33MINDAYS_HIGH = 0
34MINDAYS_CRITICAL = 0
35MINDAYS_EMERGENCY = 0
36DEFAULT_URGENCY = medium
37
38# hint permissions
39HINTS_CJWATSON = ALL
40HINTS_ADCONRAD = ALL
41HINTS_KITTERMAN = ALL
42HINTS_LANEY = ALL
43HINTS_JRIDDELL = ALL
44HINTS_STEFANOR = ALL
45HINTS_STGRABER = ALL
46HINTS_VORLON = ALL
47HINTS_FREEZE = block block-all
48
49HINTS_UBUNTU-TOUCH/DIDROCKS = block unblock
50HINTS_UBUNTU-TOUCH/EV = block unblock
51HINTS_UBUNTU-TOUCH/KEN-VANDINE = block unblock
52HINTS_UBUNTU-TOUCH/LOOL = block unblock
53HINTS_UBUNTU-TOUCH/MATHIEU-TL = block unblock
54HINTS_UBUNTU-TOUCH/OGRA = block unblock
55
56# support for old libraries in testing (smooth update)
57# use ALL to enable smooth updates for all the sections
58#
59# naming a non-existent section will effectively disable new smooth
60# updates but still allow removals to occur
61SMOOTH_UPDATES = badgers
62
63REMOVE_OBSOLETE = no
64
65ADT_ENABLE = no
66ADT_DEBUG = no
67ADT_ARCHES = amd64 i386
68
69BOOTTEST_ENABLE = yes
70BOOTTEST_DEBUG = yes
710
=== modified file 'tests/test_boottest.py'
--- tests/test_boottest.py 2015-01-30 22:57:35 +0000
+++ tests/test_boottest.py 2015-01-30 22:57:35 +0000
@@ -92,7 +92,15 @@
92 def setUp(self):92 def setUp(self):
93 super(TestBoottestEnd2End, self).setUp()93 super(TestBoottestEnd2End, self).setUp()
94 self.britney_conf = os.path.join(94 self.britney_conf = os.path.join(
95 PROJECT_DIR, 'britney_boottest.conf')95 PROJECT_DIR, 'britney.conf')
96 old_config = None
97 with open(self.britney_conf, 'r') as fp:
98 self.old_config = fp.read()
99 config = self.old_config.replace(
100 'ADT_ENABLE = yes', 'ADT_ENABLE = no')
101 with open(self.britney_conf, 'w') as fp:
102 fp.write(config)
103
96 self.data.add('libc6', False, {'Architecture': 'armhf'}),104 self.data.add('libc6', False, {'Architecture': 'armhf'}),
97105
98 self.data.add(106 self.data.add(
@@ -110,6 +118,11 @@
110 'pyqt5:armhf 1.0',118 'pyqt5:armhf 1.0',
111 ])119 ])
112120
121 def tearDown(self):
122 """ Replace the old_config. """
123 with open(self.britney_conf, 'w') as fp:
124 fp.write(self.old_config)
125
113 def create_manifest(self, lines):126 def create_manifest(self, lines):
114 """Create a manifest for this britney run context."""127 """Create a manifest for this britney run context."""
115 path = os.path.join(128 path = os.path.join(

Subscribers

People subscribed via source and target branches