|
1 | 1 | import pytest |
2 | 2 |
|
3 | | -from gardenlinux.constants import ( |
4 | | - GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME, |
5 | | - S3_DOWNLOADS_DIR, |
6 | | -) |
| 3 | +from gardenlinux.constants import RETRYING_MAX_ATTEMPTS, S3_DOWNLOADS_DIR |
7 | 4 | from gardenlinux.features import CName |
8 | 5 | from gardenlinux.github.release_notes.helpers import download_metadata_file |
9 | 6 | from gardenlinux.s3 import S3Artifacts |
|
13 | 10 | TEST_GARDENLINUX_COMMIT, |
14 | 11 | TEST_GARDENLINUX_COMMIT_SHORT, |
15 | 12 | TEST_GARDENLINUX_RELEASE, |
| 13 | + TEST_GARDENLINUX_RELEASE_BUCKET_NAME, |
16 | 14 | ) |
17 | 15 |
|
18 | 16 |
|
19 | 17 | def test_download_metadata_file(downloads_dir, release_s3_bucket): |
20 | 18 | release_s3_bucket.upload_file(RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", |
21 | | - f"meta/singles/aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
| 19 | + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
| 20 | + |
| 21 | + s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) |
| 22 | + s3_artifacts._bucket = release_s3_bucket |
22 | 23 |
|
23 | | - s3_artifacts = S3Artifacts(GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME) |
24 | | - cname = CName("aws-gardener_prod", "amd64", "{0}-{1}".format(TEST_GARDENLINUX_RELEASE, TEST_GARDENLINUX_COMMIT_SHORT)) |
| 24 | + cname = CName("test-aws-gardener_prod", "amd64", "{0}-{1}".format(TEST_GARDENLINUX_RELEASE, TEST_GARDENLINUX_COMMIT_SHORT)) |
25 | 25 | download_metadata_file(s3_artifacts, |
26 | 26 | cname.cname, |
27 | 27 | TEST_GARDENLINUX_RELEASE, |
28 | 28 | TEST_GARDENLINUX_COMMIT_SHORT, |
29 | 29 | S3_DOWNLOADS_DIR) |
30 | | - assert (S3_DOWNLOADS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
| 30 | + assert (S3_DOWNLOADS_DIR / "test-aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
31 | 31 |
|
32 | 32 |
|
33 | 33 | def test_download_metadata_file_no_such_release(downloads_dir, release_s3_bucket): |
34 | 34 | release_s3_bucket.upload_file(RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", |
35 | | - f"meta/singles/aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
36 | | - s3_artifacts = S3Artifacts(GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME) |
| 35 | + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
| 36 | + s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) |
| 37 | + s3_artifacts._bucket = release_s3_bucket |
| 38 | + |
37 | 39 | release = "0000.0" |
38 | 40 | commit = TEST_GARDENLINUX_COMMIT_SHORT |
39 | 41 | cname = CName("aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) |
| 42 | + |
40 | 43 | with pytest.raises(IndexError): |
41 | 44 | download_metadata_file(s3_artifacts, |
42 | 45 | cname.cname, |
43 | 46 | release, |
44 | 47 | commit, |
45 | 48 | S3_DOWNLOADS_DIR) |
46 | | - assert not (S3_DOWNLOADS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
| 49 | + assert not (S3_DOWNLOADS_DIR / "test-aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
47 | 50 |
|
48 | 51 |
|
49 | 52 | def test_download_metadata_file_no_such_commit(downloads_dir, release_s3_bucket): |
50 | 53 | release_s3_bucket.upload_file(RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", |
51 | | - f"meta/singles/aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
| 54 | + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
| 55 | + |
| 56 | + s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) |
| 57 | + s3_artifacts._bucket = release_s3_bucket |
52 | 58 |
|
53 | | - s3_artifacts = S3Artifacts(GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME) |
54 | 59 | release = TEST_GARDENLINUX_RELEASE |
55 | 60 | commit = "deadbeef" |
56 | | - cname = CName("aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) |
| 61 | + cname = CName("test-aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) |
| 62 | + |
57 | 63 | with pytest.raises(IndexError): |
58 | 64 | download_metadata_file(s3_artifacts, |
59 | 65 | cname.cname, |
60 | 66 | release, |
61 | 67 | commit, |
62 | 68 | S3_DOWNLOADS_DIR) |
63 | | - assert not (S3_DOWNLOADS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
| 69 | + assert not (S3_DOWNLOADS_DIR / "test-aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
64 | 70 |
|
65 | 71 |
|
66 | 72 | def test_download_metadata_file_no_such_release_and_commit(downloads_dir, release_s3_bucket): |
67 | 73 | release_s3_bucket.upload_file(RELEASE_NOTES_S3_ARTIFACTS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml", |
68 | | - f"meta/singles/aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
| 74 | + f"meta/singles/test-aws-gardener_prod-amd64-{TEST_GARDENLINUX_RELEASE}-{TEST_GARDENLINUX_COMMIT}") |
| 75 | + |
| 76 | + s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) |
| 77 | + s3_artifacts._bucket = release_s3_bucket |
69 | 78 |
|
70 | | - s3_artifacts = S3Artifacts(GARDENLINUX_GITHUB_RELEASE_BUCKET_NAME) |
71 | 79 | release = "0000.0" |
72 | 80 | commit = "deadbeef" |
73 | | - cname = CName("aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) |
| 81 | + cname = CName("test-aws-gardener_prod", "amd64", "{0}-{1}".format(release, commit)) |
| 82 | + |
74 | 83 | with pytest.raises(IndexError): |
75 | 84 | download_metadata_file(s3_artifacts, |
76 | 85 | cname.cname, |
77 | 86 | release, |
78 | 87 | commit, |
79 | 88 | S3_DOWNLOADS_DIR) |
80 | | - assert not (S3_DOWNLOADS_DIR / "aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
| 89 | + assert not (S3_DOWNLOADS_DIR / "test-aws-gardener_prod-amd64.s3_metadata.yaml").exists() |
| 90 | + |
| 91 | + |
| 92 | +def test_download_metadata_uses_retrying_strategy(downloads_dir, blackhole_s3_bucket): |
| 93 | + s3_artifacts = S3Artifacts(TEST_GARDENLINUX_RELEASE_BUCKET_NAME) |
| 94 | + s3_artifacts._bucket._bucket = blackhole_s3_bucket |
| 95 | + |
| 96 | + cname = CName("test-aws-gardener_prod", "amd64", "{0}-{1}".format("foo", "bar")) |
| 97 | + |
| 98 | + with pytest.raises(IOError) as exn: |
| 99 | + download_metadata_file(s3_artifacts, |
| 100 | + cname.cname, |
| 101 | + "foo", |
| 102 | + "bar", |
| 103 | + S3_DOWNLOADS_DIR) |
| 104 | + assert str(exn.value) == f"Download attempt # {RETRYING_MAX_ATTEMPTS} failed" |
0 commit comments