Merge lp:~laney/britney/autopkgtest-no-delay-if-never-passed into lp:~ubuntu-release/britney/britney2-ubuntu

Proposed by Iain Lane
Status: Merged
Approved by: Martin Pitt
Approved revision: 532
Merged at revision: 532
Proposed branch: lp:~laney/britney/autopkgtest-no-delay-if-never-passed
Merge into: lp:~ubuntu-release/britney/britney2-ubuntu
Diff against target: 456 lines (+160/-52)
3 files modified
autopkgtest.py (+9/-3)
excuse.py (+2/-1)
tests/test_autopkgtest.py (+149/-48)
To merge this branch: bzr merge lp:~laney/britney/autopkgtest-no-delay-if-never-passed
Reviewer Review Type Date Requested Status
Martin Pitt (community) Approve
Ubuntu Package Archive Administrators Pending
Review via email: mp+277832@code.launchpad.net

This proposal supersedes a proposal from 2015-11-17.

Description of the change

[ resubmitting since git-remote-bzr seems to have broken the diff ]

This is an attempt at fixing bug #1501699.

With this branch, we now take into account the "ever_passed" flag to decide if a test run has passed or not. It has passed if the test is ALWAYSFAILED or RUNNING but has never passed, for all arches.

Many testcases relied on the previous behaviour, so I inserted some 'passing' test results to cause the packages to be held.

There are some delicacies around kernel triggering that I don't fully understand (this is my first venture into britney/autopkgtest) - please check I didn't break anything.

To post a comment you must log in.
Revision history for this message
Iain Lane (laney) : Posted in a previous version of this proposal
Revision history for this message
Martin Pitt (pitti) wrote : Posted in a previous version of this proposal

Thanks for working on this! There's a couple of issues here, but the overall direction is sound. Looking forward to this, especially in times like these when the queues are super full.

review: Needs Fixing
532. By Iain Lane

Don't wait for tests which have never passed

They won't ever block promotion, so we might as well make them
candidates right away (but trigger their tests).

Revision history for this message
Iain Lane (laney) wrote :

OK, I think I have fixed most of the comments from last time - please re-review. Sorry if I still misunderstood something. I thought that adding a new status would be a huge diff but it doesn't seem that bad in the end.

There's a comment/question inline.

Revision history for this message
Martin Pitt (pitti) wrote :

Thanks, this looks good now! I have one nitpick, but as I'd like to clean up this part anyway I'll leave it to you if you want to change it or not. Please push (to keep the individual commits, these are very useful now -- i. e. don't merge).

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'autopkgtest.py'
2--- autopkgtest.py 2015-11-17 08:15:31 +0000
3+++ autopkgtest.py 2015-11-18 14:38:44 +0000
4@@ -653,10 +653,10 @@
5 def results(self, trigsrc, trigver):
6 '''Return test results for triggering package
7
8- Return (passed, src, ver, arch -> ALWAYSFAIL|PASS|FAIL|RUNNING)
9+ Return (passed, src, ver, arch -> ALWAYSFAIL|PASS|FAIL|RUNNING|RUNNING-NEVERPASSED)
10 iterable for all package tests that got triggered by trigsrc/trigver.
11 '''
12- # (src, ver) -> arch -> ALWAYSFAIL|PASS|FAIL|RUNNING
13+ # (src, ver) -> arch -> ALWAYSFAIL|PASS|FAIL|RUNNING|RUNNING-NEVERPASSED
14 pkg_arch_result = {}
15 trigger = trigsrc + '/' + trigver
16
17@@ -702,7 +702,13 @@
18 # no result for testsrc/testver/arch; still running?
19 try:
20 self.pending_tests[testsrc][testver][arch]
21- result = 'RUNNING'
22+ # if we can't find a result, assume that it has never passed (i.e. this is the first run)
23+ (_, _, ever_passed) = self.test_results.get(testsrc, {}).get(arch, (None, None, False))
24+
25+ if ever_passed:
26+ result = 'RUNNING'
27+ else:
28+ result = 'RUNNING-NEVERPASSED'
29 except KeyError:
30 # ignore if adt or swift results are disabled,
31 # otherwise this is unexpected
32
33=== modified file 'excuse.py'
34--- excuse.py 2015-08-25 10:21:51 +0000
35+++ excuse.py 2015-11-18 14:38:44 +0000
36@@ -22,6 +22,7 @@
37 "ALWAYSFAIL": '<span style="background:#e5c545">Always failed</span>',
38 "REGRESSION": '<span style="background:#ff6666">Regression</span>',
39 "RUNNING": '<span style="background:#99ddff">Test in progress</span>',
40+ "RUNNING-NEVERPASSED": '<span style="background:#99ddff">Test in progress (never passed)</span>',
41 }
42
43
44@@ -72,7 +73,7 @@
45 self.reason = {}
46 self.htmlline = []
47 # type (e. g. "autopkgtest") -> package (e. g. "foo 2-1") -> arch ->
48- # ['PASS'|'ALWAYSFAIL'|'REGRESSION'|'RUNNING', url]
49+ # ['PASS'|'ALWAYSFAIL'|'REGRESSION'|'RUNNING'|'RUNNING-NEVERPASSED', url]
50 self.tests = {}
51
52 def sortkey(self):
53
54=== modified file 'tests/test_autopkgtest.py'
55--- tests/test_autopkgtest.py 2015-11-06 22:51:55 +0000
56+++ tests/test_autopkgtest.py 2015-11-18 14:38:44 +0000
57@@ -6,6 +6,8 @@
58 # the Free Software Foundation; either version 2 of the License, or
59 # (at your option) any later version.
60
61+from textwrap import dedent
62+
63 import apt_pkg
64 import os
65 import sys
66@@ -114,7 +116,7 @@
67
68 for src, (is_candidate, testmap) in expect_status.items():
69 self.assertEqual(excuses_dict[src]['is-candidate'], is_candidate,
70- src + ': ' + str(excuses_dict[src]))
71+ src + ': ' + pprint.pformat(excuses_dict[src]))
72 for testsrc, archmap in testmap.items():
73 for arch, status in archmap.items():
74 self.assertEqual(excuses_dict[src]['tests']['autopkgtest'][testsrc][arch][0],
75@@ -169,14 +171,54 @@
76 self.assertEqual(self.pending_requests, '')
77 self.assertEqual(self.amqp_requests, set())
78
79+ def test_no_wait_for_always_failed_test(self):
80+ '''We do not need to wait for results for tests which have always failed'''
81+
82+ # The package has failed before, and with a trigger too on amd64
83+ self.swift.set_results({'autopkgtest-series': {
84+ 'series/i386/d/darkgreen/20150101_100000@': (4, 'green 1'),
85+ 'series/amd64/d/darkgreen/20150101_100000@': (4, 'green 1', tr('somepackage/1')),
86+ }})
87+
88+ exc = self.do_test(
89+ [('darkgreen', {'Version': '2'}, 'autopkgtest')],
90+ {'darkgreen': (True, {'darkgreen 2': {'i386': 'RUNNING-NEVERPASSED',
91+ 'amd64': 'RUNNING-NEVERPASSED'}})}
92+ )[1]
93+
94+ # the test should stlil be triggered though
95+ self.assertEqual(exc['darkgreen']['tests'], {'autopkgtest':
96+ {'darkgreen 2': {
97+ 'amd64': ['RUNNING-NEVERPASSED',
98+ 'http://autopkgtest.ubuntu.com/packages/d/darkgreen/series/amd64'],
99+ 'i386': ['RUNNING-NEVERPASSED',
100+ 'http://autopkgtest.ubuntu.com/packages/d/darkgreen/series/i386']}}})
101+
102+ self.assertEqual(
103+ self.pending_requests, dedent('''\
104+ darkgreen 2 amd64 darkgreen 2
105+ darkgreen 2 i386 darkgreen 2
106+ '''))
107+
108+ self.assertEqual(
109+ self.amqp_requests,
110+ set(['debci-series-amd64:darkgreen {"triggers": ["darkgreen/2"]}',
111+ 'debci-series-i386:darkgreen {"triggers": ["darkgreen/2"]}']))
112+
113+
114 def test_multi_rdepends_with_tests_all_running(self):
115 '''Multiple reverse dependencies with tests (all running)'''
116
117+ # green has passed before on i386 only, therefore NEVERPASSED on amd64
118+ self.swift.set_results({'autopkgtest-series': {
119+ 'series/i386/g/green/20150101_100000@': (0, 'green 1'),
120+ }})
121+
122 self.do_test(
123 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
124- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
125- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
126- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
127+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
128+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
129+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
130 })
131 },
132 {'green': [('old-version', '1'), ('new-version', '2')]})
133@@ -211,12 +253,17 @@
134 def test_multi_rdepends_with_tests_all_pass(self):
135 '''Multiple reverse dependencies with tests (all pass)'''
136
137+ # green has passed before on i386 only, therefore NEVERPASSED on amd64
138+ self.swift.set_results({'autopkgtest-series': {
139+ 'series/i386/g/green/20150101_100000@': (0, 'green 1'),
140+ }})
141+
142 # first run requests tests and marks them as pending
143 self.do_test(
144 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
145- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
146- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
147- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
148+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
149+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
150+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
151 })
152 },
153 {'green': [('old-version', '1'), ('new-version', '2')]})
154@@ -280,12 +327,17 @@
155 def test_multi_rdepends_with_tests_mixed(self):
156 '''Multiple reverse dependencies with tests (mixed results)'''
157
158+ # green has passed before on i386 only, therefore NEVERPASSED on amd64
159+ self.swift.set_results({'autopkgtest-series': {
160+ 'series/i386/g/green/20150101_100000@': (0, 'green 1'),
161+ }})
162+
163 # first run requests tests and marks them as pending
164 self.do_test(
165 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
166- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
167- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
168- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
169+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
170+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
171+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
172 })
173 },
174 {'green': [('old-version', '1'), ('new-version', '2')]})
175@@ -320,12 +372,17 @@
176 def test_multi_rdepends_with_tests_mixed_no_recorded_triggers(self):
177 '''Multiple reverse dependencies with tests (mixed results), no recorded triggers'''
178
179+ # green has passed before on i386 only, therefore NEVERPASSED on amd64
180+ self.swift.set_results({'autopkgtest-series': {
181+ 'series/i386/g/green/20150101_100000@': (0, 'green 1'),
182+ }})
183+
184 # first run requests tests and marks them as pending
185 self.do_test(
186 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
187- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
188- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
189- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
190+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
191+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
192+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
193 })
194 },
195 {'green': [('old-version', '1'), ('new-version', '2')]})
196@@ -342,8 +399,8 @@
197 out = self.do_test(
198 [],
199 {'green': (False, {'green 2': {'amd64': 'ALWAYSFAIL', 'i386': 'PASS'},
200- 'lightgreen 1': {'amd64': 'REGRESSION', 'i386': 'RUNNING'},
201- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'PASS'},
202+ 'lightgreen 1': {'amd64': 'REGRESSION', 'i386': 'RUNNING-NEVERPASSED'},
203+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'PASS'},
204 })
205 })
206
207@@ -449,6 +506,11 @@
208 def test_multi_rdepends_arch_specific(self):
209 '''Multiple reverse dependencies with arch specific tests'''
210
211+ # green has passed before on amd64, doesn't exist on i386
212+ self.swift.set_results({'autopkgtest-series': {
213+ 'series/amd64/g/green64/20150101_100000@': (0, 'green64 0.1'),
214+ }})
215+
216 self.data.add('green64', False, {'Depends': 'libc6 (>= 0.9), libgreen1',
217 'Architecture': 'amd64'},
218 testsuite='autopkgtest')
219@@ -456,9 +518,9 @@
220 # first run requests tests and marks them as pending
221 self.do_test(
222 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
223- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
224- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
225- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
226+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
227+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
228+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
229 'green64 1': {'amd64': 'RUNNING'},
230 })
231 })
232@@ -701,13 +763,17 @@
233 def test_rdepends_unbuilt_new_version_fail(self):
234 '''Unbuilt reverse dependency gets failure for newer version'''
235
236+ self.swift.set_results({'autopkgtest-series': {
237+ 'series/i386/l/lightgreen/20150101_100101@': (0, 'lightgreen 1', tr('lightgreen/2')),
238+ }})
239+
240 # add unbuilt lightgreen; should request tests against the old version
241 self.data.add_src('lightgreen', True, {'Version': '2', 'Testsuite': 'autopkgtest'})
242 self.do_test(
243 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
244- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
245- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
246- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
247+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
248+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
249+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
250 }),
251 'lightgreen': (False, {}),
252 },
253@@ -753,14 +819,19 @@
254 def test_package_pair_running(self):
255 '''Two packages in unstable that need to go in together (running)'''
256
257+ # green has passed before on i386 only, therefore NEVERPASSED on amd64
258+ self.swift.set_results({'autopkgtest-series': {
259+ 'series/i386/g/green/20150101_100000@': (0, 'green 1'),
260+ }})
261+
262 self.do_test(
263 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest'),
264 ('lightgreen', {'Version': '2', 'Depends': 'libgreen1 (>= 2)'}, 'autopkgtest')],
265- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
266- 'lightgreen 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
267- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
268+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
269+ 'lightgreen 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
270+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
271 }),
272- 'lightgreen': (False, {'lightgreen 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'}}),
273+ 'lightgreen': (False, {'lightgreen 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'}}),
274 },
275 {'green': [('old-version', '1'), ('new-version', '2')],
276 'lightgreen': [('old-version', '1'), ('new-version', '2')],
277@@ -796,9 +867,9 @@
278
279 self.do_test(
280 [('libgreen1', {'Version': '2', 'Source': 'newgreen', 'Depends': 'libc6'}, 'autopkgtest')],
281- {'newgreen': (False, {'newgreen 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
282- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
283- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
284+ {'newgreen': (True, {'newgreen 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
285+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
286+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
287 }),
288 },
289 {'newgreen': [('old-version', '-'), ('new-version', '2')]})
290@@ -1137,13 +1208,18 @@
291 def test_multiarch_dep(self):
292 '''multi-arch dependency'''
293
294+ # lightgreen has passed before on i386 only, therefore NEVERPASSED on amd64
295+ self.swift.set_results({'autopkgtest-series': {
296+ 'series/i386/l/lightgreen/20150101_100000@': (0, 'lightgreen 1'),
297+ }})
298+
299 self.data.add('rainbow', False, {'Depends': 'lightgreen:any'},
300 testsuite='autopkgtest')
301
302 self.do_test(
303 [('lightgreen', {'Version': '2'}, 'autopkgtest')],
304- {'lightgreen': (False, {'lightgreen 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
305- 'rainbow 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
306+ {'lightgreen': (False, {'lightgreen 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
307+ 'rainbow 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
308 }),
309 },
310 {'lightgreen': [('old-version', '1'), ('new-version', '2')]}
311@@ -1233,11 +1309,16 @@
312
313 self.create_hint('pitti', 'force-skiptest green/2')
314
315+ # green has passed before on i386 only, therefore NEVERPASSED on amd64
316+ self.swift.set_results({'autopkgtest-series': {
317+ 'series/i386/g/green/20150101_100000@': (0, 'green 1'),
318+ }})
319+
320 self.do_test(
321 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
322- {'green': (True, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
323- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
324- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
325+ {'green': (True, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
326+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
327+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
328 }),
329 },
330 {'green': [('old-version', '1'), ('new-version', '2'),
331@@ -1248,12 +1329,17 @@
332 def test_hint_force_skiptest_different_version(self):
333 '''force-skiptest hint with non-matching version'''
334
335+ # green has passed before on i386 only, therefore NEVERPASSED on amd64
336+ self.swift.set_results({'autopkgtest-series': {
337+ 'series/i386/g/green/20150101_100000@': (0, 'green 1'),
338+ }})
339+
340 self.create_hint('pitti', 'force-skiptest green/1')
341 exc = self.do_test(
342 [('libgreen1', {'Version': '2', 'Source': 'green', 'Depends': 'libc6'}, 'autopkgtest')],
343- {'green': (False, {'green 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
344- 'lightgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
345- 'darkgreen 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
346+ {'green': (False, {'green 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
347+ 'lightgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
348+ 'darkgreen 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
349 }),
350 },
351 {'green': [('reason', 'autopkgtest')]}
352@@ -1270,9 +1356,13 @@
353 self.data.add('dkms', False, {})
354 self.data.add('fancy-dkms', False, {'Source': 'fancy', 'Depends': 'dkms (>= 1)'})
355
356+ self.swift.set_results({'autopkgtest-series': {
357+ 'series/i386/f/fancy/20150101_100101@': (0, 'fancy 0.1')
358+ }})
359+
360 self.do_test(
361 [('dkms', {'Version': '2'}, None)],
362- {'dkms': (False, {'fancy 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'}})},
363+ {'dkms': (False, {'fancy 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'}})},
364 {'dkms': [('old-version', '1'), ('new-version', '2')]})
365
366 def test_kernel_triggers_dkms(self):
367@@ -1286,9 +1376,9 @@
368 ('linux-image-grumpy-generic', {'Source': 'linux-meta-lts-grumpy'}, None),
369 ('linux-image-64only', {'Source': 'linux-meta-64only', 'Architecture': 'amd64'}, None),
370 ],
371- {'linux-meta': (False, {'fancy 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'}}),
372- 'linux-meta-lts-grumpy': (False, {'fancy 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'}}),
373- 'linux-meta-64only': (False, {'fancy 1': {'amd64': 'RUNNING'}}),
374+ {'linux-meta': (True, {'fancy 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'}}),
375+ 'linux-meta-lts-grumpy': (True, {'fancy 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'}}),
376+ 'linux-meta-64only': (True, {'fancy 1': {'amd64': 'RUNNING-NEVERPASSED'}}),
377 })
378
379 # one separate test should be triggered for each kernel
380@@ -1318,6 +1408,7 @@
381 # works against linux-meta and -64only, fails against grumpy i386, no
382 # result yet for grumpy amd64
383 self.swift.set_results({'autopkgtest-series': {
384+ 'series/amd64/f/fancy/20150101_100301@': (0, 'fancy 0.5'),
385 'series/i386/f/fancy/20150101_100101@': (0, 'fancy 1', tr('linux-meta/1')),
386 'series/amd64/f/fancy/20150101_100101@': (0, 'fancy 1', tr('linux-meta/1')),
387 'series/amd64/f/fancy/20150101_100201@': (0, 'fancy 1', tr('linux-meta-64only/1')),
388@@ -1368,7 +1459,7 @@
389
390 self.assertEqual(self.pending_requests, '')
391
392- def test_kernel_triggerered_tests(self):
393+ def test_kernel_triggered_tests(self):
394 '''linux, lxc, glibc tests get triggered by linux-meta* uploads'''
395
396 self.data.remove_all(False)
397@@ -1382,16 +1473,20 @@
398 self.data.add('linux-libc-dev', False, {'Source': 'linux'}, testsuite='autopkgtest')
399 self.data.add('linux-image', False, {'Source': 'linux-meta', 'Depends': 'linux-image-1'})
400
401+ self.swift.set_results({'autopkgtest-series': {
402+ 'series/amd64/l/lxc/20150101_100101@': (0, 'lxc 0.1')
403+ }})
404+
405 exc = self.do_test(
406 [('linux-image', {'Version': '2', 'Depends': 'linux-image-2', 'Source': 'linux-meta'}, None),
407 ('linux-image-64only', {'Source': 'linux-meta-64only', 'Architecture': 'amd64'}, None),
408 ('linux-image-2', {'Version': '2', 'Source': 'linux'}, 'autopkgtest'),
409 ('linux-libc-dev', {'Version': '2', 'Source': 'linux'}, 'autopkgtest'),
410 ],
411- {'linux-meta': (False, {'lxc 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
412- 'glibc 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
413- 'linux 2': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
414- 'systemd 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
415+ {'linux-meta': (False, {'lxc 1': {'amd64': 'RUNNING', 'i386': 'RUNNING-NEVERPASSED'},
416+ 'glibc 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
417+ 'linux 2': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
418+ 'systemd 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'},
419 }),
420 'linux-meta-64only': (False, {'lxc 1': {'amd64': 'RUNNING'}}),
421 'linux': (False, {}),
422@@ -1410,6 +1505,7 @@
423 self.data.add('linux-firmware', False, {'Source': 'linux-firmware'}, testsuite='autopkgtest')
424
425 self.swift.set_results({'autopkgtest-series': {
426+ 'series/i386/f/fancy/20150101_090000@': (0, 'fancy 0.5'),
427 'series/i386/l/linux/20150101_100000@': (0, 'linux 2', tr('linux-meta/0.2')),
428 'series/amd64/l/linux/20150101_100000@': (0, 'linux 2', tr('linux-meta/0.2')),
429 'series/i386/l/linux-firmware/20150101_100000@': (0, 'linux-firmware 2', tr('linux-firmware/2')),
430@@ -1421,7 +1517,7 @@
431 ('linux-image-2', {'Version': '2', 'Source': 'linux'}, 'autopkgtest'),
432 ('linux-firmware', {'Version': '2', 'Source': 'linux-firmware'}, 'autopkgtest'),
433 ],
434- {'linux-meta': (False, {'fancy 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
435+ {'linux-meta': (False, {'fancy 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
436 'linux 2': {'amd64': 'PASS', 'i386': 'PASS'}
437 }),
438 # no tests, but should wait on linux-meta
439@@ -1462,10 +1558,15 @@
440 self.data.add('linux', False, {}, testsuite='autopkgtest')
441 self.data.add('notme', False, {'Depends': 'libgcc1'}, testsuite='autopkgtest')
442
443+ # binutils has passed before on i386 only, therefore NEVERPASSED on amd64
444+ self.swift.set_results({'autopkgtest-series': {
445+ 'series/i386/b/binutils/20150101_100000@': (0, 'binutils 1', tr('binutils/1')),
446+ }})
447+
448 exc = self.do_test(
449 [('libgcc1', {'Source': 'gcc-5', 'Version': '2'}, None)],
450- {'gcc-5': (False, {'binutils 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'},
451- 'linux 1': {'amd64': 'RUNNING', 'i386': 'RUNNING'}})})[1]
452+ {'gcc-5': (False, {'binutils 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING'},
453+ 'linux 1': {'amd64': 'RUNNING-NEVERPASSED', 'i386': 'RUNNING-NEVERPASSED'}})})[1]
454 self.assertNotIn('notme 1', exc['gcc-5']['tests']['autopkgtest'])
455
456 def test_alternative_gcc(self):

Subscribers

People subscribed via source and target branches