Merge pull request #15834 from hakman/containerd-sha256sum

Find containerd package hash from release sha256sum
This commit is contained in:
Kubernetes Prow Robot 2023-08-27 20:17:22 -07:00 committed by GitHub
commit 6bb27479b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 448 deletions

View File

@ -334,7 +334,7 @@ func (a *AssetBuilder) findHash(file *FileAsset) (*hashing.Hash, error) {
Steps: backoffSteps,
}
for _, ext := range []string{".sha256", ".sha1"} {
for _, ext := range []string{".sha256", ".sha256sum"} {
for _, mirror := range mirrors.FindURLMirrors(u.String()) {
hashURL := mirror + ext
klog.V(3).Infof("Trying to read hash fie: %q", hashURL)

View File

@ -35,10 +35,6 @@ const (
containerdReleaseUrlArm64 = "https://github.com/containerd/containerd/releases/download/v%s/containerd-%s-linux-arm64.tar.gz"
// containerd packages URLs for v1.4.x+
containerdBundleUrlAmd64 = "https://github.com/containerd/containerd/releases/download/v%s/cri-containerd-cni-%s-linux-amd64.tar.gz"
// containerd legacy packages URLs for v1.2.x and v1.3.x
containerdLegacyUrlAmd64 = "https://storage.googleapis.com/cri-containerd-release/cri-containerd-%s.linux-amd64.tar.gz"
// containerd version that is available for both AMD64 and ARM64, used in case the selected version is not available for ARM64
containerdFallbackVersion = "1.4.13"
)
func findContainerdAsset(c *kops.Cluster, assetBuilder *assets.AssetBuilder, arch architectures.Architecture) (*url.URL, *hashing.Hash, error) {
@ -64,47 +60,21 @@ func findContainerdAsset(c *kops.Cluster, assetBuilder *assets.AssetBuilder, arc
if version == "" {
return nil, nil, fmt.Errorf("unable to find containerd version")
}
assetUrl, assetHash, err := findContainerdVersionUrlHash(arch, version)
return findContainerdVersionUrlHash(assetBuilder, arch, version)
}
func findContainerdVersionUrlHash(assetBuilder *assets.AssetBuilder, arch architectures.Architecture, version string) (u *url.URL, h *hashing.Hash, e error) {
assetUrl, err := findContainerdVersionUrl(arch, version)
if err != nil {
return nil, nil, err
}
fileUrl, err := url.Parse(assetUrl)
if err != nil {
return nil, nil, err
}
return findAssetsUrlHash(assetBuilder, assetUrl, assetHash)
}
func findContainerdVersionUrlHash(arch architectures.Architecture, version string) (u string, h string, e error) {
var containerdAssetUrl, containerdAssetHash string
if findAllContainerdHashesAmd64()[version] != "" {
var err error
containerdAssetUrl, err = findContainerdVersionUrl(arch, version)
if err != nil {
return "", "", err
}
containerdAssetHash, err = findContainerdVersionHash(arch, version)
if err != nil {
return "", "", err
}
} else {
// Fall back to Docker packages
dv := findAllContainerdDockerMappings()[version]
if dv != "" {
var err error
containerdAssetUrl, err = findDockerVersionUrl(arch, dv)
if err != nil {
return "", "", err
}
containerdAssetHash, err = findDockerVersionHash(arch, dv)
if err != nil {
return "", "", err
}
println(dv)
} else {
return "", "", fmt.Errorf("unknown url and hash for containerd version: %s - %s", arch, version)
}
}
return containerdAssetUrl, containerdAssetHash, nil
return assetBuilder.RemapFileAndSHA(fileUrl)
}
func findContainerdVersionUrl(arch architectures.Architecture, version string) (string, error) {
@ -112,7 +82,7 @@ func findContainerdVersionUrl(arch architectures.Architecture, version string) (
if err != nil {
return "", fmt.Errorf("unable to parse version string: %q", version)
}
if sv.LT(semver.MustParse("1.3.4")) {
if sv.LT(semver.MustParse("1.4.0")) {
return "", fmt.Errorf("unsupported legacy containerd version: %q", version)
}
@ -121,20 +91,12 @@ func findContainerdVersionUrl(arch architectures.Architecture, version string) (
case architectures.ArchitectureAmd64:
if sv.GTE(semver.MustParse("1.6.0")) {
u = fmt.Sprintf(containerdReleaseUrlAmd64, version, version)
} else if sv.GTE(semver.MustParse("1.3.8")) {
u = fmt.Sprintf(containerdBundleUrlAmd64, version, version)
} else {
u = fmt.Sprintf(containerdLegacyUrlAmd64, version)
u = fmt.Sprintf(containerdBundleUrlAmd64, version, version)
}
case architectures.ArchitectureArm64:
if sv.GTE(semver.MustParse("1.6.0")) {
u = fmt.Sprintf(containerdReleaseUrlArm64, version, version)
} else if findAllContainerdHashesAmd64()[version] != "" {
if findAllContainerdDockerMappings()[version] != "" {
u = fmt.Sprintf(dockerVersionUrlArm64, findAllContainerdDockerMappings()[version])
} else {
u = fmt.Sprintf(dockerVersionUrlArm64, findAllContainerdDockerMappings()[containerdFallbackVersion])
}
}
default:
return "", fmt.Errorf("unknown arch: %q", arch)
@ -146,149 +108,3 @@ func findContainerdVersionUrl(arch architectures.Architecture, version string) (
return u, nil
}
func findContainerdVersionHash(arch architectures.Architecture, version string) (string, error) {
sv, err := semver.ParseTolerant(version)
if err != nil {
return "", fmt.Errorf("unable to parse version string: %q", version)
}
if sv.LT(semver.MustParse("1.3.4")) {
return "", fmt.Errorf("unsupported legacy containerd version: %q", version)
}
var h string
switch arch {
case architectures.ArchitectureAmd64:
h = findAllContainerdHashesAmd64()[version]
case architectures.ArchitectureArm64:
if sv.GTE(semver.MustParse("1.6.0")) {
h = findAllContainerdHashesArm64()[version]
} else if findAllContainerdHashesAmd64()[version] != "" {
if findAllContainerdDockerMappings()[version] != "" {
h = findAllDockerHashesArm64()[findAllContainerdDockerMappings()[version]]
} else {
h = findAllDockerHashesArm64()[findAllContainerdDockerMappings()[containerdFallbackVersion]]
}
}
default:
return "", fmt.Errorf("unknown arch: %q", arch)
}
if h == "" {
return "", fmt.Errorf("unknown hash for containerd version: %s - %s", arch, version)
}
return h, nil
}
func findAllContainerdHashesAmd64() map[string]string {
hashes := map[string]string{
"1.3.4": "4616971c3ad21c24f2f2320fa1c085577a91032a068dd56a41c7c4b71a458087",
"1.3.9": "96663699e0f888fbf232ae6629a367aa7421f6b95044e7ee5d4d4e02841fac75",
"1.3.10": "69e23e49cdf1232d475a77bf7ecd7145ff4a80295154e190125c4d8a20e241da",
"1.4.0": "b379f29417efd583f77e095173d4d0bd6bb001f0081b2a63d152ee7aef653ce1",
"1.4.1": "757efb93a4f3161efc447a943317503d8a7ded5cb4cc0cba3f3318d7ce1542ed",
"1.4.2": "9d0fd5f4d2bc58b345728432b7daac75fc99c1da91afa4f41e6103f618e74012",
"1.4.3": "2697a342e3477c211ab48313e259fd7e32ad1f5ded19320e6a559f50a82bff3d",
"1.4.4": "96641849cb78a0a119223a427dfdc1ade88412ef791a14193212c8c8e29d447b",
"1.4.5": "f8155278fd256526ca9804219e1ee46f5db11c6ddf455086b04c0887c868822a",
"1.4.6": "6ae4763598c9583f8b50605f19d6c7e9ef93c216706465e73dfc84ee6b63a238",
"1.4.7": "daa14638344fe0772f645e190e4d8eb9549b52743364cb8000521490f9e410b8",
"1.4.8": "96e815c9ab664a02dd5be35e31d15890ea6bef04dfaa39f99f14676c3d6561e8",
"1.4.9": "9911479f86012d6eab7e0f532da8f807a8b0f555ee09ef89367d8c31243073bb",
"1.4.10": "5b256b372a02fd37c84939c87a6a81cae06058a7881a60d682525c11f6dea7d1",
"1.4.11": "a4a4af4776316833cad5996c66d59f8b4a2af4da716b7902b7a2d5f5ac362dcc",
"1.4.12": "f6120552408175ca332fd3b5d31c5edd115d8426d6731664e4ea3951c5eee3b4",
"1.4.13": "29ef1e8635795c2a49a20a56e778f45ff163c5400a5428ca33999ed53d44e3d8",
"1.5.0": "aee7b553ab88842fdafe43955757abe746b8e9995b2be55c603f0a236186ff9b",
"1.5.1": "2fd97916b24396c13849cfcd89805170e1ef0265a2f7fce8e74ae044a6a6a169",
"1.5.2": "e7adbb6c6f6e67639460579a8aa991e9ce4de2062ed36d3261e6e4865574d947",
"1.5.3": "32a9bf1b7ab2adbd9d2a16b17bf1aa6e61592938655adfb5114c40d527aa9be7",
"1.5.4": "591e4e087ea2f5007e6c64deb382df58d419b7b6922eab45a1923d843d57615f",
"1.5.5": "45f02cfc65db47cf088c95555906e1dcba7baf5a3fbad3d947dd6b9af476a144",
"1.5.6": "afc51718ebe46cb9b985edac816e63fe86c07e37d28cdd21b2c0302dec6fa7ae",
"1.5.7": "7fce75bab43a39d6f9efb3c370de2da49723f0e1dbaa9732d68fa7f620d720c8",
"1.5.8": "5dbb7f43c0ac1fda79999ff63e648926e3464d7d1034402ee2117e6a93868431",
"1.5.9": "f64c8e3b736b370c963b08c33ac70f030fc311bc48fcfd00461465af2fff3488",
"1.5.10": "370113fcf75e3b6ddcb4d5fdd7eea90a348c46747abd2a703a405c47f61c64d5",
"1.5.11": "f9b078e297558b38a6d72e7d5e9ac5b712ffa537bc68b956fef3d15f93f7c18e",
"1.5.12": "2d7595d821b1d5f186c5bf8eea8428935c31a0e89a0eb49e1fef10897a4beefa",
"1.5.13": "8b3903c7cf231f05b4c0843ca0fc3aeb7cfe1bb1da3fc66a36ce1039227ee36a",
"1.5.14": "c3fd909a4104474e8c44338b4418a0b3b63642365f626d8e0e21e01086b8f886",
"1.6.0": "f77725e4f757523bf1472ec3b9e02b09303a5d99529173be0f11a6d39f5676e9",
"1.6.1": "c1df0a12af2be019ca2d6c157f94e8ce7430484ab29948c9805882df40ec458b",
"1.6.2": "3d94f887de5f284b0d6ee61fa17ba413a7d60b4bb27d756a402b713a53685c6a",
"1.6.3": "306b3c77f0b5e28ed10d527edf3d73f56bf0a1fb296075af4483d8516b6975ed",
"1.6.4": "f23c8ac914d748f85df94d3e82d11ca89ca9fe19a220ce61b99a05b070044de0",
"1.6.5": "cf02a2da998bfcf61727c65ede6f53e89052a68190563a1799a7298b0cea86b4",
"1.6.6": "0212869675742081d70600a1afc6cea4388435cc52bf5dc21f4efdcb9a92d2ef",
"1.6.7": "52e817b712d521b193773529ff33626f47507973040c02474a2db95a37da1c37",
"1.6.8": "3a1322c18ee5ff4b9bd5af6b7b30c923a3eab8af1df05554f530ef8e2b24ac5e",
"1.6.9": "9ee2644bfb95b23123f96b564df2035ec94a46f64060ae12322e09a8ec3c2b53",
"1.6.10": "dd1f4730daf728822aea3ba35a440e14b1dfa8f1db97288a59a8666676a13637",
"1.6.11": "21870d7022c52f5f74336d440deffb208ba747b332a88e6369e2aecb69382e48",
"1.6.12": "a56c39795fd0d0ee356b4099a4dfa34689779f61afc858ef84c765c63e983a7d",
"1.6.13": "97f00411587512e62ec762828e581047b23199f8744754706d09976ec24a2736",
"1.6.14": "7da626d46c4edcae1eefe6d48dc6521db3e594a402715afcddc6ac9e67e1bfcd",
"1.6.15": "191bb4f6e4afc237efc5c85b5866b6fdfed731bde12cceaa6017a9c7f8aeda02",
"1.6.16": "2415b431a900275c14942f87f751e1e13d513c1c2f062322b5ca5a9a2190f22a",
"1.6.17": "5f0584d000769d0cf08fc0e25135614ef5bf52971a6069175c78437699f3b8d4",
"1.6.18": "c4e516376a2392520a87abea94baf2045cc3a67e9e0c90c75fb6ed038170561e",
"1.6.19": "3262454d9b3581f4d4da0948f77dde1be51cfc42347a1548bc9ab6870b055815",
"1.6.20": "bb9a9ccd6517e2a54da748a9f60dc9aa9d79d19d4724663f2386812f083968e2",
"1.6.21": "04dcc1b99368492caee758583e531392683268197e58156888a3cea2941117b6",
"1.7.0": "b068b05d58025dc9f2fc336674cac0e377a478930f29b48e068f97c783a423f0",
"1.7.1": "9504771bcb816d3b27fab37a6cf76928ee5e95a31eb41510a7d10ae726e01e85",
"1.7.2": "2755c70152ab40856510b4549c2dd530e15f5355eb7bf82868e813c9380e22a7",
}
return hashes
}
func findAllContainerdHashesArm64() map[string]string {
hashes := map[string]string{
"1.6.0": "6eff3e16d44c89e1e8480a9ca078f79bab82af602818455cc162be344f64686a",
"1.6.1": "fbeec71f2d37e0e4ceaaac2bdf081295add940a7a5c7a6bcc125e5bbae067791",
"1.6.2": "a4b24b3c38a67852daa80f03ec2bc94e31a0f4393477cd7dc1c1a7c2d3eb2a95",
"1.6.3": "354e30d52ff94bd6cd7ceb8259bdf28419296b46cf5585e9492a87fdefcfe8b2",
"1.6.4": "0205bd1907154388dc85b1afeeb550cbb44c470ef4a290cb1daf91501c85cae6",
"1.6.5": "2833e2f0e8f3cb5044566d64121fdd92bbdfe523e9fe912259e936af280da62a",
"1.6.6": "807bf333df331d713708ead66919189d7b142a0cc21ec32debbc988f9069d5eb",
"1.6.7": "4167bf688a0ed08b76b3ac264b90aad7d9dd1424ad9c3911e9416b45e37b0be5",
"1.6.8": "b114e36ecce78cef9d611416c01b784a420928c82766d6df7dc02b10d9da94cd",
"1.6.9": "140197aee930a8bd8a69ff8e0161e56305751be66e899dccd833c27d139f4f47",
"1.6.10": "6d655e80a843f480e1c1cead18479185251581ff2d4a2e2e5eb88ad5b5e3d937",
"1.6.11": "1b34d8ff067da482af021dac325dc4e993d7356c0bd9dc8e5a3bb8271c1532de",
"1.6.12": "0a0133336596b2d1dcafe3587eb91ab302afc28f273614e0e02300694b5457a0",
"1.6.13": "8c7892ae7c2e96a4a9358b1064fb5519a5c0528b715beee67b72e74d7a644064",
"1.6.14": "3ccb61218e60cbba0e1bbe1e5e2bf809ac1ead8eafbbff36c3195d3edd0e4809",
"1.6.15": "d63e4d27c51e33cd10f8b5621c559f09ece8a65fec66d80551b36cac9e61a07d",
"1.6.16": "c2bf51fde02ec9cf8b9c18721bc4f53bd1f19fb2bb3251f41ece61af7347e082",
"1.6.17": "7e110faa738bff2f5f0ffd54c4ec2c17c05fd2af6de4877c839794ca3dadd61c",
"1.6.18": "56b83a0bc955edc5ebaa3bd0f788e654b63395be00fcb1bd03ff4bdfe4b5e1e7",
"1.6.19": "25a0dd6cce4e1058824d6dc277fc01dc45da92539ccb39bb6c8a481c24d2476e",
"1.6.20": "c3e6a054b18b20fce06c7c3ed53f0989bb4b255c849bede446ebca955f07a9ce",
"1.6.21": "d713d8fbec491705ffe8c33ecc9051a904f6eedc92574928e1d33616f291c583",
"1.7.0": "e7e5be2d9c92e076f1e2e15c9f0a6e0609ddb75f7616999b843cba92d01e4da2",
"1.7.1": "1f828dc063e3c24b0840b284c5635b5a11b1197d564c97f9e873b220bab2b41b",
"1.7.2": "d75a4ca53d9addd0b2c50172d168b12957e18b2d8b802db2658f2767f15889a6",
}
return hashes
}
func findAllContainerdDockerMappings() map[string]string {
versions := map[string]string{
"1.3.7": "19.03.13",
"1.3.9": "19.03.14",
"1.4.3": "20.10.0",
"1.4.4": "20.10.6",
"1.4.6": "20.10.7",
"1.4.9": "20.10.8",
"1.4.11": "20.10.9",
"1.4.12": "20.10.11",
"1.4.13": "20.10.13",
}
return versions
}

View File

@ -18,97 +18,12 @@ package cloudup
import (
"fmt"
"os"
"reflect"
"testing"
"k8s.io/kops/util/pkg/architectures"
)
func TestContainerdVersionUrlHash(t *testing.T) {
tests := []struct {
version string
arch architectures.Architecture
hash string
url string
err error
}{
{
arch: architectures.ArchitectureAmd64,
version: "1.3.4",
url: "https://storage.googleapis.com/cri-containerd-release/cri-containerd-1.3.4.linux-amd64.tar.gz",
hash: "4616971c3ad21c24f2f2320fa1c085577a91032a068dd56a41c7c4b71a458087",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.3.4",
url: "https://download.docker.com/linux/static/stable/aarch64/docker-20.10.13.tgz",
hash: "debed306ed9a4e70dcbcb228a0b3898f9730099e324f34bb0e76abbaddf7a6a7",
err: nil,
},
{
arch: architectures.ArchitectureAmd64,
version: "1.3.10",
url: "https://github.com/containerd/containerd/releases/download/v1.3.10/cri-containerd-cni-1.3.10-linux-amd64.tar.gz",
hash: "69e23e49cdf1232d475a77bf7ecd7145ff4a80295154e190125c4d8a20e241da",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.3.10",
url: "https://download.docker.com/linux/static/stable/aarch64/docker-20.10.13.tgz",
hash: "debed306ed9a4e70dcbcb228a0b3898f9730099e324f34bb0e76abbaddf7a6a7",
err: nil,
},
{
arch: architectures.ArchitectureAmd64,
version: "1.4.1",
url: "https://github.com/containerd/containerd/releases/download/v1.4.1/cri-containerd-cni-1.4.1-linux-amd64.tar.gz",
hash: "757efb93a4f3161efc447a943317503d8a7ded5cb4cc0cba3f3318d7ce1542ed",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.4.1",
url: "https://download.docker.com/linux/static/stable/aarch64/docker-20.10.13.tgz",
hash: "debed306ed9a4e70dcbcb228a0b3898f9730099e324f34bb0e76abbaddf7a6a7",
err: nil,
},
{
arch: architectures.ArchitectureAmd64,
version: "1.4.4",
url: "https://github.com/containerd/containerd/releases/download/v1.4.4/cri-containerd-cni-1.4.4-linux-amd64.tar.gz",
hash: "96641849cb78a0a119223a427dfdc1ade88412ef791a14193212c8c8e29d447b",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.4.4",
url: "https://download.docker.com/linux/static/stable/aarch64/docker-20.10.6.tgz",
hash: "998b3b6669335f1a1d8c475fb7c211ed1e41c2ff37275939e2523666ccb7d910",
err: nil,
},
}
for _, test := range tests {
t.Run(fmt.Sprintf("%s-%s", test.version, test.arch), func(t *testing.T) {
url, hash, err := findContainerdVersionUrlHash(test.arch, test.version)
if !reflect.DeepEqual(err, test.err) {
t.Errorf("actual error %q differs from expected error %q", err, test.err)
return
}
if url != test.url {
t.Errorf("actual url %q differs from expected url %q", url, test.url)
return
}
if hash != test.hash {
t.Errorf("actual hash %q differs from expected hash %q", hash, test.hash)
return
}
})
}
}
func TestContainerdVersionUrl(t *testing.T) {
tests := []struct {
version string
@ -154,51 +69,15 @@ func TestContainerdVersionUrl(t *testing.T) {
},
{
arch: architectures.ArchitectureAmd64,
version: "1.3.5",
url: "https://storage.googleapis.com/cri-containerd-release/cri-containerd-1.3.5.linux-amd64.tar.gz",
version: "1.6.5",
url: "https://github.com/containerd/containerd/releases/download/v1.6.5/containerd-1.6.5-linux-amd64.tar.gz",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.3.5",
version: "1.5.5",
url: "",
err: fmt.Errorf("unknown url for containerd version: arm64 - 1.3.5"),
},
{
arch: architectures.ArchitectureAmd64,
version: "1.3.4",
url: "https://storage.googleapis.com/cri-containerd-release/cri-containerd-1.3.4.linux-amd64.tar.gz",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.3.4",
url: "https://download.docker.com/linux/static/stable/aarch64/docker-20.10.13.tgz",
err: nil,
},
{
arch: architectures.ArchitectureAmd64,
version: "1.4.1",
url: "https://github.com/containerd/containerd/releases/download/v1.4.1/cri-containerd-cni-1.4.1-linux-amd64.tar.gz",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.4.1",
url: "https://download.docker.com/linux/static/stable/aarch64/docker-20.10.13.tgz",
err: nil,
},
{
arch: architectures.ArchitectureAmd64,
version: "1.4.3",
url: "https://github.com/containerd/containerd/releases/download/v1.4.3/cri-containerd-cni-1.4.3-linux-amd64.tar.gz",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.4.3",
url: "https://download.docker.com/linux/static/stable/aarch64/docker-20.10.0.tgz",
err: nil,
err: fmt.Errorf("unknown url for containerd version: arm64 - 1.5.5"),
},
}
for _, test := range tests {
@ -215,128 +94,3 @@ func TestContainerdVersionUrl(t *testing.T) {
})
}
}
func TestContainerdVersionHash(t *testing.T) {
tests := []struct {
version string
arch architectures.Architecture
hash string
err error
}{
{
arch: "",
version: "1.4.1",
hash: "",
err: fmt.Errorf("unknown arch: \"\""),
},
{
arch: "arm",
version: "1.4.1",
hash: "",
err: fmt.Errorf("unknown arch: \"arm\""),
},
{
arch: architectures.ArchitectureAmd64,
version: "",
hash: "",
err: fmt.Errorf("unable to parse version string: \"\""),
},
{
arch: architectures.ArchitectureArm64,
version: "",
hash: "",
err: fmt.Errorf("unable to parse version string: \"\""),
},
{
arch: architectures.ArchitectureAmd64,
version: "1.1.1",
hash: "",
err: fmt.Errorf("unsupported legacy containerd version: \"1.1.1\""),
},
{
arch: architectures.ArchitectureArm64,
version: "1.1.1",
hash: "",
err: fmt.Errorf("unsupported legacy containerd version: \"1.1.1\""),
},
{
arch: architectures.ArchitectureAmd64,
version: "1.3.5",
hash: "",
err: fmt.Errorf("unknown hash for containerd version: amd64 - 1.3.5"),
},
{
arch: architectures.ArchitectureArm64,
version: "1.3.5",
hash: "",
err: fmt.Errorf("unknown hash for containerd version: arm64 - 1.3.5"),
},
{
arch: architectures.ArchitectureAmd64,
version: "1.4.1",
hash: "757efb93a4f3161efc447a943317503d8a7ded5cb4cc0cba3f3318d7ce1542ed",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.4.1",
hash: "debed306ed9a4e70dcbcb228a0b3898f9730099e324f34bb0e76abbaddf7a6a7",
err: nil,
},
{
arch: architectures.ArchitectureAmd64,
version: "1.4.3",
hash: "2697a342e3477c211ab48313e259fd7e32ad1f5ded19320e6a559f50a82bff3d",
err: nil,
},
{
arch: architectures.ArchitectureArm64,
version: "1.4.3",
hash: "6e3f80e8451ecbe7b3559247721c3e226be6b228acaadee7e13683f80c20e81c",
err: nil,
},
}
for _, test := range tests {
t.Run(fmt.Sprintf("%s-%s", test.version, test.arch), func(t *testing.T) {
hash, err := findContainerdVersionHash(test.arch, test.version)
if !reflect.DeepEqual(err, test.err) {
t.Errorf("actual error %q differs from expected error %q", err, test.err)
return
}
if hash != test.hash {
t.Errorf("actual hash %q differs from expected hash %q", hash, test.hash)
return
}
})
}
}
func TestContainerdVersionsHashesAmd64(t *testing.T) {
if os.Getenv("VERIFY_HASHES") == "" {
t.Skip("VERIFY_HASHES not set, won't download & verify containerd hashes")
}
for version, hash := range findAllContainerdHashesAmd64() {
t.Run(version+"-amd64", func(t *testing.T) {
url, _ := findContainerdVersionUrl(architectures.ArchitectureAmd64, version)
if err := verifyPackageHash(url, hash); err != nil {
t.Errorf("error verifying package %q: %v", url, err)
}
})
}
}
func TestContainerdVersionsHashesArm64(t *testing.T) {
if os.Getenv("VERIFY_HASHES") == "" {
t.Skip("VERIFY_HASHES not set, won't download & verify containerd hashes")
}
for version, hash := range findAllContainerdHashesArm64() {
t.Run(version+"-arm64", func(t *testing.T) {
url, _ := findContainerdVersionUrl(architectures.ArchitectureArm64, version)
if err := verifyPackageHash(url, hash); err != nil {
t.Errorf("error verifying package %q: %v", url, err)
}
})
}
}