26 Commits

Author SHA1 Message Date
Martin Pitt
943621deb2 Add autopkgtest integration
Add new module autopkgtest.py with the logic for determining the tests for a
source package, requesting tests via AMQP, fetching results from swift, and
keeping track of pending tests between run. This also caches the downloaded
results from swift, as re-dowloading them all is very expensive.

Integrate this into britney.py:

 * In should_upgrade_src(), check whether a package is built everywhere and
   installable (run_autopkgtest), and good enough to run autopkgtests for it
and its reverse dependencies.

 * In write_excuses(), generate test requests for all excuses and create blocks
   for those that cause test regresssions.

This introduces two new hints:

 * force-badtest pkg/ver: Failing results for that package will be ignored.
   This is useful to deal with broken tests that get imported from Debian or
   are from under-maintained packages, or broke due to some infrastructure
   changes. These are long-lived usually.

 * force-skiptest pkg/ver: Test results *triggered by* that package (i. e.
   reverse dependencies) will be ignored. This is mostly useful for landing
   packages that trigger a huge amount of tests (glibc, perl) where some tests
   are just too flaky to get them all passing, and one just wants to land it
   after the remaining failures have been checked. This should be used rarely
   and the hints should be removed immediately again.

Add integration tests that call britney in various scenarios on constructed
fake archives, with mocked AMQP and Swift results.
2016-10-11 11:00:53 +02:00
Niels Thykier
29ecbd80d0 Let the age policy register its own hints
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-10-03 18:05:53 +00:00
Niels Thykier
9efe92de39 Extract an AgeDayHint class from Hint
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-10-03 18:05:53 +00:00
Niels Thykier
e5846fdc8b hints: Move Hint creation out of add_hints
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-10-03 18:05:53 +00:00
Niels Thykier
948d15d536 HintParser: Support adding new hints to the parser
This includes refining "HINTS_ALL" to cover all hints added at
runtime.

Currently, it is not very useful.  However, a later commit will allow
policies to use this feature.

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-10-03 18:05:53 +00:00
Niels Thykier
6328b15a9c Change argument order for HintCollection.add_hint
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-09-23 05:27:44 +00:00
Niels Thykier
513550a8f1 Minor hint creation refactoring
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-09-23 05:27:44 +00:00
Niels Thykier
9b9d44db3a Move some of the hint parsing into hints.py
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
074eb46766 Remove unused assignments/parameters
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-04-26 18:20:11 +02:00
Julien Cristau
94f18322db Switch to print_function
Signed-off-by: Julien Cristau <jcristau@debian.org>
2015-04-26 18:20:09 +02:00
Julien Cristau
3c8f72607e Avoid exploding when reading broken hints
If hint.check() fails, just ignore the hint instead of killing britney.

Signed-off-by: Julien Cristau <jcristau@debian.org>
2013-12-16 23:05:09 +01:00
Adam D. Barratt
a799ce3df1 Make hint comparison more intelligent
"easy foo/1 bar/2" and "easy bar/2 foo/1" are simply different ways of
writing the same hint, so the corresponding Hint objects should compare
as equal.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2013-09-11 19:50:33 +00:00
Adam D. Barratt
16984f345c Add sanity-checking of hints
So far we only check that hints which should have version information
do (and those which should not do not).

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2013-09-11 19:25:57 +00:00
Adam D. Barratt
26ad5a9392 hints: use MigrationItem
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2013-09-07 17:07:32 +00:00
Niels Thykier
d41bf54585 Convert all classes to "new-type" Python classes
Signed-off-by: Niels Thykier <niels@thykier.net>
2012-01-06 19:39:57 +01:00
Adam D. Barratt
f35342993c Hint: implement equality based on comparing string representations
This will work for "single package" hints, but should be extended to
consider "easy foo/1 bar/1" and "easy bar/1 foo/1" to be equivalent.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-11-14 19:13:16 +00:00
Julien Cristau
b76d9e189a Ensure package list contains exactly one item in convenience methods
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-11-14 18:29:43 +00:00
Adam D. Barratt
92eca3958c HintCollection::search(): fix "onlyactive" logic
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-11-10 12:50:01 +00:00
Adam D. Barratt
02ab64272c hints: rename the "hints" method to the more helpful "search".
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-04 20:26:36 +00:00
Adam D. Barratt
a5e448fd27 hints: support package and version properties.
Each property returns the value of the corresponding property for the first
entry in the package list; this is a handy short-cut for hints where there
will only ever be one package in the list (e.g. "age-days", "unblock").

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-04 18:58:14 +00:00
Adam D. Barratt
76a83ae527 Fix some brown paper bag bugs in the hint parsing code.
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-04 18:24:54 +00:00
Adam D. Barratt
ef2fc7750f hints: allow hints to be stringified
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-04 18:24:26 +00:00
Adam D. Barratt
2401e90bce hints: fix up hint parsing code for age-days
string.split()'s second argument specifies the maximum number of times
the string should be split, not the maximum number of elements in the
result.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-04 17:05:35 +00:00
Adam D. Barratt
7700e229cd hints: allow more properties to be used for filtering the hint list
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-04 16:23:06 +00:00
Adam D. Barratt
5a7a0cbe0a hints: export the user associated with a hint via a property
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-04 16:21:10 +00:00
Adam D. Barratt
0c2c672bb2 Add initial version of Hint/HintCollection classes.
These classes encapsulate information about individual hints, with
HintCollection providing a convenient wrapper around a set of hints.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2011-09-01 18:15:34 +00:00