squad 1.78__py3-none-any.whl → 1.80__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- squad/ci/backend/tuxsuite.py +16 -1
- squad/ci/models.py +11 -10
- squad/ci/tasks.py +22 -0
- squad/settings.py +1 -0
- squad/version.py +1 -1
- {squad-1.78.dist-info → squad-1.80.dist-info}/METADATA +1 -1
- {squad-1.78.dist-info → squad-1.80.dist-info}/RECORD +11 -11
- {squad-1.78.dist-info → squad-1.80.dist-info}/WHEEL +1 -1
- {squad-1.78.dist-info → squad-1.80.dist-info}/COPYING +0 -0
- {squad-1.78.dist-info → squad-1.80.dist-info}/entry_points.txt +0 -0
- {squad-1.78.dist-info → squad-1.80.dist-info}/top_level.txt +0 -0
squad/ci/backend/tuxsuite.py
CHANGED
@@ -107,7 +107,7 @@ class Backend(BaseBackend):
|
|
107
107
|
|
108
108
|
"""
|
109
109
|
|
110
|
-
regex = r'^(OEBUILD|BUILD|TEST):([0-9a-z_
|
110
|
+
regex = r'^(OEBUILD|BUILD|TEST):([0-9a-z_\-.]+@[0-9a-z_\-.]+)#([a-zA-Z0-9]+)$'
|
111
111
|
matches = re.findall(regex, job_id)
|
112
112
|
if len(matches) == 0:
|
113
113
|
raise FetchIssue(f'Job id "{job_id}" does not match "{regex}"')
|
@@ -287,6 +287,17 @@ class Backend(BaseBackend):
|
|
287
287
|
|
288
288
|
return status, completed, metadata, tests, metrics, logs
|
289
289
|
|
290
|
+
def update_metadata_from_file(self, results, metadata):
|
291
|
+
if "download_url" in results:
|
292
|
+
download_url = results["download_url"]
|
293
|
+
try:
|
294
|
+
test_metadata_response = self.fetch_url(download_url + '/' + 'metadata.json')
|
295
|
+
# If fetching the metadata file did not error, decode it as json
|
296
|
+
if test_metadata_response.ok:
|
297
|
+
metadata.update(test_metadata_response.json())
|
298
|
+
except TemporaryFetchIssue:
|
299
|
+
pass
|
300
|
+
|
290
301
|
def parse_test_results(self, test_job, job_url, results, settings):
|
291
302
|
status = 'Complete'
|
292
303
|
completed = True
|
@@ -297,6 +308,10 @@ class Backend(BaseBackend):
|
|
297
308
|
# Pick up some metadata from results
|
298
309
|
metadata_keys = settings.get('TEST_METADATA_KEYS', [])
|
299
310
|
metadata = {k: results.get(k) for k in metadata_keys}
|
311
|
+
|
312
|
+
# Add extra metadata from metadata file if it exists
|
313
|
+
self.update_metadata_from_file(results=results, metadata=metadata)
|
314
|
+
|
300
315
|
metadata['job_url'] = job_url
|
301
316
|
metadata['job_id'] = test_job.job_id
|
302
317
|
|
squad/ci/models.py
CHANGED
@@ -143,17 +143,18 @@ class Backend(models.Model):
|
|
143
143
|
except DuplicatedTestJob as exception:
|
144
144
|
logger.error('Failed to fetch test_job(%d): "%s"' % (test_job.id, str(exception)))
|
145
145
|
|
146
|
-
if test_job.testrun:
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
146
|
+
if test_job.testrun and test_job.target.enabled_plugins and any(test_job.target.enabled_plugins):
|
147
|
+
# Avoids cyclic import errors
|
148
|
+
from squad.ci.tasks import postprocess_testjob
|
149
|
+
test_job.save()
|
150
|
+
postprocess_testjob.delay(test_job.id, status)
|
151
|
+
else:
|
152
|
+
# Remove the 'Fetching' job_status only after all work is done
|
153
|
+
test_job.job_status = status
|
154
|
+
test_job.save()
|
154
155
|
|
155
|
-
|
156
|
-
|
156
|
+
if test_job.testrun:
|
157
|
+
UpdateProjectStatus()(test_job.testrun)
|
157
158
|
|
158
159
|
def __postprocess_testjob__(self, test_job):
|
159
160
|
project = test_job.target
|
squad/ci/tasks.py
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
from squad.celery import app as celery
|
2
|
+
from squad.core.tasks import UpdateProjectStatus
|
2
3
|
from squad.ci.models import Backend, TestJob
|
3
4
|
from squad.ci.exceptions import SubmissionIssue
|
4
5
|
from squad.ci.utils import task_id
|
@@ -89,3 +90,24 @@ def send_testjob_resubmit_admin_email(job_id, resubmitted_job_id):
|
|
89
90
|
if test_job.target.html_mail:
|
90
91
|
message.attach_alternative(html_message, "text/html")
|
91
92
|
message.send()
|
93
|
+
|
94
|
+
|
95
|
+
@celery.task
|
96
|
+
def postprocess_testjob(job_id, status):
|
97
|
+
logger.info("postprocessing %s" % job_id)
|
98
|
+
testjob = TestJob.objects.get(pk=job_id)
|
99
|
+
backend = testjob.backend
|
100
|
+
backend.__postprocess_testjob__(testjob)
|
101
|
+
|
102
|
+
# Some plugins, like tradefed, can still trigger sub-tasks creating tests,
|
103
|
+
# ending the current thread, thus triggering build-finished events
|
104
|
+
# we need a way to tell the plugins to wait for all sub-tasks to be finished
|
105
|
+
|
106
|
+
# Remove the 'Fetching' job_status only after eventual plugins
|
107
|
+
# are finished, this garantees extra tests and metadata to
|
108
|
+
# be in SQUAD before the build is considered finished
|
109
|
+
testjob.job_status = status
|
110
|
+
testjob.save()
|
111
|
+
|
112
|
+
if testjob.testrun:
|
113
|
+
UpdateProjectStatus()(testjob.testrun)
|
squad/settings.py
CHANGED
@@ -384,6 +384,7 @@ CELERY_TASK_ROUTES = {
|
|
384
384
|
'squad.core.tasks.notification.*': {'queue': 'core_notification'},
|
385
385
|
'squad.ci.tasks.poll': {'queue': 'ci_poll'},
|
386
386
|
'squad.ci.tasks.fetch': {'queue': 'ci_fetch'},
|
387
|
+
'squad.ci.tasks.postprocess_testjob': {'queue': 'ci_fetch_postprocess'},
|
387
388
|
'squad.ci.tasks.submit': {'queue': 'ci_quick'},
|
388
389
|
'squad.ci.tasks.send_testjob_resubmit_admin_email': {'queue': 'ci_quick'},
|
389
390
|
}
|
squad/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = '1.
|
1
|
+
__version__ = '1.80'
|
@@ -7,10 +7,10 @@ squad/http.py,sha256=KuIKtpf3yOvf5fwc0T2MR0ul1l4AKxq3b0CLdk6KBhM,3667
|
|
7
7
|
squad/jinja2.py,sha256=OKX-lzNz6qtTZL56HWv4UBMPuBl4WQXv0qFJztGp9zs,2541
|
8
8
|
squad/mail.py,sha256=xH5wuIpD7u1fTN9vNOcbzByojleaffsKwp-9i3BeOD0,390
|
9
9
|
squad/manage.py,sha256=Z-LXT67p0R-IzwJ9fLIAacEZmU0VUjqDOSg7j2ZSxJ4,1437
|
10
|
-
squad/settings.py,sha256=
|
10
|
+
squad/settings.py,sha256=rW_2NTKQddDNYYB-gNq-0Yna_A8BO5l-0O3XkA-zj7w,14405
|
11
11
|
squad/socialaccount.py,sha256=vySqPwQ3qVVpahuJ-Snln8K--yzRL3bw4Nx27AsB39A,789
|
12
12
|
squad/urls.py,sha256=JiEfVW8YlzLPE52c2aHzdn5kVVKK4o22w8h5KOA6QhQ,2776
|
13
|
-
squad/version.py,sha256=
|
13
|
+
squad/version.py,sha256=1PniZI-fByh18EZM2pSB_ICBBYC9E5c41K4g9jnPfOg,21
|
14
14
|
squad/wsgi.py,sha256=SF8T0cQ0OPVyuYjO5YXBIQzvSXQHV0M2BTmd4gP1rPs,387
|
15
15
|
squad/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
squad/api/apps.py,sha256=Trk72p-iV1uGn0o5mdJn5HARUoHGbfgO49jwXvpkmdQ,141
|
@@ -25,14 +25,14 @@ squad/ci/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
25
|
squad/ci/admin.py,sha256=7yB-6F0cvt0NVvzGOTlZCyGPV_YHarmbKJZTTzataT4,2255
|
26
26
|
squad/ci/apps.py,sha256=6OVnzTdJkxdqEJnKWYE9dZgUcc29_T1LrDw41cK4EQk,139
|
27
27
|
squad/ci/exceptions.py,sha256=a1sccygniTYDSQi7FRn_6doapddFFiMf55AwGUh5Y80,227
|
28
|
-
squad/ci/models.py,sha256=
|
29
|
-
squad/ci/tasks.py,sha256=
|
28
|
+
squad/ci/models.py,sha256=xdRfHxSLLfiZXpb4kMwsOWRQwcfunw0h6ATYrX63bqY,13257
|
29
|
+
squad/ci/tasks.py,sha256=_fY9a9Mv4tMe2cYKu0WJhpA0RGiwdtLrPeAImxxDn4Y,3544
|
30
30
|
squad/ci/utils.py,sha256=38zHpw8xkZDSFlkG-2BwSK6AkcddK9OkN9LXuQ3SHR0,97
|
31
31
|
squad/ci/backend/__init__.py,sha256=yhpotXT9F4IdAOXvGQ3-17eOHAFwoaqf9SnMX17ab30,534
|
32
32
|
squad/ci/backend/fake.py,sha256=zzOXGesDCW9xiMQvXGD_jqCQF32yEd7hPM8DgfZxUok,2159
|
33
33
|
squad/ci/backend/lava.py,sha256=5KEXFwKGjzXPPe7_rzMGF7YShYCLwmooTc8tQUpGBSM,33076
|
34
34
|
squad/ci/backend/null.py,sha256=vP77Xj7roruehSjX8fJs7xK2aWxgaUA2id3P8nHNrEY,4949
|
35
|
-
squad/ci/backend/tuxsuite.py,sha256=
|
35
|
+
squad/ci/backend/tuxsuite.py,sha256=XnV5ee9eSSKyxZDO-pXibpP_TU4iCBHA8opaZ_3upXk,17296
|
36
36
|
squad/ci/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
37
|
squad/ci/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
38
|
squad/ci/management/commands/create_tuxsuite_boot_tests.py,sha256=JvjNusebLX71eyz9d-kaeCyekYSpzc1eXoeIqWK9ygo,4045
|
@@ -430,9 +430,9 @@ squad/run/__main__.py,sha256=DOl8JOi4Yg7DdtwnUeGqtYBJ6P2k-D2psAEuYOjWr8w,66
|
|
430
430
|
squad/run/listener.py,sha256=jBeOQhPGb4EdIREB1QsCzYuumsfJ-TqJPd3nR-0m59g,200
|
431
431
|
squad/run/scheduler.py,sha256=CDJG3q5C0GuQuxwlMOfWTSSJpDdwbR6rzpbJfuA0xuw,277
|
432
432
|
squad/run/worker.py,sha256=jtML0h5qKDuSbpJ6_rpWP4MT_rsGA7a24AhwGxBquzk,594
|
433
|
-
squad-1.
|
434
|
-
squad-1.
|
435
|
-
squad-1.
|
436
|
-
squad-1.
|
437
|
-
squad-1.
|
438
|
-
squad-1.
|
433
|
+
squad-1.80.dist-info/COPYING,sha256=jOtLnuWt7d5Hsx6XXB2QxzrSe2sWWh3NgMfFRetluQM,35147
|
434
|
+
squad-1.80.dist-info/METADATA,sha256=Byv2yIE4P5KvgVB4JIQD9zHtLXmhV-Ynl2X4snlq0Ms,1245
|
435
|
+
squad-1.80.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
436
|
+
squad-1.80.dist-info/entry_points.txt,sha256=apCDQydHZtvqV334ql6NhTJUAJeZRdtAm0TVcbbAi5Q,194
|
437
|
+
squad-1.80.dist-info/top_level.txt,sha256=_x9uqE1XppiiytmVTl_qNgpnXus6Gsef69HqfliE7WI,6
|
438
|
+
squad-1.80.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|