39
41
'path': '%s/%s' % (factory.make_name('dir'), name),
40
42
'script_result_id': random.randint(1, 1000),
41
43
'script_version_id': random.randint(1, 1000),
44
'timeout_seconds': random.randint(1, 500),
210
213
creds=None, url=None, status='WORKING', exit_status=8,
211
error='Finished %s [1/1]: 8' % script['name'],
214
error='Failed to execute %s [1/1]: 8' % script['name'],
212
215
script_result_id=script['script_result_id'],
213
216
script_version_id=script['script_version_id'],
245
248
creds=None, url=None, status='WORKING', exit_status=2,
246
error='Finished %s [1/1]: 2' % script['name'],
249
error='Failed to execute %s [1/1]: 2' % script['name'],
247
250
script_result_id=script['script_result_id'],
248
251
script_version_id=script['script_version_id'],
280
283
creds=None, url=None, status='WORKING', exit_status=2,
281
error='Finished %s [1/1]: 2' % script['name'],
284
error='Failed to execute %s [1/1]: 2' % script['name'],
282
285
script_result_id=script['script_result_id'],
283
286
script_version_id=script['script_version_id'],
291
294
None, None, 'FAILED', '1 scripts failed to run'))
296
def test_run_scripts_signals_timeout(self):
297
scripts_dir = self.useFixture(TempDirectory()).path
298
mock_signal = self.patch(maas_run_remote_scripts, 'signal')
299
self.patch(maas_run_remote_scripts, 'Popen')
300
scripts = self.make_scripts()
301
self.make_script_output(scripts, scripts_dir)
302
mock_cap = self.patch(maas_run_remote_scripts, 'capture_script_output')
303
mock_cap.side_effect = TimeoutExpired(
304
[factory.make_name('arg') for _ in range(3)],
305
scripts[0]['timeout_seconds'])
307
# Don't need to give the url or creds as we're not running the scripts
308
# and sending the result. The scripts_dir and out_dir are the same as
309
# in the test environment there isn't anything in the scripts_dir.
311
1, run_scripts(None, None, scripts_dir, scripts_dir, scripts))
316
creds=None, url=None, status='TIMEDOUT',
317
error='Timeout(%s) expired on %s [1/1]' % (
318
str(timedelta(seconds=scripts[0]['timeout_seconds'])),
320
script_result_id=scripts[0]['script_result_id'],
321
script_version_id=scripts[0]['script_version_id'],
323
scripts[0]['name']: scripts[0]['output'],
324
'%s.out' % scripts[0]['name']: scripts[0]['stdout'],
325
'%s.err' % scripts[0]['name']: scripts[0]['stderr'],
330
None, None, 'FAILED', '1 scripts failed to run'))