check shas of new archs
parent
a0d7457e36
commit
be711f1d7f
|
@ -21,7 +21,6 @@ import (
|
|||
"encoding/hex"
|
||||
"fmt"
|
||||
"io"
|
||||
"runtime"
|
||||
"testing"
|
||||
|
||||
retryablehttp "github.com/hashicorp/go-retryablehttp"
|
||||
|
@ -46,45 +45,83 @@ func getSHAFromURL(url string) (string, error) {
|
|||
}
|
||||
|
||||
// TestReleasesJSON checks if all *GA* releases
|
||||
// enlisted in https://storage.googleapis.com/minikube/releases.json
|
||||
// are available to download and have correct hashsum
|
||||
// enlisted in https://storage.googleapis.com/minikube/releases-v2.json
|
||||
// are available to download and have correct hashsum
|
||||
func TestReleasesJSON(t *testing.T) {
|
||||
releases, err := notify.AllVersionsFromURL(notify.GithubMinikubeReleasesURL)
|
||||
if err != nil {
|
||||
t.Fatalf("Error getting releases.json: %v", err)
|
||||
}
|
||||
checkReleases(t, releases)
|
||||
checkReleasesV2(t, releases)
|
||||
}
|
||||
|
||||
// TestBetaReleasesJSON checks if all *BETA* releases
|
||||
// enlisted in https://storage.googleapis.com/minikube/releases-beta.json
|
||||
// are available to download and have correct hashsum
|
||||
// enlisted in https://storage.googleapis.com/minikube/releases-beta-v2.json
|
||||
// are available to download and have correct hashsum
|
||||
func TestBetaReleasesJSON(t *testing.T) {
|
||||
releases, err := notify.AllVersionsFromURL(notify.GithubMinikubeBetaReleasesURL)
|
||||
if err != nil {
|
||||
t.Fatalf("Error getting releases-bets.json: %v", err)
|
||||
}
|
||||
checkReleases(t, releases)
|
||||
checkReleasesV2(t, releases)
|
||||
}
|
||||
|
||||
func checkReleases(t *testing.T, rs notify.Releases) {
|
||||
func checkReleasesV1(t *testing.T, r notify.Release) {
|
||||
checksums := map[string]string{
|
||||
"darwin": r.Checksums.Darwin,
|
||||
"linux": r.Checksums.Linux,
|
||||
"windows": r.Checksums.Windows,
|
||||
}
|
||||
for platform, sha := range checksums {
|
||||
fmt.Printf("Checking SHA for %s.\n", platform)
|
||||
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, platform, "amd64"))
|
||||
if err != nil {
|
||||
t.Errorf("Error calculating SHA for %s-%s. Error: %v", r.Name, platform, err)
|
||||
continue
|
||||
}
|
||||
if actualSha != sha {
|
||||
t.Errorf("ERROR: SHA does not match for version %s, platform %s. Expected %s, got %s.", r.Name, platform, sha, actualSha)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getSHAMap(c notify.Checksums) map[string]map[string]string {
|
||||
return map[string]map[string]string{
|
||||
"darwin": {
|
||||
"amd64": c.AMD64.Darwin,
|
||||
"arm64": c.ARM64.Darwin,
|
||||
},
|
||||
"linux": {
|
||||
"amd64": c.AMD64.Linux,
|
||||
"arm": c.ARM.Linux,
|
||||
"arm64": c.ARM64.Linux,
|
||||
"ppc64le": c.PPC64LE.Linux,
|
||||
"s390x": c.S390X.Linux,
|
||||
},
|
||||
"windows": {
|
||||
"amd64": c.AMD64.Windows,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func checkReleasesV2(t *testing.T, rs notify.Releases) {
|
||||
for _, r := range rs.Releases {
|
||||
fmt.Printf("Checking release: %s\n", r.Name)
|
||||
checksums := map[string]string{
|
||||
"darwin": r.Checksums.Darwin,
|
||||
"linux": r.Checksums.Linux,
|
||||
"windows": r.Checksums.Windows,
|
||||
}
|
||||
for platform, sha := range checksums {
|
||||
fmt.Printf("Checking SHA for %s.\n", platform)
|
||||
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, platform, runtime.GOARCH))
|
||||
if err != nil {
|
||||
t.Errorf("Error calculating SHA for %s-%s. Error: %v", r.Name, platform, err)
|
||||
continue
|
||||
}
|
||||
if actualSha != sha {
|
||||
t.Errorf("ERROR: SHA does not match for version %s, platform %s. Expected %s, got %s.", r.Name, platform, sha, actualSha)
|
||||
continue
|
||||
checkReleasesV1(t, r)
|
||||
release := getSHAMap(r.Checksums)
|
||||
for os, archs := range release {
|
||||
for arch, sha := range archs {
|
||||
fmt.Printf("Checking SHA for %s-%s.\n", os, arch)
|
||||
actualSha, err := getSHAFromURL(util.GetBinaryDownloadURL(r.Name, os, arch))
|
||||
if err != nil {
|
||||
t.Errorf("Error calculating SHA for %s-%s-%s. Error: %v", r.Name, os, arch, err)
|
||||
continue
|
||||
}
|
||||
if actualSha != sha {
|
||||
t.Errorf("ERROR: SHA does not match for version %s, os %s, arch %s. Expected %s, got %s.", r.Name, os, arch, sha, actualSha)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -136,7 +136,7 @@ type operatingSystems struct {
|
|||
Windows string `json:"windows,omitempty"`
|
||||
}
|
||||
|
||||
type checksums struct {
|
||||
type Checksums struct {
|
||||
AMD64 *operatingSystems `json:"amd64,omitempty"`
|
||||
ARM *operatingSystems `json:"arm,omitempty"`
|
||||
ARM64 *operatingSystems `json:"arm64,omitempty"`
|
||||
|
@ -146,7 +146,7 @@ type checksums struct {
|
|||
}
|
||||
|
||||
type Release struct {
|
||||
Checksums checksums `json:"checksums"`
|
||||
Checksums Checksums `json:"checksums"`
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue