Qinusty pushed to branch Qinusty/retries-should-fail at BuildStream / buildstream
Commits:
-
7e31aa8d
by Josh Smith at 2018-08-30T16:07:27Z
-
2fd4a366
by Josh Smith at 2018-08-31T08:14:25Z
-
f73e01f0
by Josh Smith at 2018-08-31T08:14:36Z
-
cfd5aa7c
by Josh Smith at 2018-08-31T08:15:01Z
5 changed files:
- buildstream/_message.py
- buildstream/_scheduler/jobs/job.py
- tests/sources/deb.py
- tests/sources/tar.py
- tests/sources/zip.py
Changes:
... | ... | @@ -76,5 +76,8 @@ class Message(): |
76 | 76 |
self.task_id = task_id # The plugin object ID of the task
|
77 | 77 |
self.scheduler = scheduler # Whether this is a scheduler level message
|
78 | 78 |
self.creation_time = datetime.datetime.now()
|
79 |
- if message_type in (MessageType.SUCCESS, MessageType.FAIL):
|
|
79 |
+ if message_type in (MessageType.SUCCESS, MessageType.FAIL, MessageType.SKIPPED):
|
|
80 | 80 |
assert elapsed is not None
|
81 |
+ # logfile should always be associated with these messages
|
|
82 |
+ if message_type in (MessageType.START, MessageType.SUCCESS, MessageType.FAIL, MessageType.SKIPPED):
|
|
83 |
+ assert self.logfile, "START, SUCCESS, FAIL messages require logfile to be provided."
|
... | ... | @@ -430,7 +430,8 @@ class Job(): |
430 | 430 |
self.message(MessageType.BUG, self.action_name,
|
431 | 431 |
elapsed=elapsed, detail=detail,
|
432 | 432 |
logfile=filename)
|
433 |
- self._child_shutdown(RC_FAIL)
|
|
433 |
+ # Unhandled exceptions should permenantly fail
|
|
434 |
+ self._child_shutdown(RC_PERM_FAIL)
|
|
434 | 435 |
|
435 | 436 |
else:
|
436 | 437 |
# No exception occurred in the action
|
... | ... | @@ -509,11 +510,6 @@ class Job(): |
509 | 510 |
message.action_name = self.action_name
|
510 | 511 |
message.task_id = self._task_id
|
511 | 512 |
|
512 |
- if (message.message_type == MessageType.FAIL and
|
|
513 |
- self._tries <= self._max_retries and self._retry_flag):
|
|
514 |
- # Job will be retried, display failures as warnings in the frontend
|
|
515 |
- message.message_type = MessageType.WARN
|
|
516 |
- |
|
517 | 513 |
# Send to frontend if appropriate
|
518 | 514 |
if context.silent_messages() and (message.message_type not in unconditional_messages):
|
519 | 515 |
return
|
... | ... | @@ -56,7 +56,7 @@ def test_fetch_bad_url(cli, tmpdir, datafiles): |
56 | 56 |
result = cli.run(project=project, args=[
|
57 | 57 |
'fetch', 'target.bst'
|
58 | 58 |
])
|
59 |
- assert "Try #" in result.stderr
|
|
59 |
+ assert "FAILURE Try #" in result.stderr
|
|
60 | 60 |
result.assert_main_error(ErrorDomain.STREAM, None)
|
61 | 61 |
result.assert_task_error(ErrorDomain.SOURCE, None)
|
62 | 62 |
|
... | ... | @@ -67,7 +67,7 @@ def test_fetch_bad_url(cli, tmpdir, datafiles): |
67 | 67 |
result = cli.run(project=project, args=[
|
68 | 68 |
'fetch', 'target.bst'
|
69 | 69 |
])
|
70 |
- assert "Try #" in result.stderr
|
|
70 |
+ assert "FAILURE Try #" in result.stderr
|
|
71 | 71 |
result.assert_main_error(ErrorDomain.STREAM, None)
|
72 | 72 |
result.assert_task_error(ErrorDomain.SOURCE, None)
|
73 | 73 |
|
... | ... | @@ -53,7 +53,7 @@ def test_fetch_bad_url(cli, tmpdir, datafiles): |
53 | 53 |
result = cli.run(project=project, args=[
|
54 | 54 |
'fetch', 'target.bst'
|
55 | 55 |
])
|
56 |
- assert "Try #" in result.stderr
|
|
56 |
+ assert "FAILURE Try #" in result.stderr
|
|
57 | 57 |
result.assert_main_error(ErrorDomain.STREAM, None)
|
58 | 58 |
result.assert_task_error(ErrorDomain.SOURCE, None)
|
59 | 59 |
|