Merge ppa-dev-tools:job-class into ppa-dev-tools:main
- Git
- lp:ppa-dev-tools
- job-class
- Merge into main
Status: | Merged |
---|---|
Merge reported by: | Bryce Harrington |
Merged at revision: | 29e2c6593124656083bcfa933f30ba81ac15caa6 |
Proposed branch: | ppa-dev-tools:job-class |
Merge into: | ppa-dev-tools:main |
Diff against target: |
713 lines (+683/-0) 5 files modified
.flake8 (+2/-0) ppa/job.py (+183/-0) tests/data/queues-20220822.json (+385/-0) tests/data/running-20220822.json (+1/-0) tests/test_job.py (+112/-0) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Athos Ribeiro (community) | Approve | ||
Canonical Server Reporter | Pending | ||
Review via email: mp+428760@code.launchpad.net |
Commit message
Description of the change
Imports the Job class from lp-test-ppa into ppa-dev-tools, adds docs, tests, and a bit more refactoring.
This is not hooked up to any commands in the ppa cli itself, but there's a smoke test using snapshot data you can run:
$ python3 ./ppa/job.py
The tests can be run as well:
$ pytest-3 ./tests/test_job.py
Bryce Harrington (bryce) wrote : | # |
> Nice work, Bryce :)
>
> I left a couple inline comments, but this LGTM as is.
Thanks!
> I am also wondering if instead of including the complete samples of the json
> files, including hand-crafted minimal samples of those would be enough. The
> reason for the question is that this change alone increased the project root
> size from <200kb to 1.9Mb (not counting git data here). While this shouldn't
> matter much ATM, I was wondering if there's any chance this could pile up in
> the future with new test additions.
Good point. Ironically I had started with hand-crafted snippets but switched to snapshots as being easier to add and more closely representative of actual usage. However, it may be better to just go ahead and add the code to download live data, and keep the local data snapshots trimmed to specific examples. You're right that over time this could pile up.
Bryce Harrington (bryce) wrote : | # |
I've made the suggested changes, and trimmed down the data files. Will go ahead and land the branch.
Bryce Harrington (bryce) wrote : | # |
Total 0 (delta 0), reused 0 (delta 0)
To git+ssh:
6c1e1a8..8fcdc4f main -> main
Preview Diff
1 | diff --git a/.flake8 b/.flake8 |
2 | new file mode 100644 |
3 | index 0000000..7da1f96 |
4 | --- /dev/null |
5 | +++ b/.flake8 |
6 | @@ -0,0 +1,2 @@ |
7 | +[flake8] |
8 | +max-line-length = 100 |
9 | diff --git a/ppa/job.py b/ppa/job.py |
10 | new file mode 100755 |
11 | index 0000000..61d6fb2 |
12 | --- /dev/null |
13 | +++ b/ppa/job.py |
14 | @@ -0,0 +1,183 @@ |
15 | +#!/usr/bin/env python3 |
16 | +# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- |
17 | + |
18 | +# Copyright (C) 2022 Authors |
19 | +# |
20 | +# Released under GNU GPLv2 or later, read the file 'LICENSE.GPLv2+' for |
21 | +# more information. |
22 | +# |
23 | +# Authors: |
24 | +# Bryce Harrington <bryce@canonical.com> |
25 | + |
26 | +"""An individual autopkgtest run""" |
27 | + |
28 | +from typing import Iterator |
29 | +import json |
30 | + |
31 | +# Global constants |
32 | +ARCHES = ["amd64", "s390x", "ppc64el", "arm64", "armhf", "riscv64"] |
33 | +URL_LPAPI = "https://api.launchpad.net/devel" |
34 | +URL_AUTOPKGTEST = "https://autopkgtest.ubuntu.com" |
35 | + |
36 | + |
37 | +class Job: |
38 | + """An individual autopkgtest run that has not yet completed. |
39 | + |
40 | + A Job will correspond to one Result object once it has completed. |
41 | + """ |
42 | + def __init__(self, number, submit_time, source_package, series, arch, |
43 | + triggers=None, ppas=None): |
44 | + """Initializes a new Job object. |
45 | + |
46 | + :param str number: Position within the waiting queue. |
47 | + :param str submit_time: Timestamp when job was submitted. |
48 | + :param str source_package: Source package containing the DEP8 tests to run. |
49 | + :param str series: Codename of the Ubuntu release to run tests on. |
50 | + :param str arch: Hardware architecture type to run tests on. |
51 | + :param list[str] triggers: List of package/version triggers for the job. |
52 | + :param list[str] ppas: List of PPAs to enable. |
53 | + """ |
54 | + self.number = number |
55 | + self.submit_time = submit_time |
56 | + self.source_package = source_package |
57 | + self.series = series |
58 | + self.arch = arch |
59 | + self.triggers = triggers or [] |
60 | + self.ppas = ppas or [] |
61 | + |
62 | + def __repr__(self) -> str: |
63 | + """Machine-parsable unique representation of object. |
64 | + |
65 | + :rtype: str |
66 | + :returns: Official string representation of the object. |
67 | + """ |
68 | + return (f'{self.__class__.__name__}(' |
69 | + f'source_package={self.source_package!r}, ' |
70 | + f'series={self.series!r}, ' |
71 | + f'arch={self.arch!r}' |
72 | + f')') |
73 | + |
74 | + def __str__(self) -> str: |
75 | + """Human-readable summary of the object. |
76 | + |
77 | + :rtype: str |
78 | + :returns: Printable summary of the object. |
79 | + """ |
80 | + return f"{self.source_package} {self.series} ({self.arch})" |
81 | + |
82 | + @property |
83 | + def request_url(self) -> str: |
84 | + """Renders URL for requesting the testing run be started |
85 | + |
86 | + :rtype: str |
87 | + :returns: Full URL for invoking the test. |
88 | + """ |
89 | + rel_str = f"release={self.series}" |
90 | + arch_str = f"&arch={self.arch}" |
91 | + pkg_str = f"&package={self.source_package}" |
92 | + trigger_str = '' |
93 | + for trigger in self.triggers: |
94 | + trigger_str += f"&trigger={trigger}" |
95 | + return f"{URL_AUTOPKGTEST}/request.cgi?{rel_str}{arch_str}{pkg_str}{trigger_str}" |
96 | + |
97 | + |
98 | +def get_running(response, series=None, ppa=None) -> Iterator[Job]: |
99 | + """Returns iterator currently running autopkgtests for given criteria |
100 | + |
101 | + Filters the list of running autopkgtest jobs by the given series |
102 | + and/or ppa names, returning an iterator with matching results as Job |
103 | + objects. If series and ppa are not provided, then returns all |
104 | + results; if one or the other is provided, provides all available |
105 | + results for that series or ppa. |
106 | + |
107 | + :param HTTPResponse response: Context manager; the response from urlopen() |
108 | + :param str series: The Ubuntu release codename criteria, or None. |
109 | + :param str ppa: The PPA address criteria, or None. |
110 | + :rtype: Iterator[Job] |
111 | + :returns: Currently running jobs, if any, or an empty list on error |
112 | + """ |
113 | + for pkg, jobs in json.loads(response.read().decode('utf-8')).items(): |
114 | + for handle in jobs: |
115 | + for codename in jobs[handle]: |
116 | + for arch, jobinfo in jobs[handle][codename].items(): |
117 | + triggers = jobinfo[0].get('triggers', None) |
118 | + ppas = jobinfo[0].get('ppas', None) |
119 | + submit_time = jobinfo[1] |
120 | + job = Job(0, submit_time, pkg, codename, arch, triggers, ppas) |
121 | + if (series and (series != job.series)) or (ppa and (ppa not in job.ppas)): |
122 | + continue |
123 | + yield job |
124 | + |
125 | + |
126 | +def get_waiting(response, series=None, ppa=None) -> Iterator[Job]: |
127 | + """Returns iterator of queued autopkgtests for given criteria |
128 | + |
129 | + Filters the list of autopkgtest jobs waiting for execution by the |
130 | + given series and/or ppa names, returning an iterator with matching |
131 | + results as Job objects. If series and ppa are not provided, then |
132 | + returns all results; if one or the other is provided, provides all |
133 | + available results for that series or ppa. |
134 | + |
135 | + :param HTTPResponse response: Context manager; the response from urlopen() |
136 | + :param str series: The Ubuntu release codename criteria, or None. |
137 | + :param str ppa: The PPA address criteria, or None. |
138 | + :rtype: Iterator[Job] |
139 | + :returns: Currently waiting jobs, if any, or an empty list on error |
140 | + """ |
141 | + for _, queue in json.loads(response.read().decode('utf-8')).items(): |
142 | + for codename in queue: |
143 | + for arch in queue[codename]: |
144 | + n = 0 |
145 | + for key in queue[codename][arch]: |
146 | + if key == 'private job': |
147 | + continue |
148 | + (pkg, json_data) = key.split(maxsplit=1) |
149 | + jobinfo = json.loads(json_data) |
150 | + n += 1 |
151 | + triggers = jobinfo.get('triggers', None) |
152 | + ppas = jobinfo.get('ppas', None) |
153 | + job = Job(n, None, pkg, codename, arch, triggers, ppas) |
154 | + if (series and (series != job.series)) or (ppa and (ppa not in job.ppas)): |
155 | + continue |
156 | + yield job |
157 | + |
158 | + |
159 | +if __name__ == "__main__": |
160 | + import os |
161 | + from urllib.request import urlopen |
162 | + |
163 | + print("### Job class smoke test ###") |
164 | + |
165 | + root_dir = os.path.realpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..')) |
166 | + jobinfo = { |
167 | + 'triggers': ['a/1', 'b/2.1', 'c/3.2.1'], |
168 | + 'ppas': ['ppa:me/myppa'], |
169 | + } |
170 | + job_1 = Job( |
171 | + number=0, |
172 | + submit_time='time', |
173 | + source_package='my-package', |
174 | + series='kinetic', |
175 | + arch='amd64', |
176 | + triggers=jobinfo.get('triggers', None), |
177 | + ppas=jobinfo.get('ppas', None) |
178 | + ) |
179 | + print(job_1) |
180 | + print(f"triggers: {job_1.triggers}") |
181 | + print(f"ppas: {job_1.ppas}") |
182 | + print(f"request_url: {job_1.request_url}") |
183 | + print() |
184 | + |
185 | + ppa = "bryce/dovecot-merge-v1e2.3.19.1adfsg1-2" |
186 | + |
187 | + print("running:") |
188 | + response = urlopen(f"file://{root_dir}/tests/data/running-20220822.json") |
189 | + for job in get_running(response, 'kinetic', ppa): |
190 | + print(job) |
191 | + print() |
192 | + |
193 | + print("waiting:") |
194 | + response = urlopen(f"file://{root_dir}/tests/data/queues-20220822.json") |
195 | + for job in get_waiting(response, 'kinetic', ppa): |
196 | + print(job) |
197 | + |
198 | diff --git a/tests/data/queues-20220822.json b/tests/data/queues-20220822.json |
199 | new file mode 100644 |
200 | index 0000000..7844a74 |
201 | --- /dev/null |
202 | +++ b/tests/data/queues-20220822.json |
203 | @@ -0,0 +1,385 @@ |
204 | +{ |
205 | + "ubuntu": { |
206 | + "trusty": { |
207 | + "amd64": [], |
208 | + "arm64": [], |
209 | + "armhf": [], |
210 | + "i386": [], |
211 | + "ppc64el": [] |
212 | + }, |
213 | + "xenial": { |
214 | + "amd64": [], |
215 | + "arm64": [], |
216 | + "armhf": [], |
217 | + "i386": [], |
218 | + "ppc64el": [], |
219 | + "s390x": [] |
220 | + }, |
221 | + "bionic": { |
222 | + "amd64": [], |
223 | + "arm64": [], |
224 | + "armhf": [], |
225 | + "i386": [], |
226 | + "ppc64el": [], |
227 | + "s390x": [] |
228 | + }, |
229 | + "focal": { |
230 | + "amd64": [], |
231 | + "arm64": [], |
232 | + "armhf": [], |
233 | + "i386": [], |
234 | + "ppc64el": [], |
235 | + "s390x": [] |
236 | + }, |
237 | + "hirsute": { |
238 | + "amd64": [], |
239 | + "arm64": [], |
240 | + "armhf": [], |
241 | + "i386": [], |
242 | + "ppc64el": [], |
243 | + "s390x": [] |
244 | + }, |
245 | + "impish": { |
246 | + "amd64": [], |
247 | + "ppc64el": [], |
248 | + "i386": [], |
249 | + "armhf": [], |
250 | + "arm64": [], |
251 | + "s390x": [] |
252 | + }, |
253 | + "jammy": { |
254 | + "amd64": [], |
255 | + "arm64": [], |
256 | + "i386": [], |
257 | + "s390x": [], |
258 | + "ppc64el": [], |
259 | + "armhf": [] |
260 | + }, |
261 | + "kinetic": { |
262 | + "ppc64el": [], |
263 | + "arm64": [], |
264 | + "s390x": [], |
265 | + "armhf": [], |
266 | + "i386": [], |
267 | + "amd64": [] |
268 | + } |
269 | + }, |
270 | + "huge": { |
271 | + "trusty": { |
272 | + "amd64": [], |
273 | + "arm64": [], |
274 | + "armhf": [], |
275 | + "i386": [], |
276 | + "ppc64el": [] |
277 | + }, |
278 | + "xenial": { |
279 | + "amd64": [], |
280 | + "arm64": [], |
281 | + "armhf": [], |
282 | + "i386": [], |
283 | + "ppc64el": [], |
284 | + "s390x": [] |
285 | + }, |
286 | + "bionic": { |
287 | + "amd64": [], |
288 | + "arm64": [], |
289 | + "armhf": [], |
290 | + "i386": [], |
291 | + "ppc64el": [], |
292 | + "s390x": [] |
293 | + }, |
294 | + "focal": { |
295 | + "amd64": [], |
296 | + "arm64": [], |
297 | + "armhf": [], |
298 | + "i386": [], |
299 | + "ppc64el": [], |
300 | + "s390x": [] |
301 | + }, |
302 | + "hirsute": { |
303 | + "amd64": [], |
304 | + "arm64": [], |
305 | + "armhf": [], |
306 | + "i386": [], |
307 | + "ppc64el": [], |
308 | + "s390x": [] |
309 | + }, |
310 | + "impish": { |
311 | + "amd64": [], |
312 | + "ppc64el": [], |
313 | + "i386": [], |
314 | + "armhf": [], |
315 | + "arm64": [], |
316 | + "s390x": [] |
317 | + }, |
318 | + "jammy": { |
319 | + "amd64": [], |
320 | + "arm64": [], |
321 | + "i386": [], |
322 | + "s390x": [], |
323 | + "ppc64el": [], |
324 | + "armhf": [] |
325 | + }, |
326 | + "kinetic": { |
327 | + "ppc64el": [ |
328 | + "x11iraf\n{\"submit-time\": \"2022-08-22 07:50:13\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
329 | + "x11vnc\n{\"submit-time\": \"2022-08-22 07:50:13\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
330 | + "x264\n{\"submit-time\": \"2022-08-22 07:50:13\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
331 | + "x265\n{\"submit-time\": \"2022-08-22 07:50:14\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
332 | + "x42-plugins\n{\"submit-time\": \"2022-08-22 07:50:14\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
333 | + "xapian-core\n{\"submit-time\": \"2022-08-22 07:50:14\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
334 | + "xapian-omega\n{\"submit-time\": \"2022-08-22 07:50:14\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
335 | + "xautolock\n{\"submit-time\": \"2022-08-22 07:50:15\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
336 | + "xbrzscale\n{\"submit-time\": \"2022-08-22 07:50:15\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
337 | + "xchain\n{\"submit-time\": \"2022-08-22 07:50:15\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
338 | + "xcolorsel\n{\"submit-time\": \"2022-08-22 07:50:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
339 | + "xdelta3\n{\"submit-time\": \"2022-08-22 07:50:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
340 | + "xdemorse\n{\"submit-time\": \"2022-08-22 07:50:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
341 | + "xdg-dbus-proxy\n{\"submit-time\": \"2022-08-22 07:50:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
342 | + "xdg-desktop-portal\n{\"submit-time\": \"2022-08-22 07:50:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
343 | + "xdp-tools\n{\"submit-time\": \"2022-08-22 07:50:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
344 | + "xerces-c\n{\"submit-time\": \"2022-08-22 07:50:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
345 | + "xerial-sqlite-jdbc\n{\"submit-time\": \"2022-08-22 07:50:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
346 | + "xeus-python\n{\"submit-time\": \"2022-08-22 07:50:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
347 | + "xfig\n{\"submit-time\": \"2022-08-22 07:50:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
348 | + "xflip\n{\"submit-time\": \"2022-08-22 07:50:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
349 | + "xgboost\n{\"submit-time\": \"2022-08-22 07:50:18\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
350 | + "xilinx-runtime\n{\"submit-time\": \"2022-08-22 07:50:18\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
351 | + "xlbiff\n{\"submit-time\": \"2022-08-22 07:50:18\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
352 | + "xml-security-c\n{\"submit-time\": \"2022-08-22 07:50:18\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
353 | + "xmltooling\n{\"submit-time\": \"2022-08-22 07:50:19\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
354 | + "xmobar\n{\"submit-time\": \"2022-08-22 07:50:19\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
355 | + "xmpp-dns\n{\"submit-time\": \"2022-08-22 07:50:19\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
356 | + "xorgxrdp\n{\"submit-time\": \"2022-08-22 07:50:19\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
357 | + "xpad\n{\"submit-time\": \"2022-08-22 07:50:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
358 | + "xpra\n{\"submit-time\": \"2022-08-22 07:50:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
359 | + "xq\n{\"submit-time\": \"2022-08-22 07:50:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
360 | + "xrayutilities\n{\"submit-time\": \"2022-08-22 07:50:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
361 | + "xrootconsole\n{\"submit-time\": \"2022-08-22 07:50:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
362 | + "xsel\n{\"submit-time\": \"2022-08-22 07:50:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
363 | + "xsnow\n{\"submit-time\": \"2022-08-22 07:50:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
364 | + "xtables-addons\n{\"submit-time\": \"2022-08-22 07:50:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
365 | + "xtail\n{\"submit-time\": \"2022-08-22 07:50:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
366 | + "xterm\n{\"submit-time\": \"2022-08-22 07:50:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
367 | + "xtermcontrol\n{\"submit-time\": \"2022-08-22 07:50:22\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
368 | + "xtrlock\n{\"submit-time\": \"2022-08-22 07:50:22\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
369 | + "x11vnc\n{\"submit-time\": \"2022-08-22 05:32:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
370 | + "x264\n{\"submit-time\": \"2022-08-22 05:32:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
371 | + "x265\n{\"submit-time\": \"2022-08-22 05:32:16\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
372 | + "x42-plugins\n{\"submit-time\": \"2022-08-22 05:32:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
373 | + "xapian-bindings\n{\"submit-time\": \"2022-08-22 05:32:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
374 | + "xapian-core\n{\"submit-time\": \"2022-08-22 05:32:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
375 | + "xapian-omega\n{\"submit-time\": \"2022-08-22 05:32:17\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
376 | + "xautolock\n{\"submit-time\": \"2022-08-22 05:32:18\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
377 | + "xautomation\n{\"submit-time\": \"2022-08-22 05:32:18\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
378 | + "xbrzscale\n{\"submit-time\": \"2022-08-22 05:32:18\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
379 | + "xchain\n{\"submit-time\": \"2022-08-22 05:32:19\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
380 | + "xdelta3\n{\"submit-time\": \"2022-08-22 05:32:19\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
381 | + "xdemorse\n{\"submit-time\": \"2022-08-22 05:32:19\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
382 | + "xdg-dbus-proxy\n{\"submit-time\": \"2022-08-22 05:32:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
383 | + "xdg-desktop-portal\n{\"submit-time\": \"2022-08-22 05:32:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
384 | + "xdp-tools\n{\"submit-time\": \"2022-08-22 05:32:20\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
385 | + "xerial-sqlite-jdbc\n{\"submit-time\": \"2022-08-22 05:32:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
386 | + "xeus-python\n{\"submit-time\": \"2022-08-22 05:32:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
387 | + "xfig\n{\"submit-time\": \"2022-08-22 05:32:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
388 | + "xflip\n{\"submit-time\": \"2022-08-22 05:32:21\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
389 | + "xfrisk\n{\"submit-time\": \"2022-08-22 05:32:22\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
390 | + "xgboost\n{\"submit-time\": \"2022-08-22 05:32:22\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
391 | + "xlbiff\n{\"submit-time\": \"2022-08-22 05:32:22\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
392 | + "xli\n{\"submit-time\": \"2022-08-22 05:32:22\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
393 | + "xml-security-c\n{\"submit-time\": \"2022-08-22 05:32:22\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
394 | + "xmltooling\n{\"submit-time\": \"2022-08-22 05:32:23\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
395 | + "xmobar\n{\"submit-time\": \"2022-08-22 05:32:23\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
396 | + "xmoto\n{\"submit-time\": \"2022-08-22 05:32:23\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
397 | + "xorgxrdp\n{\"submit-time\": \"2022-08-22 05:32:24\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
398 | + "xpa\n{\"submit-time\": \"2022-08-22 05:32:24\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
399 | + "xpad\n{\"submit-time\": \"2022-08-22 05:32:25\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
400 | + "xpra\n{\"submit-time\": \"2022-08-22 05:32:25\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
401 | + "xq\n{\"submit-time\": \"2022-08-22 05:32:25\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
402 | + "xrayutilities\n{\"submit-time\": \"2022-08-22 05:32:26\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
403 | + "xrootconsole\n{\"submit-time\": \"2022-08-22 05:32:26\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
404 | + "xsel\n{\"submit-time\": \"2022-08-22 05:32:26\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
405 | + "xsnow\n{\"submit-time\": \"2022-08-22 05:32:26\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
406 | + "xtables-addons\n{\"submit-time\": \"2022-08-22 05:32:27\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
407 | + "xtail\n{\"submit-time\": \"2022-08-22 05:32:27\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
408 | + "xterm\n{\"submit-time\": \"2022-08-22 05:32:27\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
409 | + "xtermcontrol\n{\"submit-time\": \"2022-08-22 05:32:28\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
410 | + "xtrlock\n{\"submit-time\": \"2022-08-22 05:32:28\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
411 | + "x11iraf\n{\"submit-time\": \"2022-08-22 07:25:42\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
412 | + "x264\n{\"submit-time\": \"2022-08-22 07:25:43\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
413 | + "x265\n{\"submit-time\": \"2022-08-22 07:25:44\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
414 | + "x42-plugins\n{\"submit-time\": \"2022-08-22 07:25:45\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
415 | + "xapian-bindings\n{\"submit-time\": \"2022-08-22 07:25:46\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
416 | + "xapian-core\n{\"submit-time\": \"2022-08-22 07:25:46\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
417 | + "xapian-omega\n{\"submit-time\": \"2022-08-22 07:25:46\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
418 | + "xautomation\n{\"submit-time\": \"2022-08-22 07:25:47\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
419 | + "xbrzscale\n{\"submit-time\": \"2022-08-22 07:25:47\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
420 | + "xchain\n{\"submit-time\": \"2022-08-22 07:25:48\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
421 | + "xcolorsel\n{\"submit-time\": \"2022-08-22 07:25:48\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
422 | + "xdelta3\n{\"submit-time\": \"2022-08-22 07:25:48\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
423 | + "xdemorse\n{\"submit-time\": \"2022-08-22 07:25:49\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
424 | + "xdg-dbus-proxy\n{\"submit-time\": \"2022-08-22 07:25:49\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
425 | + "xdg-desktop-portal\n{\"submit-time\": \"2022-08-22 07:25:49\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
426 | + "xdp-tools\n{\"submit-time\": \"2022-08-22 07:25:49\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
427 | + "xerces-c\n{\"submit-time\": \"2022-08-22 07:25:49\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
428 | + "xerial-sqlite-jdbc\n{\"submit-time\": \"2022-08-22 07:25:50\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
429 | + "xfig\n{\"submit-time\": \"2022-08-22 07:25:50\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
430 | + "xflip\n{\"submit-time\": \"2022-08-22 07:25:50\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
431 | + "xfrisk\n{\"submit-time\": \"2022-08-22 07:25:50\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
432 | + "xgboost\n{\"submit-time\": \"2022-08-22 07:25:51\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
433 | + "xlbiff\n{\"submit-time\": \"2022-08-22 07:25:51\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
434 | + "xli\n{\"submit-time\": \"2022-08-22 07:25:51\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
435 | + "xml-security-c\n{\"submit-time\": \"2022-08-22 07:25:51\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
436 | + "xmltooling\n{\"submit-time\": \"2022-08-22 07:25:52\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
437 | + "xmobar\n{\"submit-time\": \"2022-08-22 07:25:52\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
438 | + "xmoto\n{\"submit-time\": \"2022-08-22 07:25:52\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
439 | + "xorgxrdp\n{\"submit-time\": \"2022-08-22 07:25:52\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
440 | + "xpa\n{\"submit-time\": \"2022-08-22 07:25:52\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
441 | + "xpad\n{\"submit-time\": \"2022-08-22 07:25:53\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
442 | + "xpra\n{\"submit-time\": \"2022-08-22 07:25:53\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
443 | + "xq\n{\"submit-time\": \"2022-08-22 07:25:53\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
444 | + "xrayutilities\n{\"submit-time\": \"2022-08-22 07:25:53\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
445 | + "xrootconsole\n{\"submit-time\": \"2022-08-22 07:25:54\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
446 | + "xsel\n{\"submit-time\": \"2022-08-22 07:25:54\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
447 | + "xsnow\n{\"submit-time\": \"2022-08-22 07:25:54\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
448 | + "xtables-addons\n{\"submit-time\": \"2022-08-22 07:25:54\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
449 | + "xtail\n{\"submit-time\": \"2022-08-22 07:25:54\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
450 | + "xterm\n{\"submit-time\": \"2022-08-22 07:25:55\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
451 | + "xtermcontrol\n{\"submit-time\": \"2022-08-22 07:25:55\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}", |
452 | + "xtrlock\n{\"submit-time\": \"2022-08-22 07:25:55\", \"triggers\": [\"glibc/2.36-0ubuntu2\", \"cross-toolchain-base/59ubuntu6\", \"glib2.0/2.73.3-1\", \"tracker/3.3.3-1\"]}" |
453 | + ] |
454 | + } |
455 | + }, |
456 | + "ppa": { |
457 | + "trusty": { |
458 | + "amd64": [], |
459 | + "arm64": [], |
460 | + "armhf": [], |
461 | + "i386": [], |
462 | + "ppc64el": [] |
463 | + }, |
464 | + "xenial": { |
465 | + "amd64": [], |
466 | + "arm64": [], |
467 | + "armhf": [], |
468 | + "i386": [], |
469 | + "ppc64el": [], |
470 | + "s390x": [] |
471 | + }, |
472 | + "bionic": { |
473 | + "amd64": [], |
474 | + "arm64": [], |
475 | + "armhf": [], |
476 | + "i386": [], |
477 | + "ppc64el": [], |
478 | + "s390x": [] |
479 | + }, |
480 | + "focal": { |
481 | + "amd64": [], |
482 | + "arm64": [], |
483 | + "armhf": [], |
484 | + "i386": [], |
485 | + "ppc64el": [], |
486 | + "s390x": [] |
487 | + }, |
488 | + "hirsute": { |
489 | + "amd64": [], |
490 | + "arm64": [], |
491 | + "armhf": [], |
492 | + "i386": [], |
493 | + "ppc64el": [], |
494 | + "s390x": [] |
495 | + }, |
496 | + "impish": { |
497 | + "amd64": [], |
498 | + "ppc64el": [], |
499 | + "i386": [], |
500 | + "armhf": [], |
501 | + "arm64": [], |
502 | + "s390x": [] |
503 | + }, |
504 | + "jammy": { |
505 | + "amd64": [], |
506 | + "arm64": [], |
507 | + "i386": [], |
508 | + "s390x": [], |
509 | + "ppc64el": [], |
510 | + "armhf": [] |
511 | + }, |
512 | + "kinetic": { |
513 | + "ppc64el": [], |
514 | + "arm64": [], |
515 | + "s390x": [], |
516 | + "armhf": [ |
517 | + "dovecot {\"all-proposed\": \"1\", \"ppas\": [\"bryce/dovecot-merge-v1e2.3.19.1adfsg1-2\"], \"requester\": \"bryce\", \"submit-time\": \"2022-08-23 05:02:46\", \"triggers\": [\"dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1\"]}" |
518 | + ], |
519 | + "i386": [], |
520 | + "amd64": [] |
521 | + } |
522 | + }, |
523 | + "upstream": { |
524 | + "trusty": { |
525 | + "amd64": [], |
526 | + "arm64": [], |
527 | + "armhf": [], |
528 | + "i386": [], |
529 | + "ppc64el": [] |
530 | + }, |
531 | + "xenial": { |
532 | + "amd64": [], |
533 | + "arm64": [], |
534 | + "armhf": [], |
535 | + "i386": [], |
536 | + "ppc64el": [], |
537 | + "s390x": [] |
538 | + }, |
539 | + "bionic": { |
540 | + "amd64": [], |
541 | + "arm64": [], |
542 | + "armhf": [], |
543 | + "i386": [], |
544 | + "ppc64el": [], |
545 | + "s390x": [] |
546 | + }, |
547 | + "focal": { |
548 | + "amd64": [], |
549 | + "arm64": [], |
550 | + "armhf": [], |
551 | + "i386": [], |
552 | + "ppc64el": [], |
553 | + "s390x": [] |
554 | + }, |
555 | + "hirsute": { |
556 | + "amd64": [], |
557 | + "arm64": [], |
558 | + "armhf": [], |
559 | + "i386": [], |
560 | + "ppc64el": [], |
561 | + "s390x": [] |
562 | + }, |
563 | + "impish": { |
564 | + "amd64": [], |
565 | + "ppc64el": [], |
566 | + "i386": [], |
567 | + "armhf": [], |
568 | + "arm64": [], |
569 | + "s390x": [] |
570 | + }, |
571 | + "jammy": { |
572 | + "amd64": [], |
573 | + "arm64": [], |
574 | + "i386": [], |
575 | + "s390x": [], |
576 | + "ppc64el": [], |
577 | + "armhf": [] |
578 | + }, |
579 | + "kinetic": { |
580 | + "ppc64el": [], |
581 | + "arm64": [], |
582 | + "s390x": [], |
583 | + "armhf": [], |
584 | + "i386": [], |
585 | + "amd64": [] |
586 | + } |
587 | + } |
588 | +} |
589 | diff --git a/tests/data/running-20220822.json b/tests/data/running-20220822.json |
590 | new file mode 100644 |
591 | index 0000000..76d677f |
592 | --- /dev/null |
593 | +++ b/tests/data/running-20220822.json |
594 | @@ -0,0 +1 @@ |
595 | +{"systemd-upstream": {"build-git_https://salsa.debian.org/systemd-team/systemd.git#upstream-ci;env_['CFLAGS=-O0', 'DEB_BUILD_PROFILES=noudeb', 'TEST_UPSTREAM=1', 'CONFFLAGS_UPSTREAM=--werror -Dslow-tests=true', 'UPSTREAM_PULL_REQUEST=24405', 'GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/f315d476c60ca7e5458a8db995cb8a4094569893'];ppas_['upstream-systemd-ci/systemd-ci'];submit-time_2022-08-23 03:27:19;": {"focal": {"arm64": [{"build-git": "https://salsa.debian.org/systemd-team/systemd.git#upstream-ci", "env": ["CFLAGS=-O0", "DEB_BUILD_PROFILES=noudeb", "TEST_UPSTREAM=1", "CONFFLAGS_UPSTREAM=--werror -Dslow-tests=true", "UPSTREAM_PULL_REQUEST=24405", "GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/f315d476c60ca7e5458a8db995cb8a4094569893"], "ppas": ["upstream-systemd-ci/systemd-ci"], "submit-time": "2022-08-23 03:27:19"}, 5219, "\tRenaming libudev1-dbgsym_251.1398.gf315d476c6.0_arm64.deb to libudev1-dbgsym_251.1398.gf315d476c6.0_arm64.ddeb\ndpkg-deb: building package 'libudev-dev' in '../libudev-dev_251.1398.gf315d476c6.0_arm64.deb'.\ndpkg-deb: building package 'systemd-standalone-sysusers' in '../systemd-standalone-sysusers_251.1398.gf315d476c6.0_arm64.deb'.\ndpkg-deb: building package 'systemd-standalone-sysusers-dbgsym' in 'debian/.debhelper/scratch-space/build-systemd-standalone-sysusers/systemd-standalone-sysusers-dbgsym_251.1398.gf315d476c6.0_arm64.deb'.\n\tRenaming systemd-standalone-sysusers-dbgsym_251.1398.gf315d476c6.0_arm64.deb to systemd-standalone-sysusers-dbgsym_251.1398.gf315d476c6.0_arm64.ddeb\ndpkg-deb: building package 'systemd-standalone-tmpfiles' in '../systemd-standalone-tmpfiles_251.1398.gf315d476c6.0_arm64.deb'.\ndpkg-deb: building package 'systemd-standalone-tmpfiles-dbgsym' in 'debian/.debhelper/scratch-space/build-systemd-standalone-tmpfiles/systemd-standalone-tmpfiles-dbgsym_251.1398.gf315d476c6.0_arm64.deb'.\n\tRenaming systemd-standalone-tmpfiles-dbgsym_251.1398.gf315d476c6.0_arm64.deb to systemd-standalone-tmpfiles-dbgsym_251.1398.gf315d476c6.0_arm64.ddeb\ndpkg-deb: building package 'systemd-oomd' in '../systemd-oomd_251.1398.gf315d476c6.0_arm64.deb'.\ndpkg-deb: building package 'systemd-oomd-dbgsym' in 'debian/.debhelper/scratch-space/build-systemd-oomd/systemd-oomd-dbgsym_251.1398.gf315d476c6.0_arm64.deb'.\n\tRenaming systemd-oomd-dbgsym_251.1398.gf315d476c6.0_arm64.deb to systemd-oomd-dbgsym_251.1398.gf315d476c6.0_arm64.ddeb\n dpkg-genbuildinfo --build=binary\n dpkg-genchanges --build=binary >../systemd_251.2-1_arm64.changes\ndpkg-genchanges: info: binary-only upload (no source code included)\n dpkg-source --after-build .\ndpkg-buildpackage: info: binary-only upload (no source included)\nautopkgtest [04:59:39]: test timedated: preparing testbed\n"], "s390x": [{"build-git": "https://salsa.debian.org/systemd-team/systemd.git#upstream-ci", "env": ["CFLAGS=-O0", "DEB_BUILD_PROFILES=noudeb", "TEST_UPSTREAM=1", "CONFFLAGS_UPSTREAM=--werror -Dslow-tests=true", "UPSTREAM_PULL_REQUEST=24405", "GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/f315d476c60ca7e5458a8db995cb8a4094569893"], "ppas": ["upstream-systemd-ci/systemd-ci"], "submit-time": "2022-08-23 03:27:19"}, 5249, "[860/2304] cc -o systemd-user-runtime-dir 'systemd-user-runtime-dir@exe/src_login_user-runtime-dir.c.o' -flto -Wl,--as-needed -Wl,--no-undefined -pie -Wl,--fatal-warnings -Wl,-z,now -Wl,-z,relro -fstack-protector -Wl,--warn-common -Wl,--gc-sections -g -O2 -fdebug-prefix-map=/tmp/autopkgtest.UNl3GD/build.uT0/systemd=. -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--start-group src/shared/libsystemd-shared-251.so -Wl,--end-group '-Wl,-rpath,$ORIGIN/src/shared:XXXXXXXXXXXXXX' -Wl,-rpath-link,/tmp/autopkgtest.UNl3GD/build.uT0/systemd/build-deb/src/shared\n"]}}, "build-git_https://salsa.debian.org/systemd-team/systemd.git#upstream-ci;env_['CFLAGS=-O0', 'DEB_BUILD_PROFILES=noudeb', 'TEST_UPSTREAM=1', 'CONFFLAGS_UPSTREAM=--werror', 'UPSTREAM_PULL_REQUEST=24405', 'GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/f315d476c60ca7e5458a8db995cb8a4094569893'];ppas_['upstream-systemd-ci/systemd-ci'];submit-time_2022-08-23 03:27:12;": {"focal": {"ppc64el": [{"build-git": "https://salsa.debian.org/systemd-team/systemd.git#upstream-ci", "env": ["CFLAGS=-O0", "DEB_BUILD_PROFILES=noudeb", "TEST_UPSTREAM=1", "CONFFLAGS_UPSTREAM=--werror", "UPSTREAM_PULL_REQUEST=24405", "GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/f315d476c60ca7e5458a8db995cb8a4094569893"], "ppas": ["upstream-systemd-ci/systemd-ci"], "submit-time": "2022-08-23 03:27:12"}, 5156, "+ timeout --foreground 300 /bin/qemu-system-ppc64 -smp 4 -net none -m 512M -nographic -kernel /boot/vmlinux-5.4.0-124-generic -drive format=raw,cache=unsafe,file=/var/tmp/systemd-test.NKw8hr/default.img -device virtio-rng-pci,max-bytes=1024,period=1000 -initrd /boot/initrd.img-5.4.0-124-generic -append 'root=LABEL=systemd_boot rw raid=noautodetect rd.luks=0 loglevel=2 init=/lib/systemd/systemd console=hvc0 SYSTEMD_UNIT_PATH=/usr/lib/systemd/tests/testdata/testsuite-09.units:/usr/lib/systemd/tests/testdata/units: systemd.unit=testsuite.target systemd.wants=testsuite-09.service systemd.wants=end.service'\nqemu-system-ppc64: warning: TCG doesn't support requested feature, cap-cfpc=workaround\nqemu-system-ppc64: warning: TCG doesn't support requested feature, cap-sbbc=workaround\nqemu-system-ppc64: warning: TCG doesn't support requested feature, cap-ibs=workaround\n\n\r\nSLOF\u001b[0m\u001b[?25l **********************************************************************\r\n\u001b[1mQEMU Starting\r\n\u001b[0m Build Date = Jan 31 2020 20:27:09\r\n FW Version = buildd@ release 20191209\r\n Press \"s\" to enter Open Firmware.\r\r\n\r\r\n\u001b[0m\u001b[?25hC0000\rC0100\rC0120\rC0140\rC0200\rC0240\rC0260\rC02E0\rC0300\rC0320\rC0340\rC0360\rC0370\rC0380\rC0371\rC0373\rC0374\rC03F0\rC0400\rC0480\rC04C0\rC04D0\rC0500\rPopulating /vdevice methods\r\nPopulating /vdevice/vty@71000000\r\nPopulating /vdevice/nvram@71000001\r\nPopulating /vdevice/v-scsi@71000002\r\n SCSI: Looking for devices\r\n 8000000000000000 DISK : \"QEMU QEMU HARDDISK 2.5+\"\r\n 8200000000000000 CD-ROM : \"QEMU QEMU CD-ROM 2.5+\"\r\nC05A0\rPopulating /pci@800000020000000\r\n 00 0000 (D) : 1234 1111 qemu vga\r\n 00 0800 (D) : 1033 0194 serial bus [ usb-xhci ]\r\n 00 1000 (D) : 1af4 1005 legacy-device*\r\nC0600\rC06C0\rC0700\rC0800\rC0880\rNo NVRAM common partition, re-initializing...\r\nC0890\rC08A0\rC08A8\rInstalling QEMU fb\r\n\r\n\r\n\r\nC08B0\rScanning USB \r\n XHCI: Initializing\r\n USB Keyboard \r\n"]}}, "build-git_https://salsa.debian.org/systemd-team/systemd.git#upstream-ci;env_['CFLAGS=-O0', 'DEB_BUILD_PROFILES=noudeb', 'TEST_UPSTREAM=1', 'CONFFLAGS_UPSTREAM=--werror -Dslow-tests=true', 'UPSTREAM_PULL_REQUEST=24405', 'GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/f315d476c60ca7e5458a8db995cb8a4094569893'];ppas_['upstream-systemd-ci/systemd-ci'];submit-time_2022-08-23 03:27:12;": {"focal": {"amd64": [{"build-git": "https://salsa.debian.org/systemd-team/systemd.git#upstream-ci", "env": ["CFLAGS=-O0", "DEB_BUILD_PROFILES=noudeb", "TEST_UPSTREAM=1", "CONFFLAGS_UPSTREAM=--werror -Dslow-tests=true", "UPSTREAM_PULL_REQUEST=24405", "GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/f315d476c60ca7e5458a8db995cb8a4094569893"], "ppas": ["upstream-systemd-ci/systemd-ci"], "submit-time": "2022-08-23 03:27:12"}, 5137, "[ 263.470842] testsuite-02.sh[33]: test-conf-files OK\r\n[ 263.479534] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-hmac'\r\n[ 263.491161] testsuite-02.sh[33]: test-hmac OK\r\n[ 263.500096] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-set-disable-mempool'\r\n[ 263.511745] testsuite-02.sh[33]: test-set-disable-mempool OK\r\n[ 263.520582] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-libudev-sym'\r\n[ 263.532425] testsuite-02.sh[33]: test-libudev-sym OK\r\n[ 263.542344] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-udev-util'\r\n[ 263.554598] testsuite-02.sh[33]: test-udev-util OK\r\n[ 263.564466] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-network-generator-conversion.sh'\r\n[ 263.598931] testsuite-02.sh[33]: test-network-generator-conversion.sh OK\r\n[ 263.608357] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-lldp-rx'\r\n[ 263.620026] testsuite-02.sh[33]: test-lldp-rx OK\r\n[ 263.629083] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-ether-addr-util'\r\n[ 263.640881] testsuite-02.sh[33]: test-ether-addr-util OK\r\n[ 263.649836] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-watch-pid'\r\n[ 263.682230] testsuite-02.sh[33]: test-watch-pid OK\r\n[ 263.706128] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-libsystemd-sym'\r\n[ 263.718171] testsuite-02.sh[33]: test-libsystemd-sym OK\r\n[ 263.728677] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-fido-id-desc'\r\n[ 263.740393] testsuite-02.sh[33]: test-fido-id-desc OK\r\n[ 263.749484] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-sigbus'\r\n[ 263.761337] testsuite-02.sh[33]: test-sigbus OK\r\n[ 263.770099] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-env-util'\r\n[ 263.781948] testsuite-02.sh[33]: test-env-util OK\r\n[ 263.791839] testsuite-02.sh[33]: Executing test '/usr/lib/systemd/tests/test-random-util'\r\n"]}}, "build-git_https://salsa.debian.org/systemd-team/systemd.git#upstream-ci;env_['CFLAGS=-O0', 'DEB_BUILD_PROFILES=noudeb', 'TEST_UPSTREAM=1', 'CONFFLAGS_UPSTREAM=--werror -Dslow-tests=true', 'UPSTREAM_PULL_REQUEST=24351', 'GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/02c2f7ea526b414f0e83903d9cb77b364340cd22'];ppas_['upstream-systemd-ci/systemd-ci'];submit-time_2022-08-22 21:56:53;": {"focal": {"s390x": [{"build-git": "https://salsa.debian.org/systemd-team/systemd.git#upstream-ci", "env": ["CFLAGS=-O0", "DEB_BUILD_PROFILES=noudeb", "TEST_UPSTREAM=1", "CONFFLAGS_UPSTREAM=--werror -Dslow-tests=true", "UPSTREAM_PULL_REQUEST=24351", "GITHUB_STATUSES_URL=https://api.github.com/repos/systemd/systemd/statuses/02c2f7ea526b414f0e83903d9cb77b364340cd22"], "ppas": ["upstream-systemd-ci/systemd-ci"], "submit-time": "2022-08-22 21:56:53"}, 5255, "[847/2304] cc -Isystemd-resolved@exe -I. -I.. -Isrc/basic -I../src/basic -Isrc/fundamental -I../src/fundamental -Isrc/systemd -I../src/systemd -I../ -I../src/libsystemd/sd-bus -I../src/libsystemd/sd-device -I../src/libsystemd/sd-event -I../src/libsystemd/sd-hwdb -I../src/libsystemd/sd-id128 -I../src/libsystemd/sd-journal -I../src/libsystemd/sd-netlink -I../src/libsystemd/sd-network -I../src/libsystemd/sd-resolve -Isrc/shared -I../src/shared -Isrc/resolve -I../src/resolve -flto -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Werror -std=gnu11 -Wno-format-signedness -Wno-missing-field-initializers -Wno-unused-parameter -Wdate-time -Wendif-labels -Werror=format=2 -Werror=implicit-function-declaration -Werror=incompatible-pointer-types -Werror=int-conversion -Werror=overflow -Werror=override-init -Werror=return-type -Werror=shift-count-overflow -Werror=shift-overflow=2 -Werror=undef -Wfloat-equal -Wimplicit-fallthrough=5 -Winit-self -Wlogical-op -Wmissing-include-dirs -Wmissing-noreturn -Wnested-externs -Wold-style-definition -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-aliasing=2 -Wstrict-prototypes -Wsuggest-attribute=noreturn -Wunused-function -Wwrite-strings -Wno-maybe-uninitialized -Wno-unused-result -Werror=missing-declarations -Werror=missing-prototypes -fdiagnostics-show-option -fno-common -fno-strict-aliasing -fstack-protector -fstack-protector-strong -fvisibility=hidden --param=ssp-buffer-size=4 -ffunction-sections -fdata-sections -Werror=shadow -include config.h -g -O2 -fdebug-prefix-map=/tmp/autopkgtest.b8jMMa/build.QI1/systemd=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIE -pthread -MD -MQ 'systemd-resolved@exe/src_resolve_resolved.c.o' -MF 'systemd-resolved@exe/src_resolve_resolved.c.o.d' -o 'systemd-resolved@exe/src_resolve_resolved.c.o' -c ../src/resolve/resolved.c\n"]}}}, "dovecot": {"ppas_['bryce/dovecot-merge-v1e2.3.19.1adfsg1-2'];requester_bryce;submit-time_2022-08-23 04:56:40;triggers_['dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1'];": {"kinetic": {"amd64": [{"ppas": ["bryce/dovecot-merge-v1e2.3.19.1adfsg1-2"], "requester": "bryce", "submit-time": "2022-08-23 04:56:40", "triggers": ["dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1"]}, 270, "Unpacking mokutil (0.6.0-2) over (0.4.0-1ubuntu2) ...\r\nPreparing to unpack .../18-python3-distutils_3.10.6-1_all.deb ...\r\nUnpacking python3-distutils (3.10.6-1) over (3.10.5-2ubuntu2) ...\r\nPreparing to unpack .../19-python3-lib2to3_3.10.6-1_all.deb ...\r\nUnpacking python3-lib2to3 (3.10.6-1) over (3.10.5-2ubuntu2) ...\r\nSetting up libkeyutils1:amd64 (1.6.3-1) ...\r\nSetting up libtirpc-common (1.3.3+ds-1) ...\r\nSetting up libssl3:amd64 (3.0.5-2ubuntu1) ...\r\nSetting up ubuntu-standard (1.489) ...\r\nSetting up libappstream4:amd64 (0.15.5-1) ...\r\nSetting up libsasl2-modules-db:amd64 (2.1.28+dfsg-6ubuntu2) ...\r\nSetting up libsigsegv2:amd64 (2.14-1ubuntu1) ...\r\nSetting up usrmerge (29ubuntu1) ...\r\nSetting up libsasl2-2:amd64 (2.1.28+dfsg-6ubuntu2) ...\r\nSetting up openssl (3.0.5-2ubuntu1) ...\r\nInstalling new version of config file /etc/ssl/openssl.cnf ...\r\nSetting up libpython3-stdlib:amd64 (3.10.6-1) ...\r\nSetting up initramfs-tools-bin (0.140ubuntu16) ...\r\nSetting up libtirpc3:amd64 (1.3.3+ds-1) ...\r\nSetting up mokutil (0.6.0-2) ...\r\nSetting up libsasl2-modules:amd64 (2.1.28+dfsg-6ubuntu2) ...\r\nSetting up python3 (3.10.6-1) ...\r\nSetting up initramfs-tools-core (0.140ubuntu16) ...\r\nSetting up python3-lib2to3 (3.10.6-1) ...\r\nSetting up python3-distutils (3.10.6-1) ...\r\nSetting up initramfs-tools (0.140ubuntu16) ...\r\nupdate-initramfs: deferring update (trigger activated)\r\nSetting up ubuntu-minimal (1.489) ...\r\nSetting up python3-gdbm:amd64 (3.10.6-1) ...\r\nProcessing triggers for man-db (2.10.2-2) ...\r\nProcessing triggers for libc-bin (2.35-0ubuntu3) ...\r\nProcessing triggers for initramfs-tools (0.140ubuntu16) ...\r\nupdate-initramfs: Generating /boot/initrd.img-5.15.0-27-generic\r\nNo lz4 in /usr/bin:/sbin:/bin, using gzip\r\nReading package lists...\nBuilding dependency tree...\nReading state information...\n0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.\nautopkgtest [05:01:10]: rebooting testbed after setup commands that affected boot\n"]}}, "ppas_['bryce/dovecot-merge-v1e2.3.19.1adfsg1-2'];requester_bryce;submit-time_2022-08-23 04:59:38;triggers_['dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1'];": {"kinetic": {"s390x": [{"ppas": ["bryce/dovecot-merge-v1e2.3.19.1adfsg1-2"], "requester": "bryce", "submit-time": "2022-08-23 04:59:38", "triggers": ["dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1"]}, 130, "autopkgtest [04:59:44]: git checkout: 14935a6 Merge branch 'cross-arch-architecture-filtering'\nautopkgtest [04:59:44]: host juju-4d1272-prod-proposed-migration-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.0mwj_par/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --setup-commands /home/ubuntu/autopkgtest/setup-commands/setup-testbed --setup-commands 'apt-key adv --keyserver keyserver.ubuntu.com --recv-key 510DE9AC846B40EB94EDB3AEFBB49579B75FECB0' --setup-commands 'REL=$(sed -rn \"/^(deb|deb-src) .*(ubuntu.com|ftpmaster)/ { s/^[^ ]+ +(\\[.*\\] *)?[^ ]* +([^ -]+) +.*$/\\2/p; q }\" /etc/apt/sources.list); echo \"deb http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" > /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list; echo \"deb-src http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" >> /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list;' --apt-upgrade dovecot --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-4d1272-prod-proposed-migration-9@bos01-s390x-4.secgroup --name adt-kinetic-s390x-dovecot-20220823-045944-juju-4d1272-prod-proposed-migration-9 --image adt/ubuntu-kinetic-s390x-server --keyname testbed-juju-4d1272-prod-proposed-migration-9 --net-id=net_prod-proposed-migration -e TERM=linux -e ''\"'\"'http_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'https_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'no_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpad.net,10.24.0.0/24'\"'\"'' --mirror=http://ftpmaster.internal/ubuntu/\n"]}}, "ppas_['bryce/dovecot-merge-v1e2.3.19.1adfsg1-2'];requester_bryce;submit-time_2022-08-23 05:00:23;triggers_['dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1'];": {"kinetic": {"armhf": [{"ppas": ["bryce/dovecot-merge-v1e2.3.19.1adfsg1-2"], "requester": "bryce", "submit-time": "2022-08-23 05:00:23", "triggers": ["dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1"]}, 80, "autopkgtest [05:00:26]: starting date: 2022-08-23\nautopkgtest [05:00:26]: git checkout: 167b209 lxd: Increase various timeouts\nautopkgtest [05:00:26]: host juju-4d1272-prod-proposed-migration-5; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.70eb48qe/out --timeout-copy=6000 --setup-commands 'sed -i \"s/ports.ubuntu.com/ftpmaster.internal/; s/ubuntu-ports/ubuntu/\" /etc/apt/sources.list `ls /etc/apt/sources.list.d/*.list 2>/dev/null || true`; ln -s /dev/null /etc/systemd/system/bluetooth.service; printf \"http_proxy=http://squid.internal:3128\\nhttps_proxy=http://squid.internal:3128\\nno_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpad.net,10.24.0.0/24\\n\" >> /etc/environment' --setup-commands 'apt-key adv --keyserver keyserver.ubuntu.com --recv-key 510DE9AC846B40EB94EDB3AEFBB49579B75FECB0' --setup-commands 'REL=$(sed -rn \"/^(deb|deb-src) .*(ubuntu.com|ftpmaster)/ { s/^[^ ]+ +(\\[.*\\] *)?[^ ]* +([^ -]+) +.*$/\\2/p; q }\" /etc/apt/sources.list); echo \"deb http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" > /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list; echo \"deb-src http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" >> /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list;' --apt-upgrade dovecot --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1' -- lxd -r lxd-armhf-10.44.124.77 lxd-armhf-10.44.124.77:autopkgtest/ubuntu/kinetic/armhf\nautopkgtest [05:01:35]: @@@@@@@@@@@@@@@@@@@@ test bed setup\n"]}}, "ppas_['bryce/dovecot-merge-v1e2.3.19.1adfsg1-2'];requester_bryce;submit-time_2022-08-23 04:59:40;triggers_['dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1'];": {"kinetic": {"ppc64el": [{"ppas": ["bryce/dovecot-merge-v1e2.3.19.1adfsg1-2"], "requester": "bryce", "submit-time": "2022-08-23 04:59:40", "triggers": ["dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1"]}, 80, "autopkgtest [05:00:31]: git checkout: 14935a6 Merge branch 'cross-arch-architecture-filtering'\nautopkgtest [05:00:31]: host juju-4d1272-prod-proposed-migration-4; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.0gq45tvi/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --setup-commands /home/ubuntu/autopkgtest/setup-commands/setup-testbed --setup-commands 'apt-key adv --keyserver keyserver.ubuntu.com --recv-key 510DE9AC846B40EB94EDB3AEFBB49579B75FECB0' --setup-commands 'REL=$(sed -rn \"/^(deb|deb-src) .*(ubuntu.com|ftpmaster)/ { s/^[^ ]+ +(\\[.*\\] *)?[^ ]* +([^ -]+) +.*$/\\2/p; q }\" /etc/apt/sources.list); echo \"deb http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" > /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list; echo \"deb-src http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" >> /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list;' --apt-upgrade dovecot --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-4d1272-prod-proposed-migration-4@bos02-ppc64el-9.secgroup --name adt-kinetic-ppc64el-dovecot-20220823-050031-juju-4d1272-prod-proposed-migration-4 --image adt/ubuntu-kinetic-ppc64el-server --keyname testbed-juju-4d1272-prod-proposed-migration-4 --net-id=net_prod-proposed-migration -e TERM=linux -e ''\"'\"'http_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'https_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'no_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpad.net,10.24.0.0/24'\"'\"'' --mirror=http://ftpmaster.internal/ubuntu/\n"]}}, "all-proposed_1;ppas_['bryce/dovecot-merge-v1e2.3.19.1adfsg1-2'];requester_bryce;submit-time_2022-08-23 05:00:18;triggers_['dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1'];": {"kinetic": {"s390x": [{"all-proposed": "1", "ppas": ["bryce/dovecot-merge-v1e2.3.19.1adfsg1-2"], "requester": "bryce", "submit-time": "2022-08-23 05:00:18", "triggers": ["dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1"]}, 70, "autopkgtest [05:00:39]: host juju-4d1272-prod-proposed-migration-4; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.dkxt87g0/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --setup-commands /home/ubuntu/autopkgtest/setup-commands/setup-testbed --setup-commands 'apt-key adv --keyserver keyserver.ubuntu.com --recv-key 510DE9AC846B40EB94EDB3AEFBB49579B75FECB0' --setup-commands 'REL=$(sed -rn \"/^(deb|deb-src) .*(ubuntu.com|ftpmaster)/ { s/^[^ ]+ +(\\[.*\\] *)?[^ ]* +([^ -]+) +.*$/\\2/p; q }\" /etc/apt/sources.list); echo \"deb http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" > /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list; echo \"deb-src http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" >> /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list;' --apt-pocket=proposed --apt-upgrade dovecot --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-4d1272-prod-proposed-migration-4@bos01-s390x-7.secgroup --name adt-kinetic-s390x-dovecot-20220823-050039-juju-4d1272-prod-proposed-migration-4 --image adt/ubuntu-kinetic-s390x-server --keyname testbed-juju-4d1272-prod-proposed-migration-4 --net-id=net_prod-proposed-migration -e TERM=linux -e ''\"'\"'http_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'https_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'no_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpad.net,10.24.0.0/24'\"'\"'' --mirror=http://ftpmaster.internal/ubuntu/\n"]}}, "all-proposed_1;ppas_['bryce/dovecot-merge-v1e2.3.19.1adfsg1-2'];requester_bryce;submit-time_2022-08-23 05:00:17;triggers_['dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1'];": {"kinetic": {"amd64": [{"all-proposed": "1", "ppas": ["bryce/dovecot-merge-v1e2.3.19.1adfsg1-2"], "requester": "bryce", "submit-time": "2022-08-23 05:00:17", "triggers": ["dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1"]}, 50, "autopkgtest [05:00:56]: host juju-4d1272-prod-proposed-migration-4; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.7yvknlf_/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --setup-commands /home/ubuntu/autopkgtest/setup-commands/setup-testbed --setup-commands 'apt-key adv --keyserver keyserver.ubuntu.com --recv-key 510DE9AC846B40EB94EDB3AEFBB49579B75FECB0' --setup-commands 'REL=$(sed -rn \"/^(deb|deb-src) .*(ubuntu.com|ftpmaster)/ { s/^[^ ]+ +(\\[.*\\] *)?[^ ]* +([^ -]+) +.*$/\\2/p; q }\" /etc/apt/sources.list); echo \"deb http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" > /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list; echo \"deb-src http://ppa.launchpad.net/bryce/dovecot-merge-v1e2.3.19.1adfsg1-2/ubuntu $REL main\" >> /etc/apt/sources.list.d/autopkgtest-bryce-dovecot-merge-v1e2.3.19.1adfsg1-2.list;' --apt-pocket=proposed --apt-upgrade dovecot --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=dovecot/1:2.3.19.1+dfsg1-2ubuntu2~kinetic1' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-4d1272-prod-proposed-migration-4@lgw01-5.secgroup --name adt-kinetic-amd64-dovecot-20220823-050056-juju-4d1272-prod-proposed-migration-4 --image adt/ubuntu-kinetic-amd64-server --keyname testbed-juju-4d1272-prod-proposed-migration-4 --net-id=net_prod-proposed-migration -e TERM=linux -e ''\"'\"'http_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'https_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'no_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpad.net,10.24.0.0/24'\"'\"'' --mirror=http://ftpmaster.internal/ubuntu/\n"]}}}, "r-cran-pheatmap": {"submit-time_2022-08-23 00:34:17;triggers_['r-cran-scales/1.2.1-1'];": {"kinetic": {"amd64": [{"submit-time": "2022-08-23 00:34:17", "triggers": ["r-cran-scales/1.2.1-1"]}, 10, "autopkgtest [05:01:42]: starting date: 2022-08-23\nautopkgtest [05:01:43]: git checkout: 14935a6 Merge branch 'cross-arch-architecture-filtering'\nautopkgtest [05:01:43]: host juju-4d1272-prod-proposed-migration-4; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.8654qrvj/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --setup-commands /home/ubuntu/autopkgtest/setup-commands/setup-testbed --apt-pocket=proposed=src:r-cran-scales --apt-upgrade r-cran-pheatmap --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=r-cran-scales/1.2.1-1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-4d1272-prod-proposed-migration-4@lgw01-29.secgroup --name adt-kinetic-amd64-r-cran-pheatmap-20220823-050142-juju-4d1272-prod-proposed-migration-4 --image adt/ubuntu-kinetic-amd64-server --keyname testbed-juju-4d1272-prod-proposed-migration-4 --net-id=net_prod-proposed-migration -e TERM=linux -e ''\"'\"'http_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'https_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'no_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpad.net,10.24.0.0/24'\"'\"'' --mirror=http://ftpmaster.internal/ubuntu/\n"]}}}, "r-cran-plotly": {"submit-time_2022-08-23 00:34:17;triggers_['r-cran-scales/1.2.1-1'];": {"kinetic": {"amd64": [{"submit-time": "2022-08-23 00:34:17", "triggers": ["r-cran-scales/1.2.1-1"]}, 10, "autopkgtest [05:01:45]: starting date: 2022-08-23\nautopkgtest [05:01:45]: git checkout: 14935a6 Merge branch 'cross-arch-architecture-filtering'\nautopkgtest [05:01:45]: host juju-4d1272-prod-proposed-migration-9; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.mrd6nrdp/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --setup-commands /home/ubuntu/autopkgtest/setup-commands/setup-testbed --apt-pocket=proposed=src:r-cran-scales --apt-upgrade r-cran-plotly --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=r-cran-scales/1.2.1-1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-4d1272-prod-proposed-migration-9@lgw01-2.secgroup --name adt-kinetic-amd64-r-cran-plotly-20220823-050145-juju-4d1272-prod-proposed-migration-9 --image adt/ubuntu-kinetic-amd64-server --keyname testbed-juju-4d1272-prod-proposed-migration-9 --net-id=net_prod-proposed-migration -e TERM=linux -e ''\"'\"'http_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'https_proxy=http://squid.internal:3128'\"'\"'' -e ''\"'\"'no_proxy=127.0.0.1,127.0.1.1,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpad.net,10.24.0.0/24'\"'\"'' --mirror=http://ftpmaster.internal/ubuntu/\n"]}}}} |
596 | diff --git a/tests/test_job.py b/tests/test_job.py |
597 | new file mode 100644 |
598 | index 0000000..d9a9967 |
599 | --- /dev/null |
600 | +++ b/tests/test_job.py |
601 | @@ -0,0 +1,112 @@ |
602 | +#!/usr/bin/env python3 |
603 | +# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*- |
604 | + |
605 | +# Author: Bryce Harrington <bryce@canonical.com> |
606 | +# |
607 | +# Copyright (C) 2022 Bryce W. Harrington |
608 | +# |
609 | +# Released under GNU GPLv2 or later, read the file 'LICENSE.GPLv2+' for |
610 | +# more information. |
611 | + |
612 | +"""Job class tests""" |
613 | + |
614 | +import os |
615 | +import sys |
616 | + |
617 | +sys.path.insert(0, os.path.realpath( |
618 | + os.path.join(os.path.dirname(__file__), ".."))) |
619 | + |
620 | +from ppa.job import Job, get_running, get_waiting |
621 | + |
622 | + |
623 | +class ResponseMock: |
624 | + def __init__(self, text): |
625 | + self._text = text.encode('utf-8') |
626 | + |
627 | + def read(self): |
628 | + return self._text |
629 | + |
630 | + |
631 | +def test_object(): |
632 | + """Checks that Job objects can be instantiated.""" |
633 | + job = Job(0, '', '', '', '') |
634 | + assert job |
635 | + |
636 | + |
637 | +def test_init(): |
638 | + job = Job(0, 'a', 'b', 'c', 'd') |
639 | + assert job.number == 0 |
640 | + assert job.submit_time == 'a' |
641 | + assert job.source_package == 'b' |
642 | + assert job.series == 'c' |
643 | + assert job.arch == 'd' |
644 | + |
645 | + |
646 | +def test_repr(): |
647 | + """Checks Job object machine-parsable representation.""" |
648 | + job = Job(0, 'a', 'b', 'c', 'd') |
649 | + assert repr(job) == "Job(source_package='b', series='c', arch='d')" |
650 | + |
651 | + |
652 | +def test_str(): |
653 | + """Checks Job object textual presentation.""" |
654 | + job = Job(0, 'a', 'b', 'c', 'd') |
655 | + assert f"{job}" == 'b c (d)' |
656 | + |
657 | + |
658 | +def test_triggers(): |
659 | + """Checks Job object's triggers.""" |
660 | + job = Job(0, '', '', '', '', triggers=['a/1', 'b/2']) |
661 | + assert job.triggers == ['a/1', 'b/2'] |
662 | + |
663 | + |
664 | +def test_ppas(): |
665 | + """Checks Job object textual presentation.""" |
666 | + job = Job(0, '', '', '', '', ppas=['ppa:a/b', 'ppa:c/d']) |
667 | + assert job.ppas == ['ppa:a/b', 'ppa:c/d'] |
668 | + |
669 | + |
670 | +def test_request_url(): |
671 | + """Checks Job object textual presentation.""" |
672 | + jobinfo = { |
673 | + 'triggers': ['t/1'], |
674 | + 'ppas': ['ppa:a/b', 'ppa:c/d'] |
675 | + } |
676 | + job = Job(0, 'a', 'b', 'c', 'd', jobinfo['triggers'], jobinfo['ppas']) |
677 | + assert job.request_url == "https://autopkgtest.ubuntu.com/request.cgi?release=c&arch=d&package=b&trigger=t/1" |
678 | + |
679 | + |
680 | +def test_get_running(): |
681 | + """Checks output from the get_running() command""" |
682 | + json_text = ('{"mypackage": {"my-job-id": {"focal": { "arm64": [' |
683 | + '{"submit-time": "2022-08-19 20:59:01", ' |
684 | + '"triggers": ["yourpackage/1.2.3"], ' |
685 | + '"ppas": ["ppa:me/myppa"]}, ' |
686 | + '1234, ' |
687 | + '"Log Output Here"' |
688 | + '] } } } }') |
689 | + fake_response = ResponseMock(json_text) |
690 | + job = next(get_running(fake_response, series='focal', ppa='ppa:me/myppa')) |
691 | + assert repr(job) == "Job(source_package='mypackage', series='focal', arch='arm64')" |
692 | + assert job.triggers == ["yourpackage/1.2.3"] |
693 | + assert job.ppas == ["ppa:me/myppa"] |
694 | + |
695 | + |
696 | +def test_get_waiting(): |
697 | + """Checks output from the get_waiting() command""" |
698 | + # TODO: I think ppas need to be in "ppa" instead of under "ubuntu" but need to doublecheck. |
699 | + json_text = ('{ "ubuntu": { "focal": { "amd64": [' |
700 | + ' "a\\n{\\"requester\\": \\"you\\",' |
701 | + ' \\"submit-time\\": \\"2022-08-19 07:37:56\\",' |
702 | + ' \\"triggers\\": [ \\"a/1.2-3\\", \\"b/1-1\\" ] }",' |
703 | + ' "b\\n{\\"requester\\": \\"you\\",' |
704 | + ' \\"submit-time\\": \\"2022-08-19 07:37:57\\",' |
705 | + ' \\"ppas\\": [ \\"ppa:me/myppa\\" ],' |
706 | + ' \\"triggers\\": [ \\"c/3.2-1\\", \\"d/2-2\\" ] }"' |
707 | + '] } } }') |
708 | + fake_response = ResponseMock(json_text) |
709 | + job = next(get_waiting(fake_response, series='focal', ppa='ppa:me/myppa')) |
710 | + assert job |
711 | + assert job.source_package == "b" |
712 | + assert job.ppas == ['ppa:me/myppa'] |
713 | + assert job.triggers == ['c/3.2-1', 'd/2-2'] |
Nice work, Bryce :)
I left a couple inline comments, but this LGTM as is.
I am also wondering if instead of including the complete samples of the json files, including hand-crafted minimal samples of those would be enough. The reason for the question is that this change alone increased the project root size from <200kb to 1.9Mb (not counting git data here). While this shouldn't matter much ATM, I was wondering if there's any chance this could pile up in the future with new test additions.