From fde0d8d7e5591d91366314187463fefac3fee290 Mon Sep 17 00:00:00 2001 From: JordanBrockopp Date: Tue, 4 Oct 2022 13:38:20 -0500 Subject: [PATCH 1/2] test(executor): add kubernetes runtime for CreateStep tests --- executor/linux/step_test.go | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/executor/linux/step_test.go b/executor/linux/step_test.go index 60ad4b6b..2c415352 100644 --- a/executor/linux/step_test.go +++ b/executor/linux/step_test.go @@ -19,6 +19,7 @@ import ( "github.com/go-vela/worker/internal/message" "github.com/go-vela/worker/runtime" "github.com/go-vela/worker/runtime/docker" + "github.com/go-vela/worker/runtime/kubernetes" ) func TestLinux_CreateStep(t *testing.T) { @@ -41,6 +42,11 @@ func TestLinux_CreateStep(t *testing.T) { t.Errorf("unable to create docker runtime engine: %v", err) } + _kubernetes, err := kubernetes.NewMock(testPod(false)) + if err != nil { + t.Errorf("unable to create kubernetes runtime engine: %v", err) + } + // setup tests tests := []struct { name string @@ -62,6 +68,20 @@ func TestLinux_CreateStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-init step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-init", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "#init", + Name: "init", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-basic step container", failure: false, @@ -76,6 +96,20 @@ func TestLinux_CreateStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-basic step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-echo", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "alpine:latest", + Name: "echo", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-step container with image not found", failure: true, @@ -90,12 +124,32 @@ func TestLinux_CreateStep(t *testing.T) { Pull: "not_present", }, }, + //{ + // name: "kubernetes-step container with image not found", + // failure: true, // FIXME: make Kubernetes mock simulate failure similar to Docker mock + // runtime: _kubernetes, + // container: &pipeline.Container{ + // ID: "step-github-octocat-1-echo", + // Directory: "/vela/src/github.com/github/octocat", + // Environment: map[string]string{"FOO": "bar"}, + // Image: "alpine:notfound", + // Name: "echo", + // Number: 1, + // Pull: "not_present", + // }, + //}, { name: "docker-empty step container", failure: true, runtime: _docker, container: new(pipeline.Container), }, + { + name: "kubernetes-empty step container", + failure: true, + runtime: _kubernetes, + container: new(pipeline.Container), + }, } // run tests From b9cb3fbf2ce286f86d0095b8e092a5a8a96c9c16 Mon Sep 17 00:00:00 2001 From: Jacob Floyd Date: Tue, 4 Oct 2022 15:51:15 -0500 Subject: [PATCH 2/2] test(executor): Add k8s runtime in step tests --- executor/linux/step_test.go | 213 ++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/executor/linux/step_test.go b/executor/linux/step_test.go index 2c415352..447cbf29 100644 --- a/executor/linux/step_test.go +++ b/executor/linux/step_test.go @@ -204,6 +204,11 @@ func TestLinux_PlanStep(t *testing.T) { t.Errorf("unable to create docker runtime engine: %v", err) } + _kubernetes, err := kubernetes.NewMock(testPod(false)) + if err != nil { + t.Errorf("unable to create kubernetes runtime engine: %v", err) + } + // setup tests tests := []struct { name string @@ -225,6 +230,20 @@ func TestLinux_PlanStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-basic step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-echo", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "alpine:latest", + Name: "echo", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-step container with nil environment", failure: true, @@ -239,12 +258,32 @@ func TestLinux_PlanStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-step container with nil environment", + failure: true, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-echo", + Directory: "/vela/src/github.com/github/octocat", + Environment: nil, + Image: "alpine:latest", + Name: "echo", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-empty step container", failure: true, runtime: _docker, container: new(pipeline.Container), }, + { + name: "kubernetes-empty step container", + failure: true, + runtime: _kubernetes, + container: new(pipeline.Container), + }, } // run tests @@ -299,6 +338,13 @@ func TestLinux_ExecStep(t *testing.T) { t.Errorf("unable to create docker runtime engine: %v", err) } + _kubernetes, err := kubernetes.NewMock(testPod(false)) + if err != nil { + t.Errorf("unable to create kubernetes runtime engine: %v", err) + } + + _kubernetes.PodTracker.Start(context.Background()) + streamRequests, done := message.MockStreamRequestsWithCancel(context.Background()) defer done() @@ -323,6 +369,20 @@ func TestLinux_ExecStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-init step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-init", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "#init", + Name: "init", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-basic step container", failure: false, @@ -337,6 +397,20 @@ func TestLinux_ExecStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-basic step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-echo", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "alpine:latest", + Name: "echo", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-detached step container", failure: false, @@ -352,6 +426,21 @@ func TestLinux_ExecStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-detached step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-echo", + Detach: true, + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "alpine:latest", + Name: "echo", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-step container with image not found", failure: true, @@ -366,12 +455,32 @@ func TestLinux_ExecStep(t *testing.T) { Pull: "not_present", }, }, + //{ + // name: "kubernetes-step container with image not found", + // failure: true, // FIXME: make Kubernetes mock simulate failure similar to Docker mock + // runtime: _kubernetes, + // container: &pipeline.Container{ + // ID: "step-github-octocat-1-echo", + // Directory: "/vela/src/github.com/github/octocat", + // Environment: map[string]string{"FOO": "bar"}, + // Image: "alpine:notfound", + // Name: "echo", + // Number: 1, + // Pull: "not_present", + // }, + //}, { name: "docker-empty step container", failure: true, runtime: _docker, container: new(pipeline.Container), }, + { + name: "kubernetes-empty step container", + failure: true, + runtime: _kubernetes, + container: new(pipeline.Container), + }, } // run tests @@ -436,6 +545,11 @@ func TestLinux_StreamStep(t *testing.T) { t.Errorf("unable to create docker runtime engine: %v", err) } + _kubernetes, err := kubernetes.NewMock(testPod(false)) + if err != nil { + t.Errorf("unable to create kubernetes runtime engine: %v", err) + } + // setup tests tests := []struct { name string @@ -459,6 +573,21 @@ func TestLinux_StreamStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-init step container", + failure: false, + runtime: _kubernetes, + logs: _logs, + container: &pipeline.Container{ + ID: "step-github-octocat-1-init", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "#init", + Name: "init", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-basic step container", failure: false, @@ -474,6 +603,21 @@ func TestLinux_StreamStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-basic step container", + failure: false, + runtime: _kubernetes, + logs: _logs, + container: &pipeline.Container{ + ID: "step-github-octocat-1-echo", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "alpine:latest", + Name: "echo", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-step container with name not found", failure: true, @@ -489,6 +633,21 @@ func TestLinux_StreamStep(t *testing.T) { Pull: "not_present", }, }, + //{ + // name: "kubernetes-step container with name not found", + // failure: true, // FIXME: make Kubernetes mock simulate failure similar to Docker mock + // runtime: _kubernetes, + // logs: _logs, + // container: &pipeline.Container{ + // ID: "step-github-octocat-1-notfound", + // Directory: "/vela/src/github.com/github/octocat", + // Environment: map[string]string{"FOO": "bar"}, + // Image: "alpine:latest", + // Name: "notfound", + // Number: 1, + // Pull: "not_present", + // }, + //}, { name: "docker-empty step container", failure: true, @@ -496,6 +655,13 @@ func TestLinux_StreamStep(t *testing.T) { logs: _logs, container: new(pipeline.Container), }, + { + name: "kubernetes-empty step container", + failure: true, + runtime: _kubernetes, + logs: _logs, + container: new(pipeline.Container), + }, } // run tests @@ -556,6 +722,11 @@ func TestLinux_DestroyStep(t *testing.T) { t.Errorf("unable to create docker runtime engine: %v", err) } + _kubernetes, err := kubernetes.NewMock(testPod(false)) + if err != nil { + t.Errorf("unable to create kubernetes runtime engine: %v", err) + } + // setup tests tests := []struct { name string @@ -577,6 +748,20 @@ func TestLinux_DestroyStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-init step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-init", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "#init", + Name: "init", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-basic step container", failure: false, @@ -591,6 +776,20 @@ func TestLinux_DestroyStep(t *testing.T) { Pull: "not_present", }, }, + { + name: "kubernetes-basic step container", + failure: false, + runtime: _kubernetes, + container: &pipeline.Container{ + ID: "step-github-octocat-1-echo", + Directory: "/vela/src/github.com/github/octocat", + Environment: map[string]string{"FOO": "bar"}, + Image: "alpine:latest", + Name: "echo", + Number: 1, + Pull: "not_present", + }, + }, { name: "docker-step container with ignoring name not found", failure: true, @@ -605,6 +804,20 @@ func TestLinux_DestroyStep(t *testing.T) { Pull: "not_present", }, }, + //{ + // name: "kubernetes-step container with ignoring name not found", + // failure: true, // FIXME: make Kubernetes mock simulate failure similar to Docker mock + // runtime: _kubernetes, + // container: &pipeline.Container{ + // ID: "step-github-octocat-1-ignorenotfound", + // Directory: "/vela/src/github.com/github/octocat", + // Environment: map[string]string{"FOO": "bar"}, + // Image: "alpine:latest", + // Name: "ignorenotfound", + // Number: 1, + // Pull: "not_present", + // }, + //}, } // run tests