Make it easier to E2E test on various K8s versions (#1599)

This commit is contained in:
Yusuke Kuoka 2022-07-06 08:57:21 +09:00 committed by GitHub
parent edbdef8d20
commit b8e4eee904
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 9 deletions

View File

@ -122,11 +122,12 @@ func TestE2E(t *testing.T) {
t.Skip("Skipped as -short is set")
}
k8sMinorVer := os.Getenv("ARC_E2E_KUBE_VERSION")
skipRunnerCleanUp := os.Getenv("ARC_E2E_SKIP_RUNNER_CLEANUP") != ""
retainCluster := os.Getenv("ARC_E2E_RETAIN_CLUSTER") != ""
skipTestIDCleanUp := os.Getenv("ARC_E2E_SKIP_TEST_ID_CLEANUP") != ""
env := initTestEnv(t)
env := initTestEnv(t, k8sMinorVer)
t.Run("build and load images", func(t *testing.T) {
env.buildAndLoadImages(t)
@ -264,10 +265,10 @@ type env struct {
dockerdWithinRunnerContainer bool
}
func initTestEnv(t *testing.T) *env {
func initTestEnv(t *testing.T, k8sMinorVer string) *env {
t.Helper()
testingEnv := testing.Start(t, testing.Preload(images...))
testingEnv := testing.Start(t, k8sMinorVer, testing.Preload(images...))
e := &env{Env: testingEnv}

View File

@ -17,6 +17,12 @@ type T = testing.T
var Short = testing.Short
var images = map[string]string{
"1.22": "kindest/node:v1.22.9@sha256:8135260b959dfe320206eb36b3aeda9cffcb262f4b44cda6b33f7bb73f453105",
"1.23": "kindest/node:v1.23.6@sha256:b1fa224cc6c7ff32455e0b1fd9cbfd3d3bc87ecaa8fcb06961ed1afb3db0f9ae",
"1.24": "kindest/node:v1.24.0@sha256:0866296e693efe1fed79d5e6c7af8df71fc73ae45e3679af05342239cdc5bc8e",
}
func Img(repo, tag string) ContainerImage {
return ContainerImage{
Repo: repo,
@ -34,10 +40,10 @@ type Env struct {
bash *Bash
}
func Start(t *testing.T, opts ...Option) *Env {
func Start(t *testing.T, k8sMinorVer string, opts ...Option) *Env {
t.Helper()
k := StartKind(t, opts...)
k := StartKind(t, k8sMinorVer, opts...)
var env Env
@ -251,7 +257,7 @@ type ContainerImage struct {
Repo, Tag string
}
func StartKind(t *testing.T, opts ...Option) *Kind {
func StartKind(t *testing.T, k8sMinorVer string, opts ...Option) *Kind {
t.Helper()
invalidChars := []string{"/"}
@ -266,7 +272,7 @@ func StartKind(t *testing.T, opts ...Option) *Kind {
k.Dir = t.TempDir()
kk := &k
if err := kk.Start(context.Background()); err != nil {
if err := kk.Start(context.Background(), k8sMinorVer); err != nil {
t.Fatal(err)
}
t.Cleanup(func() {
@ -323,7 +329,7 @@ func (k *Kind) Kubeconfig() string {
return k.kubeconfig
}
func (k *Kind) Start(ctx context.Context) error {
func (k *Kind) Start(ctx context.Context, k8sMinorVer string) error {
getNodes, err := k.CombinedOutput(k.kindGetNodesCmd(ctx, k.Name))
if err != nil {
return err
@ -337,6 +343,8 @@ func (k *Kind) Start(ctx context.Context) error {
return err
}
image := images[k8sMinorVer]
kindConfig := []byte(fmt.Sprintf(`kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: %s
@ -344,8 +352,10 @@ networking:
apiServerAddress: 0.0.0.0
nodes:
- role: control-plane
image: %s
- role: worker
`, k.Name))
image: %s
`, k.Name, image, image))
if err := os.WriteFile(f.Name(), kindConfig, 0644); err != nil {
return err