973 Commits

Author SHA1 Message Date
Martin Pitt
0c64998e41 Strip off Multi-Arch qualifiers in reverse dependency calculation
See also http://bugs.debian.org/794194
2015-07-31 09:19:51 +02:00
Martin Pitt
89be9112d3 Alphabetically sort cloud autopkgtest results 2015-07-31 09:18:17 +02:00
Martin Pitt
69bf766a7a test_boottest.py: PEP-8 fixes 2015-07-31 06:41:25 +02:00
Martin Pitt
52ae2eca09 Show regression vs. always-failed in cloud results 2015-07-30 14:08:46 +02:00
Martin Pitt
269b156def Drop obsolete adt-britney autopkgtest code
Now that we look at autopkgtest results from swift we can drop the
adt-britney/lp:auto-package-testing code from autopkgtest.py.

Note that we still need it for boottest.py.
2015-07-28 11:46:17 +02:00
Martin Pitt
fc141215e9 Add more autopkgtest tests, drop TestAdtBritney
Drop TestAdtBritney tests which now fail as we switched results evaluation to
swift. Port relevant tests to TestAutoPkgTest.
2015-07-28 11:32:03 +02:00
Martin Pitt
2bf6eb5652 Switch autopkgtest evaluation to cloud results
Change AutoPackageTest.results() to evaluate the Swift results instead of the
adt-britney ones.

TODO:
 - Add more tests (like for adt-britney)
 - Drop triggering of adt-britney tests
 - Drop adt-britney tests (which fail now)
2015-07-28 11:04:34 +02:00
Martin Pitt
76287b50ca Track "ever passed" in results cache
Add bool whether there is any successful test of src/arch of any version. This
will be used for detecting "regression" vs. "always failed".

WARNING: This changes the results.cache format, so results.cache has to be
removed and recreated before deploying this.
2015-07-28 10:46:30 +02:00
Martin Pitt
bfe182b090 add "run-autopkgtest" tool to re-run tests 2015-07-16 16:47:25 +02:00
Martin Pitt
91418f7eb9 Add hints file for pitti 2015-07-16 15:39:35 +02:00
Martin Pitt
9b0d09cfd8 Add test case for removed package from unstable
This used to trigger an eternal test loop, but this got fixed with the recent
commits.
2015-07-15 11:25:57 +02:00
Martin Pitt
7a3a6d7309 test_autopkgtest.py: Simplify showing britney output
Show britney output if $SHOW_OUTPUT is set in the environment. This avoids
having to modify the source and reverting it before committing.
2015-07-15 09:49:26 +02:00
Martin Pitt
967dc07c21 Consider manually re-ran failed tests for reverse dependencies
Commit 446 only considered a package's own tests. But we also need to check for
newer results of failed reverse dependency tests.  Introduce a new
failed_tests_for_trigger() helper which computes the failed (src, arch) failed
tests for a given package, and fetch new results for all of them.
2015-07-15 09:49:06 +02:00
Martin Pitt
a7c1fca7ef Robustify test configuration changes
Stop assuming whether an option is commented or not in the default britney.conf
file for the tests.
2015-07-15 08:26:19 +02:00
Martin Pitt
3e7c808e1c Consider manually re-ran failed tests
When collecting results, not only check pending tests, but also new results for
failed tests. This picks up new test results from manual retries which might
now have succeeded.
2015-07-15 08:22:37 +02:00
Martin Pitt
3ce7dc3d84 Add test case for previous commit 2015-07-14 20:19:01 +02:00
Martin Pitt
e3ad79bdfb Don't ignore incomplete result.tar files
These usually stem from repeatedly tmpfailing runs where we did not even get as
far as unpacking the source (e. g. repeatedly hitting the ceiling of max
allowed instances/CPUs/etc.). In that case, consider this run a tmpfail result,
instead of ignoring it, as otherwise we end up with that entry being orphaned
in pending.txt.
2015-07-14 18:11:39 +02:00
Martin Pitt
ffe0a99db1 swift result download: Correctly handle "204 No content" status 2015-07-14 08:34:46 +02:00
Martin Pitt
cb66355e95 Comment ADT_AMQP and ADT_SWIFT_URL config options
Their default values are invalid and must be set locally. But as
britney1-ubuntu copies these into production, we would run with an invalid
config with an unmodified config file.
2015-07-14 07:55:30 +02:00
Steve Langasek
13a3ec2593 Merge lp:~pitti/britney/britney2-ubuntu-swiftresults 2015-07-13 08:39:55 -07:00
Martin Pitt
ce775eeb5d Add test results from swift
Until now, autopkgtest results were triggered via an external "adt-britney"
command from lp:auto-package-testing. This required a lot of state files and
duplicated effort, uses hardcoded absolute paths to these external tools, and
is quite hard to understand and maintain. We also want to move away from
Jenkins and rsyncing state files.

Directly retrieve autopkgtest results from a publicly readable and browsable
Swift container, with a debci-compatible layout
(https://wiki.debian.org/debci/DistributedSpec). This now tracks both requests
and results on a per-architecture granularity, so that we can track
per-architecture regressions/always-failed.

Introduce a new ADT_SWIFT_URL config option that sets the swift base URL. If
this key is not set, the behaviour does not change compared to previous
versions, and no results will be retrieved from the cloud.

This still keeps the old adt-britney requests/results as the authoritative
data and for now merely shows the swift results in addition. With that we can
compare the results and run the cloud testing in parallel to find/fix problems
until we switch over. Due to that, the code to britney.py is temporary, does
*not* use AutoPackageTest.results(), and instead just reads the internal
results map.
2015-07-10 06:21:46 +02:00
Martin Pitt
37cd90b415 Add mock swift server
This can be loaded with a predefined set of results, and will then act like a
Swift server with publicly accessible and browsable containers.
2015-07-07 17:45:16 +02:00
Martin Pitt
6e167a0343 Track architectures in requested/pending tests
This is necessary so that we can properly match requested to received results
when the latter arrive in different runs for different architectures.

This also opens up the possibility of per-arch blacklisting later.
2015-07-07 11:59:07 +02:00
Martin Pitt
bf470c6da0 Use current reverse dep version instead of None/-
This makes tracking test results easier and removes some special cases.
2015-07-07 11:11:44 +02:00
Martin Pitt
ded6912443 Add autopkgtest test case for a package pair 2015-07-07 09:10:58 +02:00
Martin Pitt
9c59f35af4 AutoPkgTest.tests_for_source(): Avoid reporting duplicate results 2015-07-07 08:05:19 +02:00
Steve Langasek
2f9f5fd0eb Merge lp:~pitti/britney/britney2-ubuntu-amqp 2015-07-06 09:23:02 -07:00
Martin Pitt
49500104ae AutoPkgTest.tests_for_source(): Don't trip over NBS binaries 2015-07-06 15:02:21 +02:00
Martin Pitt
e0c4ec15b6 AutoPkgTest.update_pending_tests(): Reset self.requested_tests after merging into self.pending_tests 2015-07-06 11:31:21 +02:00
Martin Pitt
cc1bd60d19 Factor out "tests for source package" calculation 2015-07-06 10:24:51 +02:00
Martin Pitt
4dc0d388d3 add ADT_AMQP option to britney_nobreakall.conf too 2015-07-06 08:03:49 +02:00
Martin Pitt
73bb510389 autopkgtest.py: Clarify comments where the "pending tests" state file lives 2015-07-03 07:35:41 +02:00
Martin Pitt
d5181ef32a autopkgtest AMQP: Don't declare queues
Don't use kombu's SimpleQueue() as that always declares queues and we neither
want that (we want to know when we try to talk to a nonexisting queue), nor
might the RabbitMQ ACL allow us to do that. So use kombu.Producer without queue
declaration.
2015-07-03 07:35:00 +02:00
Martin Pitt
335073e901 Add requesting tests through AMQP
Until now, autopkgtests were triggered via an external "adt-britney" command
from lp:auto-package-testing. This duplicated a lot of effort (such as its own
chdist and reverse dependency calculation), maintains a lot of state files,
uses hardcoded absolute paths to these external tools, and is quite hard to
understand and maintain. We want to get rid of all this.

Add logic to AutoPackageTest.request() to use britney's existing reverse
dependency maps and figure out the set of tests to run for packages in
unstable. These are being tracked in "requested_tests".

Add logic to AutoPackageTest.submit() to send test requests to the AMQP server
specified in the new "ADT_AMQP" config key. For testing this can be a file://
URL, and if not set no test requests will be sent at all.

The set of tests which were requested in previous runs are tracked in
UNSTABLE/autopkgtest/pending.txt, so that we don't re-request tests in
subsequent runs.

There is no implementation for collect() and results() yet, these will be done
in a separate commit.

Add initial test cases.
2015-07-02 17:41:49 +02:00
Martin Pitt
a3a523b4ed autopkgtest.py: Factorize logging into helper methods 2015-07-02 17:36:23 +02:00
Martin Pitt
65a1d73164 tests: Don't touch original britney.conf
Don't change britney.conf from the source tree and restore it back after the
tests; this is prone to leave a broken config behind if a test gets
interrupted. Instead, copy the file to our temp dir, and let tests hack on it
there.

(Introduced in lp:~canonical-ci-engineering/britney/boottesting-support)
2015-07-02 16:24:53 +02:00
Martin Pitt
add46d2904 Store autopkgtest flag in sources
Extend read_sources to store a new AUTOPKGTEST boolean flag, which is true if
the Testsuite: field exists and starts with "autopkgtest" (this covers autodep8
cases like autopkgtest-pkg-perl).

Extend TestData.add() to take a new testsuite argument which specifies the
source's Testsuite: field.
2015-07-01 15:49:06 +02:00
Steve Langasek
6b775c50f3 Merge lp:~canonical-ci-engineering/britney/enable-vivid-boottest 2015-06-12 13:56:44 -07:00
Francis Ginther
9e238f7406 For selection of boottest candidates, use a list of url formats for downloading the appropriate touch image manifest for a given release. 2015-06-08 10:25:34 -05:00
Francis Ginther
ca1fc41f9e Refactor the __fetch_manifest() code so that the a successful response is immediately handled and we don't end up with an undefined 'response' on an exception. Also update the tests to return two mocked reponses to match the size of the url_list. 2015-06-05 11:08:48 -05:00
Francis Ginther
7e38fec3cb Use a list of url formats for downloading the appropriate touch image manifest for a given release. 2015-06-04 22:12:18 -05:00
Niels Thykier
8f27919cf8 Create a clone_nuninst function for iter_packages{,_hint}
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:52 +02:00
Niels Thykier
4d218df7d0 iter_pkg: Refactor nuninst cloning
Move nuninst cloning out of the check loop and always populate the new
nuninst entirely.

This will allow some simplifications in other places.

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:52 +02:00
Niels Thykier
ffcfa8e27e britney.py: Avoid some O(n) look-ups in the auto-hinter
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:52 +02:00
Niels Thykier
cc58511c09 Avoid O(n^2) duplication handling when building hints
Use a set to filter out seen items to avoid doing O(n^2)
de-duplication.  For very large hints, this can take considerable
time.

Using "seen_items" to build the actual hints on the (unverified)
assumption that Python can do something "smart" to turn a set into a
frozenset faster than it can with a list.

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:52 +02:00
Niels Thykier
754688851a britney: Optimise original auto-hinter duplication handling
Britney is now smart enough to produce the same result from hints
regardless of the order of the items in the hint.  With this in mind,
we can have the original auto-hinter produce hints as sets and filter
out duplicates as we produce them.

Note that the hints are sorted to produce deterministic output (to
make it easier to compare the hints between runs and changes).

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:52 +02:00
Niels Thykier
e45b219276 britney.py: Pre-split self.options.*_arches
We always use them as lists, so we might as well just split them once
and be done with it.
2015-06-02 21:33:52 +02:00
Niels Thykier
e4c7c4f2a2 britney.py: Minor optimisation to sort_actions
Avoid some cases of O(n^2) behaviour in sort_actions and reduce the
size of n for the remaining O(n^2)-ish behaviour by filtering out
removals early on.

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:52 +02:00
Niels Thykier
d7baa1d7f0 britney.py: Remove redundant arg to format
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:51 +02:00
Niels Thykier
bdcf4e826b Be verbose when rejecting a hint due to invalid candidates
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-06-02 21:33:51 +02:00