313
313
jenkins_mock.get_console_text.return_value = "log text"
314
314
return filename, headers, s3_mock, jenkins_mock
316
def test_make_headers_svg(self):
317
headers = S3Uploader.make_headers('/file/path.svg')
318
expected = {'Content-Type': 'image/svg+xml'}
319
self.assertEqual(headers, expected)
321
def test_make_headers_txt_gz(self):
322
headers = S3Uploader.make_headers('/file/path.txt.gz')
323
expected = {'Content-Type': 'text/plain',
324
'Content-Encoding': 'gzip'}
325
self.assertEqual(headers, expected)
327
def test_make_headers_log_gz(self):
328
headers = S3Uploader.make_headers('path.log.gz')
329
expected = {'Content-Type': 'text/plain', 'Content-Encoding': 'gzip'}
330
self.assertEqual(headers, expected)
332
def test_make_headers_json(self):
333
headers = S3Uploader.make_headers('path.json')
334
expected = {'Content-Type': 'application/json'}
335
self.assertEqual(headers, expected)
337
def test_make_headers_yaml(self):
338
headers = S3Uploader.make_headers('path.yaml')
339
expected = {'Content-Type': 'text/x-yaml'}
340
self.assertEqual(headers, expected)
342
def test_make_headers_unknown(self):
343
headers = S3Uploader.make_headers('path.ab123')
344
expected = {'Content-Type': 'application/octet-stream'}
345
self.assertEqual(headers, expected)
347
316
def test_upload_artifacts(self):
348
317
filename, headers, s3_mock, jenkins_mock = (
349
318
self._make_upload_artifacts(BUILD_NUM))
366
335
self.assertEqual(s3_mock.store.mock_calls, calls)
367
336
jenkins_mock.artifacts.assert_called_once_with()
369
def test_upload_artifacts_content_type(self):
371
def artifacts_fake():
372
for filename, i in zip(['foo.log.gz', 'foo.svg'], xrange(1, 3)):
373
yield filename, "artifact data {}".format(i)
375
_, _, s3_mock, jenkins_mock = self._make_upload_artifacts(BUILD_NUM)
376
jenkins_mock.artifacts.return_value = artifacts_fake()
377
h = S3Uploader(s3_mock, jenkins_mock)
379
calls = [call('1277-log-foo.log.gz', 'artifact data 1',
380
headers={'Content-Type': 'text/plain',
381
'Content-Encoding': 'gzip'}),
382
call('1277-log-foo.svg', 'artifact data 2',
383
headers={'Content-Type': 'image/svg+xml'})]
384
self.assertEqual(s3_mock.store.mock_calls, calls)
385
jenkins_mock.artifacts.assert_called_once_with()
387
def test_upload_artifacts_file_ext(self):
389
def artifacts_fake():
390
for filename, i in zip(['foo.log', 'bar.svg', 'result.json'],
392
yield filename, "artifact data {}".format(i)
393
_, _, s3_mock, jenkins_mock = self._make_upload_artifacts(BUILD_NUM)
394
jenkins_mock.artifacts.return_value = artifacts_fake()
395
h = S3Uploader(s3_mock, jenkins_mock,
396
artifact_file_ext=['.json', '.svg'])
399
call('1277-log-bar.svg', 'artifact data 2',
400
headers={'Content-Type': 'image/svg+xml'}),
401
call('1277-log-result.json', 'artifact data 3',
402
headers={'Content-Type': 'application/json'})]
403
self.assertEqual(s3_mock.store.mock_calls, calls)
404
jenkins_mock.artifacts.assert_called_once_with()
406
338
def _make_upload_artifacts(self, file_prefix):
407
339
filename = '{}-log-filename'.format(file_prefix)
408
340
headers = {"Content-Type": "application/octet-stream"}
509
441
self._make_upload(file_prefix=BUILD_NUM))
510
442
h = S3Uploader(s3_mock, jenkins_mock)
511
443
filename = h._create_filename("myfile")
512
self.assertEqual(filename, "{}-log-myfile".format(BUILD_NUM))
514
def test_create_file_console_text(self):
515
filename, s3_mock, jenkins_mock = (
516
self._make_upload(file_prefix=BUILD_NUM))
517
h = S3Uploader(s3_mock, jenkins_mock)
518
filename = h._create_filename("consoleText")
520
filename, "{}-console-consoleText.txt".format(BUILD_NUM))
522
def test_create_file_result_results(self):
523
filename, s3_mock, jenkins_mock = (
524
self._make_upload(file_prefix=BUILD_NUM))
525
h = S3Uploader(s3_mock, jenkins_mock)
526
filename = h._create_filename("result-results.json")
528
filename, "{}-result-results.json".format(BUILD_NUM))
530
def test_create_file_no_prefixes(self):
531
filename, s3_mock, jenkins_mock = (
532
self._make_upload(file_prefix=BUILD_NUM))
533
h = S3Uploader(s3_mock, jenkins_mock, no_prefixes=True)
534
filename = h._create_filename("myfile")
535
self.assertEqual(filename, "myfile")
444
self.assertEqual(filename, "{}-myfile".format(BUILD_NUM))
537
446
def test_create_file_unique_id(self):
538
447
filename, s3_mock, jenkins_mock = (
539
448
self._make_upload(file_prefix=BUILD_NUM))
540
449
h = S3Uploader(s3_mock, jenkins_mock, unique_id='9999')
541
450
filename = h._create_filename("myfile")
542
self.assertEqual(filename, "9999-log-myfile")
451
self.assertEqual(filename, "9999-myfile")
545
454
class OtherTests(TestCase):
592
501
def test_get_args_default(self):
593
502
args = get_args([JOB_NAME, str(BUILD_NUM), BUCKET, DIRECTORY])
594
503
self.assertEqual(args, Namespace(
595
all=False, artifact_file_ext=None, build_number=1277,
596
jenkins_job=JOB_NAME, latest=False, password=None,
597
s3_bucket=BUCKET, s3_directory=DIRECTORY, unique_id=None,
598
user=None, no_prefixes=False))
600
def test_get_args_artifact_file_ext(self):
601
args = get_args([JOB_NAME, str(BUILD_NUM), BUCKET, DIRECTORY,
602
'--artifact-file-ext', '.svg', '.json',
603
'--unique-id', '1234'])
604
self.assertEqual(args.artifact_file_ext, ['.svg', '.json'])
605
self.assertEqual(args.unique_id, '1234')
504
all=False, build_number=1277, jenkins_job=JOB_NAME, latest=False,
505
password=None, s3_bucket=BUCKET, s3_directory=DIRECTORY,
506
unique_id=None, user=None))
607
508
def test_get_s3_access(self):