Merge ~vorlon/britney/+git/britney2-ubuntu:adt-results-from-swift into ~ubuntu-release/britney/+git/britney2-ubuntu:master
- Git
- lp:~vorlon/britney/+git/britney2-ubuntu
- adt-results-from-swift
- Merge into 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) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Brian Murray | Approve | ||
Ćukasz Zemczak | Pending | ||
Review via email: mp+409902@code.launchpad.net |
Commit message
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.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/britney2/policies/autopkgtest.py b/britney2/policies/autopkgtest.py |
2 | index 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] |
175 | diff --git a/tests/__init__.py b/tests/__init__.py |
176 | index 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 = |
187 | diff --git a/tests/test_autopkgtest.py b/tests/test_autopkgtest.py |
188 | index 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')), |
This looks good to me but I've a couple of in-line comments.