Merge ~vorlon/britney/+git/britney2-ubuntu:adt-results-from-swift into ~ubuntu-release/britney/+git/britney2-ubuntu:master

Proposed by Steve Langasek
Status: Merged
Merged at revision: d87dbf0db21983f1dd12c2df8fddd5ed4954c9f8
Proposed branch: ~vorlon/britney/+git/britney2-ubuntu:adt-results-from-swift
Merge into: ~ubuntu-release/britney/+git/britney2-ubuntu:master
Diff against target: 1058 lines (+311/-84)
3 files modified
britney2/policies/autopkgtest.py (+109/-4)
tests/__init__.py (+1/-0)
tests/test_autopkgtest.py (+201/-80)
Reviewer Review Type Date Requested Status
Brian Murray Approve
Ɓukasz Zemczak Pending
Review via email: mp+409902@code.launchpad.net

Description of the change

After implementing this branch I had parked it because I wasn't able to show, with the archive in the state it was at the time, that there was any performance benefit.

Right now, there are several tens of thousands of autopkgtest requests in the queue, and at this scale it makes a difference, saving 14 minutes off of a 56-minute britney run.

So it looks like this is worth doing, for the cases where we are waiting for a large number of results. (Not uncommon, albeit not the normal state of affairs.)

To post a comment you must log in.
Revision history for this message
Brian Murray (brian-murray) wrote :

This looks good to me but I've a couple of in-line comments.

review: Approve

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 5229784..7f970be 100644
3--- a/britney2/policies/autopkgtest.py
4+++ b/britney2/policies/autopkgtest.py
5@@ -28,6 +28,7 @@ import io
6 import itertools
7 import re
8 import socket
9+import sqlite3
10 import sys
11 import time
12 import urllib.parse
13@@ -124,6 +125,7 @@ class AutopkgtestPolicy(BasePolicy):
14 self.pending_tests_file = os.path.join(self.state_dir, 'autopkgtest-pending.json')
15 self.testsuite_triggers = {}
16 self.result_in_baseline_cache = collections.defaultdict(dict)
17+ self.database_path = os.path.join(self.state_dir, 'autopkgtest.db')
18
19 # results map: trigger -> src -> arch -> [passed, version, run_id, seen]
20 # - trigger is "source/version" of an unstable package that triggered
21@@ -140,6 +142,12 @@ class AutopkgtestPolicy(BasePolicy):
22 else:
23 self.results_cache_file = os.path.join(self.state_dir, 'autopkgtest-results.cache')
24
25+ if hasattr(self.options,'adt_db_url') and self.options.adt_db_url:
26+ if not self.fetch_db():
27+ self.logger.error('No autopkgtest db present, exiting')
28+ sys.exit(1)
29+ self.db = sqlite3.connect(self.database_path)
30+
31 try:
32 self.options.adt_ppas = self.options.adt_ppas.strip().split()
33 except AttributeError:
34@@ -157,6 +165,34 @@ class AutopkgtestPolicy(BasePolicy):
35 else:
36 self.logger.info("Ignoring ADT_ARCHES %s as it is not in architectures list", arch)
37
38+ def fetch_db(self):
39+ f = None
40+ try:
41+ f = self.download_retry(self.options.adt_db_url)
42+ http_code = f.getcode()
43+ # file:/// urls don't have the http niceties
44+ if not http_code or http_code == 200:
45+ new_file = self.database_path + '.new'
46+ with open(new_file,'wb') as f_out:
47+ while True:
48+ data=f.read(2048*1024)
49+ if not data:
50+ break
51+ f_out.write(data)
52+ if http_code and os.path.getsize(new_file) != int(f.getheader('content-length')):
53+ self.logger.info('Short read downloading autopkgtest results')
54+ os.unlink(new_file)
55+ else:
56+ os.rename(new_file, self.database_path)
57+ else:
58+ self.logger.error('Failure to fetch autopkgtest results %s: HTTP code=%d', self.options.adt_db_url, f.getcode())
59+ except IOError as e:
60+ self.logger.error('Failure to fetch autopkgtest results %s: %s', self.options.adt_db_url, str(e))
61+ finally:
62+ if f is not None:
63+ f.close()
64+ return os.path.exists(self.database_path)
65+
66 def register_hints(self, hint_parser):
67 hint_parser.register_hint_type('force-badtest', britney2.hints.split_into_one_hint_per_package)
68 hint_parser.register_hint_type('force-skiptest', britney2.hints.split_into_one_hint_per_package)
69@@ -807,7 +843,7 @@ class AutopkgtestPolicy(BasePolicy):
70 try:
71 req = urlopen(url, timeout=30)
72 code = req.getcode()
73- if 200 <= code < 300:
74+ if not code or 200 <= code < 300:
75 return req
76 except socket.timeout as e:
77 self.logger.info(
78@@ -970,6 +1006,71 @@ class AutopkgtestPolicy(BasePolicy):
79 for trigger in result_triggers:
80 self.add_trigger_to_results(trigger, src, ver, arch, run_id, seen, result)
81
82+ def fetch_sqlite_results(self, src, arch):
83+ '''Retrieve new results for source package/arch from sqlite
84+
85+ Remove matching pending_tests entries.
86+ '''
87+
88+ # determine latest run_id from results
89+ latest_run_id = ''
90+ if not self.options.adt_shared_results_cache:
91+ latest_run_id = self.latest_run_for_package(src, arch)
92+ if not latest_run_id:
93+ latest_run_id = ''
94+
95+ cur = self.db.cursor()
96+ for row in cur.execute('SELECT r.exitcode,r.version,r.triggers,'
97+ ' r.run_id FROM test AS t '
98+ 'LEFT JOIN result AS r ON t.id=r.test_id '
99+ 'WHERE t.release=? AND t.arch=? '
100+ 'AND t.package=? AND r.run_id >= ?',
101+ (self.options.series, arch, src, latest_run_id)):
102+ exitcode, ver, triggers, run_id = row
103+ if not ver:
104+ if exitcode in (4, 12, 20):
105+ # repair it
106+ ver = "unknown"
107+ else:
108+ self.logger.error('%s/%s/%s is damaged, ignoring',
109+ arch, src, run_id)
110+ # ignore this; this will leave an orphaned request
111+ # in autopkgtest-pending.json and thus require
112+ # manual retries after fixing the tmpfail, but we
113+ # can't just blindly attribute it to some pending
114+ # test.
115+ return
116+
117+ # parse recorded triggers in test result
118+ if triggers:
119+ result_triggers = [i for i in triggers.split(' ', 1) if '/' in i]
120+ else:
121+ self.logger.error('%s result has no ADT_TEST_TRIGGERS, ignoring')
122+ continue
123+
124+ # 20200101_000000 is 15 chars long
125+ seen = round(calendar.timegm(time.strptime(run_id[:15], '%Y%m%d_%H%M%S')))
126+
127+ # allow some skipped tests, but nothing else
128+ if exitcode in (0, 2):
129+ result = Result.PASS
130+ elif exitcode == 8:
131+ result = Result.NEUTRAL
132+ else:
133+ result = Result.FAIL
134+
135+ self.logger.info(
136+ 'Fetched test result for %s/%s/%s %s (triggers: %s): %s',
137+ src, ver, arch, run_id, result_triggers, result.name.lower())
138+
139+ # remove matching test requests
140+ for trigger in result_triggers:
141+ self.remove_from_pending(trigger, src, arch)
142+
143+ # add this result
144+ for trigger in result_triggers:
145+ self.add_trigger_to_results(trigger, src, ver, arch, run_id, seen, result)
146+
147 def remove_from_pending(self, trigger, src, arch):
148 try:
149 arch_list = self.pending_tests[trigger][src]
150@@ -1071,17 +1172,21 @@ class AutopkgtestPolicy(BasePolicy):
151 result[3] + int(self.options.adt_retry_older_than) * SECPERDAY < self._now:
152 # We might want to retry this failure, so continue
153 pass
154- elif not uses_swift:
155+ elif not uses_swift and not hasattr(self,'db'):
156 # We're done if we don't retrigger and we're not using swift
157 return
158 elif result_state in {Result.PASS, Result.NEUTRAL}:
159 self.logger.debug('%s/%s triggered by %s already known', src, arch, trigger)
160 return
161
162- # Without swift we don't expect new results
163- if uses_swift:
164+ # Without swift or autopkgtest.db we don't expect new results
165+ if hasattr(self,'db'):
166+ self.fetch_sqlite_results(src, arch)
167+ elif uses_swift:
168 self.logger.info('Checking for new results for failed %s/%s for trigger %s', src, arch, trigger)
169 self.fetch_swift_results(self.options.adt_swift_url, src, arch)
170+
171+ if hasattr(self,'db') or uses_swift:
172 # do we have one now?
173 try:
174 self.test_results[trigger][src][arch]
175diff --git a/tests/__init__.py b/tests/__init__.py
176index c6cd09d..eaa9436 100644
177--- a/tests/__init__.py
178+++ b/tests/__init__.py
179@@ -397,6 +397,7 @@ ADT_SHARED_RESULTS_CACHE =
180 ADT_SWIFT_URL = http://localhost:18085
181 ADT_CI_URL = https://autopkgtest.ubuntu.com/
182 ADT_HUGE = 20
183+ADT_DB_URL =
184
185 ADT_SUCCESS_BOUNTY =
186 ADT_REGRESSION_PENALTY =
187diff --git a/tests/test_autopkgtest.py b/tests/test_autopkgtest.py
188index 801c166..5c7bb72 100644
189--- a/tests/test_autopkgtest.py
190+++ b/tests/test_autopkgtest.py
191@@ -12,6 +12,7 @@ import fileinput
192 import unittest
193 import json
194 import pprint
195+import sqlite3
196 import urllib.parse
197
198 import apt_pkg
199@@ -44,11 +45,14 @@ class TestAutopkgtestBase(TestBase):
200 def setUp(self):
201 super().setUp()
202 self.fake_amqp = os.path.join(self.data.path, 'amqp')
203+ self.db_path = os.path.join(self.data.path, 'autopkgtest.db')
204
205- # Set fake AMQP and Swift server
206+ # Set fake AMQP and Swift server and autopkgtest.db
207 for line in fileinput.input(self.britney_conf, inplace=True):
208 if 'ADT_AMQP' in line:
209 print('ADT_AMQP = file://%s' % self.fake_amqp)
210+ elif 'ADT_DB_URL' in line:
211+ print('ADT_DB_URL = file://%s' % self.db_path)
212 else:
213 sys.stdout.write(line)
214
215@@ -82,8 +86,102 @@ class TestAutopkgtestBase(TestBase):
216 self.swift = mock_swift.AutoPkgTestSwiftServer(port=18085)
217 self.swift.set_results({})
218
219+ self.db = self.init_sqlite_db(self.db_path)
220+
221 def tearDown(self):
222 del self.swift
223+ self.db.close()
224+ try:
225+ os.unlink(self.db_path)
226+ except FileNotFoundError: pass
227+
228+ # https://git.launchpad.net/autopkgtest-cloud/tree/charms/focal/autopkgtest-web/webcontrol/publish-db,
229+ # https://git.launchpad.net/autopkgtest-cloud/tree/charms/focal/autopkgtest-web/webcontrol/helpers/utils.py
230+ def init_sqlite_db(self, path):
231+ """Create DB if it does not exist, and connect to it"""
232+
233+ db = sqlite3.connect(path)
234+ db.execute("PRAGMA journal_mode = MEMORY")
235+ db.execute(
236+ "CREATE TABLE current_version("
237+ " release CHAR[20], "
238+ " pocket CHAR[40], "
239+ " component CHAR[10],"
240+ " package CHAR[50], "
241+ " version CHAR[120], "
242+ " PRIMARY KEY(release, package))"
243+ )
244+ db.execute("CREATE INDEX IF NOT EXISTS current_version_pocket_ix "
245+ "ON current_version(pocket, component)")
246+
247+ db.execute(
248+ "CREATE TABLE url_last_checked("
249+ " url CHAR[100], "
250+ " timestamp CHAR[50], "
251+ " PRIMARY KEY(url))"
252+ )
253+
254+ db.execute('CREATE TABLE IF NOT EXISTS test ('
255+ ' id INTEGER PRIMARY KEY, '
256+ ' release CHAR[20], '
257+ ' arch CHAR[20], '
258+ ' package char[120])')
259+ db.execute('CREATE TABLE IF NOT EXISTS result ('
260+ ' test_id INTEGER, '
261+ ' run_id CHAR[30], '
262+ ' version VARCHAR[200], '
263+ ' triggers TEXT, '
264+ ' duration INTEGER, '
265+ ' exitcode INTEGER, '
266+ ' requester TEXT, '
267+ ' PRIMARY KEY(test_id, run_id), '
268+ ' FOREIGN KEY(test_id) REFERENCES test(id))')
269+ # /packages/<name> mostly benefits from the index on package (0.8s -> 0.01s),
270+ # but adding the other fields improves it a further 50% to 0.005s.
271+ db.execute('CREATE UNIQUE INDEX IF NOT EXISTS test_package_uix ON test('
272+ ' package, release, arch)')
273+ db.execute('CREATE INDEX IF NOT EXISTS result_run_ix ON result('
274+ ' run_id desc)')
275+
276+ db.commit()
277+ return db
278+
279+ def set_results(self, results):
280+ '''Wrapper to set autopkgtest results in both swift and sqlite3'''
281+ self.swift.set_results(results)
282+
283+ # swift bucket name is irrelevant for sqlite
284+ for i in results.values():
285+ for k,v in i.items():
286+ (series, arch, discard, source, latest) = k.split('/')
287+ retcode = v[0]
288+ if not v[1]:
289+ source_ver = None
290+ else:
291+ source_ver = v[1].split(' ')[1]
292+ try:
293+ trigger = v[2]['custom_environment'][0].split('=')[1]
294+ except (IndexError, KeyError):
295+ trigger = None
296+
297+ try:
298+ self.db.execute('INSERT INTO test (release, arch, package) '
299+ 'VALUES (?, ?, ?)',
300+ (series, arch, source))
301+ except sqlite3.IntegrityError:
302+ # Completely normal if we have more than one result for
303+ # the same source package; ignore
304+ pass
305+
306+ self.db.execute('INSERT INTO result '
307+ '(test_id, run_id, version, triggers, '
308+ ' exitcode) '
309+ 'SELECT test.id, ?, ?, ?, ? FROM test '
310+ 'WHERE release=? AND arch=? AND package=?',
311+ (latest, source_ver, trigger, retcode,
312+ series, arch, source))
313+
314+ self.db.commit()
315
316 def run_it(self, unstable_add, expect_status, expect_excuses={}):
317 '''Run britney with some unstable packages and verify excuses.
318@@ -181,6 +279,29 @@ class AT(TestAutopkgtestBase):
319 # Tests for generic packages
320 ################################################################
321
322+ def test_fail_on_missing_database(self):
323+ '''Fails if autopkgtest.db is requested but not available'''
324+
325+ os.unlink(self.db_path)
326+
327+ self.data.add_default_packages(lightgreen=False)
328+
329+ britney_failed = 0
330+ try:
331+ self.run_it(
332+ # uninstallable unstable version
333+ [('lightgreen', {'Version': '1.1~beta', 'Depends': 'libc6 (>= 0.9), libgreen1 (>= 2)'}, 'autopkgtest')],
334+ {'lightgreen': (False, {})},
335+ {'lightgreen': [('old-version', '1'), ('new-version', '1.1~beta'),
336+ ('reason', 'depends'),
337+ ('excuses', 'uninstallable on arch amd64, not running autopkgtest there')
338+ ]
339+ })[1]
340+ except AssertionError as e:
341+ britney_failed = 1
342+
343+ self.assertEqual(britney_failed, 1, "DB missing but britney succeeded")
344+
345 def test_no_request_for_uninstallable(self):
346 '''Does not request a test for an uninstallable package'''
347
348@@ -215,7 +336,7 @@ class AT(TestAutopkgtestBase):
349 self.sourceppa_cache['purple'] = {'2': ''}
350
351 # The package has passed before on i386
352- self.swift.set_results({'autopkgtest-testing': {
353+ self.set_results({'autopkgtest-testing': {
354 'testing/i386/p/purple/20150101_100000@': (0, 'purple 1', tr('purple/1')),
355 'testing/amd64/p/purple/20150101_100000@': (0, 'purple 1', tr('purple/1')),
356 'testing/amd64/p/purple/20200101_100000@': (0, 'purple 2', tr('purple/2')),
357@@ -241,7 +362,7 @@ class AT(TestAutopkgtestBase):
358 self.data.add_default_packages(darkgreen=False)
359
360 # The package has failed before, and with a trigger too on amd64
361- self.swift.set_results({'autopkgtest-testing': {
362+ self.set_results({'autopkgtest-testing': {
363 'testing/i386/d/darkgreen/20150101_100000@': (4, 'green 1'),
364 'testing/amd64/d/darkgreen/20150101_100000@': (4, 'green 1', tr('failedbefore/1')),
365 }})
366@@ -286,7 +407,7 @@ class AT(TestAutopkgtestBase):
367
368 # green has passed on amd64 before
369 # lightgreen has passed on i386, therefore we should block on it returning
370- self.swift.set_results({'autopkgtest-testing': {
371+ self.set_results({'autopkgtest-testing': {
372 'testing/amd64/g/green/20150101_100000@': (0, 'green 4', tr('green/1')),
373 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
374 }})
375@@ -318,7 +439,7 @@ class AT(TestAutopkgtestBase):
376 self.data.add_default_packages(green=False)
377
378 # green has passed before on i386 only, therefore ALWAYSFAIL on amd64
379- self.swift.set_results({'autopkgtest-testing': {
380+ self.set_results({'autopkgtest-testing': {
381 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('passedbefore/1')),
382 }})
383
384@@ -361,7 +482,7 @@ class AT(TestAutopkgtestBase):
385 self.data.add_default_packages(green=False)
386
387 # green has passed before on i386 only, therefore ALWAYSFAIL on amd64
388- self.swift.set_results({'autopkgtest-testing': {
389+ self.set_results({'autopkgtest-testing': {
390 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('passedbefore/1')),
391 }})
392
393@@ -379,7 +500,7 @@ class AT(TestAutopkgtestBase):
394 self.assertNotIn('brittle', exc['green']['policy_info']['autopkgtest'])
395
396 # second run collects the results
397- self.swift.set_results({'autopkgtest-testing': {
398+ self.set_results({'autopkgtest-testing': {
399 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
400 'testing/amd64/d/darkgreen/20150101_100001@': (0, 'darkgreen 1', tr('green/2')),
401 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/2')),
402@@ -423,7 +544,7 @@ class AT(TestAutopkgtestBase):
403
404 # third run should not trigger any new tests, should all be in the
405 # cache
406- self.swift.set_results({})
407+ self.set_results({})
408 out = self.run_it(
409 [],
410 {'green': (True, {'green/2': {'amd64': 'PASS', 'i386': 'PASS'},
411@@ -441,7 +562,7 @@ class AT(TestAutopkgtestBase):
412 self.data.add_default_packages(green=False)
413
414 # green has passed before on i386 only, therefore ALWAYSFAIL on amd64
415- self.swift.set_results({'autopkgtest-testing': {
416+ self.set_results({'autopkgtest-testing': {
417 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('passedbefore/1')),
418 }})
419
420@@ -456,7 +577,7 @@ class AT(TestAutopkgtestBase):
421 {'green': [('old-version', '1'), ('new-version', '2')]})
422
423 # second run collects the results
424- self.swift.set_results({'autopkgtest-testing': {
425+ self.set_results({'autopkgtest-testing': {
426 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
427 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
428 'testing/amd64/l/lightgreen/20150101_100101@': (4, 'lightgreen 1', tr('green/2')),
429@@ -488,7 +609,7 @@ class AT(TestAutopkgtestBase):
430
431 self.data.add_default_packages(green=False)
432
433- self.swift.set_results({'autopkgtest-testing': {
434+ self.set_results({'autopkgtest-testing': {
435 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1'),
436 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 1'),
437 'testing/amd64/l/lightgreen/20150101_100101@': (4, 'lightgreen 1'),
438@@ -517,7 +638,7 @@ class AT(TestAutopkgtestBase):
439
440 self.data.add_default_packages(green=False)
441
442- self.swift.set_results({'autopkgtest-testing': {
443+ self.set_results({'autopkgtest-testing': {
444 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
445 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
446 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
447@@ -573,7 +694,7 @@ class AT(TestAutopkgtestBase):
448
449 self.data.add_default_packages(green=False)
450
451- self.swift.set_results({'autopkgtest-testing': {
452+ self.set_results({'autopkgtest-testing': {
453 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
454 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
455 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/2')),
456@@ -602,7 +723,7 @@ class AT(TestAutopkgtestBase):
457
458 self.data.add_default_packages(green=False)
459
460- self.swift.set_results({'autopkgtest-testing': {
461+ self.set_results({'autopkgtest-testing': {
462 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
463 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
464 'testing/i386/l/lightgreen/20150101_100100@': (4, 'lightgreen 1', tr('green/1')),
465@@ -634,7 +755,7 @@ class AT(TestAutopkgtestBase):
466 self.data.add_default_packages(green=False)
467
468 # green has passed before on amd64, doesn't exist on i386
469- self.swift.set_results({'autopkgtest-testing': {
470+ self.set_results({'autopkgtest-testing': {
471 'testing/amd64/g/green64/20150101_100000@': (0, 'green64 0.1', tr('passedbefore/1')),
472 }})
473
474@@ -669,7 +790,7 @@ class AT(TestAutopkgtestBase):
475 'green': ['amd64', 'i386']}})
476
477 # second run collects the results
478- self.swift.set_results({'autopkgtest-testing': {
479+ self.set_results({'autopkgtest-testing': {
480 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
481 'testing/amd64/d/darkgreen/20150101_100001@': (0, 'darkgreen 1', tr('green/2')),
482 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/2')),
483@@ -760,7 +881,7 @@ class AT(TestAutopkgtestBase):
484 'Conflicts': 'blue'},
485 testsuite='autopkgtest', add_src=False)
486
487- self.swift.set_results({'autopkgtest-testing': {
488+ self.set_results({'autopkgtest-testing': {
489 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
490 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/2')),
491 'testing/i386/g/green/20150101_100200@': (0, 'green 2', tr('green/2')),
492@@ -792,7 +913,7 @@ class AT(TestAutopkgtestBase):
493 'Conflicts': 'blue'},
494 testsuite='autopkgtest', add_src=False)
495
496- self.swift.set_results({'autopkgtest-testing': {
497+ self.set_results({'autopkgtest-testing': {
498 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
499 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/2')),
500 'testing/i386/g/green/20150101_100200@': (0, 'green 2', tr('green/2')),
501@@ -817,7 +938,7 @@ class AT(TestAutopkgtestBase):
502 self.data.add_default_packages(green=False, lightgreen=False)
503
504 # old lightgreen fails, thus new green should be held back
505- self.swift.set_results({'autopkgtest-testing': {
506+ self.set_results({'autopkgtest-testing': {
507 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/1.1')),
508 'testing/amd64/d/darkgreen/20150101_100001@': (0, 'darkgreen 1', tr('green/1.1')),
509 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('green/1')),
510@@ -880,7 +1001,7 @@ class AT(TestAutopkgtestBase):
511 'debci-testing-i386:lightgreen {"triggers": ["lightgreen/2"]}']))
512
513 # next run collects the results
514- self.swift.set_results({'autopkgtest-testing': {
515+ self.set_results({'autopkgtest-testing': {
516 'testing/i386/l/lightgreen/20150101_100200@': (0, 'lightgreen 2', tr('lightgreen/2')),
517 'testing/amd64/l/lightgreen/20150101_102000@': (0, 'lightgreen 2', tr('lightgreen/2')),
518 }})
519@@ -905,7 +1026,7 @@ class AT(TestAutopkgtestBase):
520
521 self.data.add_default_packages(green=False)
522
523- self.swift.set_results({'autopkgtest-testing': {
524+ self.set_results({'autopkgtest-testing': {
525 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
526 'testing/amd64/d/darkgreen/20150101_100001@': (0, 'darkgreen 1', tr('green/2')),
527 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('green/2')),
528@@ -946,7 +1067,7 @@ class AT(TestAutopkgtestBase):
529 self.data.add_default_packages(green=False, lightgreen=False)
530
531 # old lightgreen fails, thus new green should be held back
532- self.swift.set_results({'autopkgtest-testing': {
533+ self.set_results({'autopkgtest-testing': {
534 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/1.1')),
535 'testing/amd64/d/darkgreen/20150101_100001@': (0, 'darkgreen 1', tr('green/1.1')),
536 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('green/1')),
537@@ -981,7 +1102,7 @@ class AT(TestAutopkgtestBase):
538 self.assertEqual(self.pending_requests, {})
539
540 # lightgreen 2 stays unbuilt in britney, but we get a test result for it
541- self.swift.set_results({'autopkgtest-testing': {
542+ self.set_results({'autopkgtest-testing': {
543 'testing/i386/l/lightgreen/20150101_100200@': (0, 'lightgreen 2', tr('green/1.1')),
544 'testing/amd64/l/lightgreen/20150101_102000@': (0, 'lightgreen 2', tr('green/1.1')),
545 }})
546@@ -1011,7 +1132,7 @@ class AT(TestAutopkgtestBase):
547
548 self.data.add_default_packages(green=False, lightgreen=False)
549
550- self.swift.set_results({'autopkgtest-testing': {
551+ self.set_results({'autopkgtest-testing': {
552 'testing/i386/l/lightgreen/20150101_100101@': (0, 'lightgreen 1', tr('lightgreen/1')),
553 }})
554
555@@ -1036,7 +1157,7 @@ class AT(TestAutopkgtestBase):
556 self.assertEqual(len(self.amqp_requests), 6)
557
558 # we only get a result for lightgreen 2, not for the requested 1
559- self.swift.set_results({'autopkgtest-testing': {
560+ self.set_results({'autopkgtest-testing': {
561 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
562 'testing/amd64/d/darkgreen/20150101_100001@': (0, 'darkgreen 1', tr('green/2')),
563 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 0.5', tr('green/1')),
564@@ -1092,7 +1213,7 @@ class AT(TestAutopkgtestBase):
565 self.data.add_default_packages(green=False, lightgreen=False)
566
567 # green has passed before on i386 only, therefore ALWAYSFAIL on amd64
568- self.swift.set_results({'autopkgtest-testing': {
569+ self.set_results({'autopkgtest-testing': {
570 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('passedbefore/1')),
571 }})
572
573@@ -1158,7 +1279,7 @@ class AT(TestAutopkgtestBase):
574 self.data.add('brown', False, {'Depends': 'grey'}, testsuite='autopkgtest')
575 self.data.add('brown', True, {'Depends': 'grey'}, testsuite='autopkgtest')
576
577- self.swift.set_results({'autopkgtest-testing': {
578+ self.set_results({'autopkgtest-testing': {
579 'testing/amd64/b/black/20150101_100000@': (0, 'black 1', tr('black/1')),
580 'testing/amd64/b/black/20150102_100000@': (99, 'black blacklisted', tr('black/2')),
581 'testing/amd64/g/grey/20150101_100000@': (99, 'grey blacklisted', tr('grey/1')),
582@@ -1187,7 +1308,7 @@ class AT(TestAutopkgtestBase):
583
584 self.data.add_default_packages(black=False)
585
586- self.swift.set_results({'autopkgtest-testing': {
587+ self.set_results({'autopkgtest-testing': {
588 'testing/amd64/b/black/20150101_100000@': (0, 'black 1', tr('black/1')),
589 'testing/amd64/b/black/20150102_100000@': (99, 'black blacklisted', tr('black/2')),
590 'testing/i386/b/black/20150101_100000@': (0, 'black 1', tr('black/1')),
591@@ -1210,7 +1331,7 @@ class AT(TestAutopkgtestBase):
592
593 self.data.add_default_packages(black=False)
594
595- self.swift.set_results({'autopkgtest-testing': {
596+ self.set_results({'autopkgtest-testing': {
597 'testing/amd64/b/black/20150101_100000@': (0, 'black 1', tr('black/1')),
598 'testing/i386/b/black/20150101_100001@': (0, 'black 1', tr('black/1')),
599 'testing/amd64/b/black/20150102_100000@': (4, 'black 2', tr('black/2')),
600@@ -1232,7 +1353,7 @@ class AT(TestAutopkgtestBase):
601
602 self.data.add_default_packages(green=False)
603
604- self.swift.set_results({'autopkgtest-testing': {
605+ self.set_results({'autopkgtest-testing': {
606 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('newgreen/2')),
607 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('newgreen/2')),
608 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('newgreen/2')),
609@@ -1261,7 +1382,7 @@ class AT(TestAutopkgtestBase):
610
611 self.data.add_default_packages(darkgreen=False)
612
613- self.swift.set_results({'autopkgtest-testing': {
614+ self.set_results({'autopkgtest-testing': {
615 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('darkgreen/1')),
616 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('darkgreen/1')),
617 }})
618@@ -1278,7 +1399,7 @@ class AT(TestAutopkgtestBase):
619 {'darkgreen/2': {'darkgreen': ['amd64', 'i386']}})
620
621 # second run gets the results for darkgreen 2
622- self.swift.set_results({'autopkgtest-testing': {
623+ self.set_results({'autopkgtest-testing': {
624 'testing/i386/d/darkgreen/20150101_100010@': (0, 'darkgreen 2', tr('darkgreen/2')),
625 'testing/amd64/d/darkgreen/20150101_100010@': (0, 'darkgreen 2', tr('darkgreen/2')),
626 }})
627@@ -1322,7 +1443,7 @@ class AT(TestAutopkgtestBase):
628
629 self.data.add_default_packages(green=False)
630
631- self.swift.set_results({'autopkgtest-testing': {
632+ self.set_results({'autopkgtest-testing': {
633 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('green/1')),
634 'testing/amd64/g/green/20150101_100000@': (0, 'green 1', tr('green/1')),
635 'testing/i386/g/green/20150101_100010@': (0, 'green 2', tr('green/2')),
636@@ -1362,7 +1483,7 @@ class AT(TestAutopkgtestBase):
637
638 # third run gets the results for green and lightgreen, darkgreen is
639 # still running
640- self.swift.set_results({'autopkgtest-testing': {
641+ self.set_results({'autopkgtest-testing': {
642 'testing/i386/g/green/20150101_100020@': (0, 'green 3', tr('green/3')),
643 'testing/amd64/g/green/20150101_100020@': (0, 'green 3', tr('green/3')),
644 'testing/i386/l/lightgreen/20150101_100010@': (0, 'lightgreen 1', tr('green/3')),
645@@ -1380,7 +1501,7 @@ class AT(TestAutopkgtestBase):
646 {'green/3': {'darkgreen': ['amd64', 'i386']}})
647
648 # fourth run finally gets the new darkgreen result
649- self.swift.set_results({'autopkgtest-testing': {
650+ self.set_results({'autopkgtest-testing': {
651 'testing/i386/d/darkgreen/20150101_100010@': (0, 'darkgreen 1', tr('green/3')),
652 'testing/amd64/d/darkgreen/20150101_100010@': (0, 'darkgreen 1', tr('green/3')),
653 }})
654@@ -1399,7 +1520,7 @@ class AT(TestAutopkgtestBase):
655
656 self.data.add_default_packages(green=False)
657
658- self.swift.set_results({'autopkgtest-testing': {
659+ self.set_results({'autopkgtest-testing': {
660 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('passedbefore/1')),
661 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('passedbefore/1')),
662 }})
663@@ -1410,7 +1531,7 @@ class AT(TestAutopkgtestBase):
664 {'green': (False, {'darkgreen': {'amd64': 'RUNNING', 'i386': 'RUNNING'}})})
665
666 # second run: i386 result has version 1.1
667- self.swift.set_results({'autopkgtest-testing': {
668+ self.set_results({'autopkgtest-testing': {
669 'testing/i386/d/darkgreen/20150101_100010@': (0, 'darkgreen 1.1', tr('green/2'))
670 }})
671 self.run_it(
672@@ -1420,7 +1541,7 @@ class AT(TestAutopkgtestBase):
673 })})
674
675 # third run: amd64 result has version 1.2
676- self.swift.set_results({'autopkgtest-testing': {
677+ self.set_results({'autopkgtest-testing': {
678 'testing/amd64/d/darkgreen/20150101_100010@': (0, 'darkgreen 1.2', tr('green/2')),
679 }})
680 self.run_it(
681@@ -1435,7 +1556,7 @@ class AT(TestAutopkgtestBase):
682 self.data.add_default_packages(lightgreen=False)
683
684 # one tmpfail result without testpkg-version, should be ignored
685- self.swift.set_results({'autopkgtest-testing': {
686+ self.set_results({'autopkgtest-testing': {
687 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('lightgreen/1')),
688 'testing/i386/l/lightgreen/20150101_100101@': (16, None, tr('lightgreen/2')),
689 'testing/amd64/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('lightgreen/1')),
690@@ -1449,7 +1570,7 @@ class AT(TestAutopkgtestBase):
691 {'lightgreen/2': {'lightgreen': ['i386']}})
692
693 # one more tmpfail result, should not confuse britney with None version
694- self.swift.set_results({'autopkgtest-testing': {
695+ self.set_results({'autopkgtest-testing': {
696 'testing/i386/l/lightgreen/20150101_100201@': (16, None, tr('lightgreen/2')),
697 }})
698 self.run_it(
699@@ -1466,7 +1587,7 @@ class AT(TestAutopkgtestBase):
700 self.data.add_default_packages(green=False)
701
702 # first run fails
703- self.swift.set_results({'autopkgtest-testing': {
704+ self.set_results({'autopkgtest-testing': {
705 'testing/i386/g/green/20150101_100000@': (0, 'green 2', tr('green/1')),
706 'testing/i386/g/green/20150101_100101@': (4, 'green 2', tr('green/2')),
707 'testing/amd64/g/green/20150101_100000@': (0, 'green 2', tr('green/1')),
708@@ -1490,7 +1611,7 @@ class AT(TestAutopkgtestBase):
709
710 # re-running test manually succeeded (note: darkgreen result should be
711 # cached already)
712- self.swift.set_results({'autopkgtest-testing': {
713+ self.set_results({'autopkgtest-testing': {
714 'testing/i386/g/green/20150101_100201@': (0, 'green 2', tr('green/2')),
715 'testing/amd64/g/green/20150101_100201@': (0, 'green 2', tr('green/2')),
716 'testing/i386/l/lightgreen/20150101_100201@': (0, 'lightgreen 1', tr('green/2')),
717@@ -1517,7 +1638,7 @@ class AT(TestAutopkgtestBase):
718 self.data.add_default_packages(libc6=False)
719
720 # new libc6 works fine with green
721- self.swift.set_results({'autopkgtest-testing': {
722+ self.set_results({'autopkgtest-testing': {
723 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('libc6/2')),
724 'testing/amd64/g/green/20150101_100000@': (0, 'green 1', tr('libc6/2')),
725 }})
726@@ -1541,7 +1662,7 @@ class AT(TestAutopkgtestBase):
727
728 # new green fails; that's not libc6's fault though, so it should stay
729 # valid
730- self.swift.set_results({'autopkgtest-testing': {
731+ self.set_results({'autopkgtest-testing': {
732 'testing/i386/g/green/20150101_100100@': (4, 'green 2', tr('green/2')),
733 'testing/amd64/g/green/20150101_100100@': (4, 'green 2', tr('green/2')),
734 }})
735@@ -1563,7 +1684,7 @@ class AT(TestAutopkgtestBase):
736
737 self.data.add_default_packages(green=False, lightgreen=False)
738
739- self.swift.set_results({'autopkgtest-testing': {
740+ self.set_results({'autopkgtest-testing': {
741 'testing/i386/g/green/20150101_100101@': (0, 'green 1', tr('green/1')),
742 'testing/amd64/g/green/20150101_100101@': (0, 'green 1', tr('green/1')),
743 'testing/i386/g/green/20150101_100201@': (0, 'green 2', tr('green/2')),
744@@ -1590,7 +1711,7 @@ class AT(TestAutopkgtestBase):
745 # green
746 self.data.remove_all(True)
747
748- self.swift.set_results({'autopkgtest-testing': {
749+ self.set_results({'autopkgtest-testing': {
750 # add new result for lightgreen 1
751 'testing/i386/l/lightgreen/20150101_100301@': (0, 'lightgreen 1', tr('green/2')),
752 'testing/amd64/l/lightgreen/20150101_100301@': (0, 'lightgreen 1', tr('green/2')),
753@@ -1626,7 +1747,7 @@ class AT(TestAutopkgtestBase):
754 # # self.data.add_default_packages(lightgreen=False)
755 # #
756 # # # lightgreen has passed before on i386 only, therefore ALWAYSFAIL on amd64
757-# # self.swift.set_results({'autopkgtest-testing': {
758+# # self.set_results({'autopkgtest-testing': {
759 # # 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('passedbefore/1')),
760 # # }})
761 # #
762@@ -1686,7 +1807,7 @@ class AT(TestAutopkgtestBase):
763
764 self.data.add_default_packages(lightgreen=False)
765
766- self.swift.set_results({'autopkgtest-testing': {
767+ self.set_results({'autopkgtest-testing': {
768 'testing/i386/r/rainbow/20150101_100000@': (0, 'rainbow 1', tr('passedbefore/1')),
769 }})
770
771@@ -1734,7 +1855,7 @@ class AT(TestAutopkgtestBase):
772
773 self.data.add_default_packages(green=False)
774
775- self.swift.set_results({'autopkgtest-testing': {
776+ self.set_results({'autopkgtest-testing': {
777 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
778 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
779 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
780@@ -1762,7 +1883,7 @@ class AT(TestAutopkgtestBase):
781
782 self.data.add_default_packages(green=False)
783
784- self.swift.set_results({'autopkgtest-testing': {
785+ self.set_results({'autopkgtest-testing': {
786 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
787 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
788 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
789@@ -1805,7 +1926,7 @@ class AT(TestAutopkgtestBase):
790
791 self.data.add_default_packages(green=False)
792
793- self.swift.set_results({'autopkgtest-testing': {
794+ self.set_results({'autopkgtest-testing': {
795 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
796 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
797 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
798@@ -1847,7 +1968,7 @@ class AT(TestAutopkgtestBase):
799
800 self.data.add_default_packages(green=False)
801
802- self.swift.set_results({'autopkgtest-testing': {
803+ self.set_results({'autopkgtest-testing': {
804 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
805 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
806 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
807@@ -1888,7 +2009,7 @@ class AT(TestAutopkgtestBase):
808
809 self.data.add_default_packages(green=False)
810
811- self.swift.set_results({'autopkgtest-testing': {
812+ self.set_results({'autopkgtest-testing': {
813 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
814 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
815 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
816@@ -1917,7 +2038,7 @@ class AT(TestAutopkgtestBase):
817 self.create_hint('autopkgtest', 'force-skiptest green/2')
818
819 # regression of green, darkgreen ok, lightgreen running
820- self.swift.set_results({'autopkgtest-testing': {
821+ self.set_results({'autopkgtest-testing': {
822 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('passedbefore/1')),
823 'testing/i386/g/green/20150101_100200@': (4, 'green 2', tr('green/2')),
824 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
825@@ -1941,7 +2062,7 @@ class AT(TestAutopkgtestBase):
826 self.data.add_default_packages(green=False)
827
828 # green has passed before on i386 only, therefore ALWAYSFAIL on amd64
829- self.swift.set_results({'autopkgtest-testing': {
830+ self.set_results({'autopkgtest-testing': {
831 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('passedbefore/1')),
832 }})
833
834@@ -1964,7 +2085,7 @@ class AT(TestAutopkgtestBase):
835
836 self.create_hint('freeze', 'block-all source')
837
838- self.swift.set_results({'autopkgtest-testing': {
839+ self.set_results({'autopkgtest-testing': {
840 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('passedbefore/1')),
841 'testing/amd64/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('passedbefore/1')),
842 }})
843@@ -1974,7 +2095,7 @@ class AT(TestAutopkgtestBase):
844 {'lightgreen': (False, {'lightgreen': {'amd64': 'RUNNING', 'i386': 'RUNNING'}})}
845 )
846
847- self.swift.set_results({'autopkgtest-testing': {
848+ self.set_results({'autopkgtest-testing': {
849 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 2', tr('lightgreen/2')),
850 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 2', tr('lightgreen/2')),
851 }})
852@@ -1990,7 +2111,7 @@ class AT(TestAutopkgtestBase):
853
854 self.data.add_default_packages(lightgreen=False)
855
856- self.swift.set_results({'autopkgtest-testing': {
857+ self.set_results({'autopkgtest-testing': {
858 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('lightgreen/1')),
859 'testing/amd64/l/lightgreen/20150101_100101@': (4, 'lightgreen 2', tr('lightgreen/2')),
860 }})
861@@ -2011,7 +2132,7 @@ class AT(TestAutopkgtestBase):
862
863 self.data.add_default_packages(lightgreen=False)
864
865- self.swift.set_results({'autopkgtest-testing': {
866+ self.set_results({'autopkgtest-testing': {
867 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('lightgreen/1')),
868 'testing/amd64/l/lightgreen/20150101_100101@': (4, 'lightgreen 2', tr('lightgreen/2')),
869 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('lightgreen/1')),
870@@ -2034,7 +2155,7 @@ class AT(TestAutopkgtestBase):
871
872 self.data.add_default_packages(lightgreen=False)
873
874- self.swift.set_results({'autopkgtest-testing': {
875+ self.set_results({'autopkgtest-testing': {
876 'testing/amd64/l/lightgreen/20150101_100100@': (4, 'lightgreen 1', tr('lightgreen/1')),
877 'testing/amd64/l/lightgreen/20150102_100101@': (0, 'lightgreen 2', tr('lightgreen/2')),
878 }})
879@@ -2055,7 +2176,7 @@ class AT(TestAutopkgtestBase):
880
881 self.data.add_default_packages(lightgreen=False)
882
883- self.swift.set_results({'autopkgtest-testing': {
884+ self.set_results({'autopkgtest-testing': {
885 'testing/amd64/l/lightgreen/20150101_100100@': (4, 'lightgreen 1', tr('lightgreen/1')),
886 'testing/amd64/l/lightgreen/20150102_100101@': (0, 'lightgreen 2', tr('lightgreen/2')),
887 'testing/amd64/l/lightgreen/20150103_100101@': (4, 'lightgreen 3', tr('lightgreen/3')),
888@@ -2077,7 +2198,7 @@ class AT(TestAutopkgtestBase):
889
890 self.data.add_default_packages(green=False)
891
892- self.swift.set_results({'autopkgtest-testing': {
893+ self.set_results({'autopkgtest-testing': {
894 'testing/amd64/l/lightgreen/20150101_100100@': (4, 'lightgreen 0.1', tr('lightgreen/0.1')),
895 'testing/amd64/l/lightgreen/20150102_100101@': (0, 'lightgreen 1', tr('lightgreen/1')),
896 'testing/amd64/l/lightgreen/20150103_100101@': (4, 'lightgreen 1', tr('green/2')),
897@@ -2099,7 +2220,7 @@ class AT(TestAutopkgtestBase):
898
899 self.data.add_default_packages(green=False, lightgreen=False)
900
901- self.swift.set_results({'autopkgtest-testing': {
902+ self.set_results({'autopkgtest-testing': {
903 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('lightgreen/1')),
904 'testing/amd64/l/lightgreen/20150102_100100@': (4, 'lightgreen 1', tr('green/2')),
905 'testing/amd64/l/lightgreen/20150103_100101@': (0, 'lightgreen 2', tr('lightgreen/2')),
906@@ -2151,7 +2272,7 @@ class AT(TestAutopkgtestBase):
907
908 self.data.add_default_packages(green=False, lightgreen=False)
909
910- self.swift.set_results({'autopkgtest-testing': {
911+ self.set_results({'autopkgtest-testing': {
912 'testing/amd64/l/lightgreen/20150101_100101@': (0, 'lightgreen 1', tr('lightgreen/1')),
913 'testing/amd64/l/lightgreen/20150102_100101@': (4, 'lightgreen 1', tr('green/2')),
914 'testing/amd64/l/lightgreen/20150103_100102@': (0, 'lightgreen 2', tr('lightgreen/2')),
915@@ -2179,7 +2300,7 @@ class AT(TestAutopkgtestBase):
916
917 self.data.add_default_packages(green=False, lightgreen=False)
918
919- self.swift.set_results({'autopkgtest-testing': {
920+ self.set_results({'autopkgtest-testing': {
921 'testing/amd64/l/lightgreen/20150101_100101@': (0, 'lightgreen 1', tr('lightgreen/1')),
922 'testing/amd64/l/lightgreen/20150102_100101@': (0, 'lightgreen 1', tr('green/2')),
923 'testing/amd64/l/lightgreen/20150103_100102@': (0, 'lightgreen 2', tr('lightgreen/2')),
924@@ -2212,7 +2333,7 @@ class AT(TestAutopkgtestBase):
925 self.data.add('dkms', False, {})
926 self.data.add('fancy-dkms', False, {'Source': 'fancy', 'Depends': 'dkms (>= 1)'}, testsuite='autopkgtest-pkg-dkms')
927
928- self.swift.set_results({'autopkgtest-testing': {
929+ self.set_results({'autopkgtest-testing': {
930 'testing/i386/f/fancy/20150101_100101@': (0, 'fancy 0.1', tr('passedbefore/1'))
931 }})
932
933@@ -2260,7 +2381,7 @@ class AT(TestAutopkgtestBase):
934
935 # works against linux-meta and -64only, fails against grumpy i386, no
936 # result yet for grumpy amd64
937- self.swift.set_results({'autopkgtest-testing': {
938+ self.set_results({'autopkgtest-testing': {
939 'testing/amd64/f/fancy/20150101_100301@': (0, 'fancy 0.5', tr('passedbefore/1')),
940 'testing/i386/f/fancy/20150101_100101@': (0, 'fancy 1', tr('linux-meta/1')),
941 'testing/amd64/f/fancy/20150101_100101@': (0, 'fancy 1', tr('linux-meta/1')),
942@@ -2289,7 +2410,7 @@ class AT(TestAutopkgtestBase):
943
944 # works against linux-meta and -64only, fails against grumpy i386, no
945 # result yet for grumpy amd64
946- self.swift.set_results({'autopkgtest-testing': {
947+ self.set_results({'autopkgtest-testing': {
948 # old results without trigger info
949 'testing/i386/f/fancy/20140101_100101@': (0, 'fancy 1', {}),
950 'testing/amd64/f/fancy/20140101_100101@': (8, 'fancy 1', {}),
951@@ -2331,7 +2452,7 @@ class AT(TestAutopkgtestBase):
952 self.data.add('linux-libc-dev', False, {'Source': 'linux'}, testsuite='autopkgtest')
953 self.data.add('linux-image', False, {'Source': 'linux-meta', 'Depends': 'linux-image-1'})
954
955- self.swift.set_results({'autopkgtest-testing': {
956+ self.set_results({'autopkgtest-testing': {
957 'testing/amd64/l/lxc/20150101_100101@': (0, 'lxc 0.1', tr('passedbefore/1'))
958 }})
959
960@@ -2365,7 +2486,7 @@ class AT(TestAutopkgtestBase):
961 self.data.add('linux-image-1', False, {'Source': 'linux'}, testsuite='autopkgtest')
962 self.data.add('linux-firmware', False, {'Source': 'linux-firmware'}, testsuite='autopkgtest')
963
964- self.swift.set_results({'autopkgtest-testing': {
965+ self.set_results({'autopkgtest-testing': {
966 'testing/i386/f/fancy/20150101_090000@': (0, 'fancy 0.5', tr('passedbefore/1')),
967 'testing/i386/l/linux/20150101_100000@': (0, 'linux 2', tr('linux-meta/0.2')),
968 'testing/amd64/l/linux/20150101_100000@': (0, 'linux 2', tr('linux-meta/0.2')),
969@@ -2392,7 +2513,7 @@ class AT(TestAutopkgtestBase):
970 )
971
972 # now linux-meta is ready to go
973- self.swift.set_results({'autopkgtest-testing': {
974+ self.set_results({'autopkgtest-testing': {
975 'testing/i386/f/fancy/20150101_100000@': (0, 'fancy 1', tr('linux-meta/0.2')),
976 'testing/amd64/f/fancy/20150101_100000@': (0, 'fancy 1', tr('linux-meta/0.2')),
977 }})
978@@ -2419,7 +2540,7 @@ class AT(TestAutopkgtestBase):
979 self.data.add('notme', False, {'Depends': 'libgcc1'}, testsuite='autopkgtest')
980
981 # binutils has passed before on i386 only, therefore ALWAYSFAIL on amd64
982- self.swift.set_results({'autopkgtest-testing': {
983+ self.set_results({'autopkgtest-testing': {
984 'testing/i386/b/binutils/20150101_100000@': (0, 'binutils 1', tr('passedbefore/1')),
985 }})
986
987@@ -2435,7 +2556,7 @@ class AT(TestAutopkgtestBase):
988 self.data.add('gcc-7', False, {}, testsuite='autopkgtest')
989
990 # gcc-7 has passed before on i386 only, therefore ALWAYSFAIL on amd64
991- self.swift.set_results({'autopkgtest-series': {
992+ self.set_results({'autopkgtest-series': {
993 'series/i386/g/gcc-7/20150101_100000@': (0, 'gcc-7 1', tr('passedbefore/1')),
994 }})
995
996@@ -2510,7 +2631,7 @@ class AT(TestAutopkgtestBase):
997 self.assertEqual(len(self.amqp_requests), 2)
998
999 # add results to PPA specific swift container
1000- self.swift.set_results({'autopkgtest-testing-awesome-developers-staging': {
1001+ self.set_results({'autopkgtest-testing-awesome-developers-staging': {
1002 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1', tr('passedbefore/1')),
1003 'testing/i386/l/lightgreen/20150101_100100@': (4, 'lightgreen 2', tr('lightgreen/2')),
1004 'testing/amd64/l/lightgreen/20150101_100101@': (0, 'lightgreen 2', tr('lightgreen/2')),
1005@@ -2574,7 +2695,7 @@ class AT(TestAutopkgtestBase):
1006 self.data.add_default_packages(lightgreen=False)
1007
1008 # first run to create autopkgtest-results.cache
1009- self.swift.set_results({'autopkgtest-testing': {
1010+ self.set_results({'autopkgtest-testing': {
1011 'testing/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 2', tr('lightgreen/2')),
1012 'testing/amd64/l/lightgreen/20150101_100000@': (0, 'lightgreen 2', tr('lightgreen/2')),
1013 }})
1014@@ -2599,7 +2720,7 @@ class AT(TestAutopkgtestBase):
1015 sys.stdout.write(line)
1016
1017 # second run, should now not update cache
1018- self.swift.set_results({'autopkgtest-testing': {
1019+ self.set_results({'autopkgtest-testing': {
1020 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 3', tr('lightgreen/3')),
1021 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 3', tr('lightgreen/3')),
1022 }})
1023@@ -2714,7 +2835,7 @@ class AT(TestAutopkgtestBase):
1024 self.data.add_default_packages(green=False)
1025
1026 # green has passed before on i386 only, therefore ALWAYSFAIL on amd64
1027- self.swift.set_results({'autopkgtest-testing': {
1028+ self.set_results({'autopkgtest-testing': {
1029 'testing/i386/g/green/20150101_100000@': (0, 'green 1', tr('passedbefore/1')),
1030 }})
1031
1032@@ -2732,7 +2853,7 @@ class AT(TestAutopkgtestBase):
1033 self.assertEqual(exc['green']['policy_info']['age']['age-requirement'], 40)
1034
1035 # second run collects the results
1036- self.swift.set_results({'autopkgtest-testing': {
1037+ self.set_results({'autopkgtest-testing': {
1038 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
1039 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
1040 'testing/amd64/l/lightgreen/20150101_100101@': (4, 'lightgreen 1', tr('green/2')),
1041@@ -2784,7 +2905,7 @@ class AT(TestAutopkgtestBase):
1042
1043 self.data.add_default_packages(green=False)
1044
1045- self.swift.set_results({'autopkgtest-testing': {
1046+ self.set_results({'autopkgtest-testing': {
1047 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
1048 'testing/amd64/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/1')),
1049 'testing/amd64/l/lightgreen/20150101_100101@': (4, 'lightgreen 1', tr('green/2')),
1050@@ -2819,7 +2940,7 @@ class AT(TestAutopkgtestBase):
1051
1052 self.data.add_default_packages(green=False)
1053
1054- self.swift.set_results({'autopkgtest-testing': {
1055+ self.set_results({'autopkgtest-testing': {
1056 'testing/i386/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
1057 'testing/amd64/d/darkgreen/20150101_100000@': (0, 'darkgreen 1', tr('green/2')),
1058 'testing/i386/l/lightgreen/20150101_100100@': (0, 'lightgreen 1', tr('green/2')),

Subscribers

People subscribed via source and target branches