Merge ~juliank/britney/+git/britney2-ubuntu:consult-queued into ~ubuntu-release/britney/+git/britney2-ubuntu:master

Proposed by Julian Andres Klode
Status: Work in progress
Proposed branch: ~juliank/britney/+git/britney2-ubuntu:consult-queued
Merge into: ~ubuntu-release/britney/+git/britney2-ubuntu:master
Diff against target: 48 lines (+23/-1)
1 file modified
britney2/policies/autopkgtest.py (+23/-1)
Reviewer Review Type Date Requested Status
Ubuntu Release Team Pending
Review via email: mp+463049@code.launchpad.net
To post a comment you must log in.

Unmerged commits

92e0e3c... by Julian Andres Klode

WIP: Consult queued.json before queueing a test

If the test is already in the queue, do not send it again, even
if we did not know it was pending...

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/britney2/policies/autopkgtest.py b/britney2/policies/autopkgtest.py
2index ac001c3..28d8b4f 100644
3--- a/britney2/policies/autopkgtest.py
4+++ b/britney2/policies/autopkgtest.py
5@@ -167,6 +167,9 @@ class AutopkgtestPolicy(BasePolicy):
6 else:
7 self.logger.info("Ignoring ADT_ARCHES %s as it is not in architectures list", arch)
8
9+ with urlopen("https://autopkgtest.ubuntu.com/queued.json") as url:
10+ self.queued = json.load(url)
11+
12 def fetch_db(self):
13 f = None
14 try:
15@@ -1209,13 +1212,32 @@ class AutopkgtestPolicy(BasePolicy):
16
17 self.request_test_if_not_queued(src, arch, trigger, full_triggers, huge=huge)
18
19+ def test_in_queued(self, src, arch, trigger):
20+ """Check if the test is in the queued.json from autopkgtest.ubuntu.com."""
21+ for queue in self.queued["queues"]:
22+ if queue not in ["ubuntu", "huge"]:
23+ continue
24+
25+ for request in self.queued["queues"][queue][self.options.series][arch]["requests"]:
26+ package, args = request.split(None, 1)
27+ if package != src:
28+ continue
29+
30+ args = json.loads(args)
31+ if trigger not in args["triggers"]:
32+ continue
33+
34+ return True
35+
36+ return False
37+
38 def request_test_if_not_queued(self, src, arch, trigger, full_triggers=[], huge=False):
39 if not full_triggers:
40 full_triggers = [trigger]
41
42 # Don't re-request if it's already pending
43 arch_list = self.pending_tests.setdefault(trigger, {}).setdefault(src, [])
44- if arch in arch_list:
45+ if arch in arch_list or self.test_in_queued(src, arch, trigger):
46 self.logger.info('Test %s/%s for %s is already pending, not queueing', src, arch, trigger)
47 else:
48 self.logger.info('Requesting %s autopkgtest on %s to verify %s', src, arch, trigger)

Subscribers

People subscribed via source and target branches