1
1
/*
2
- Copyright 2018 The Kubernetes Authors.
2
+ Copyright 2019 The Kubernetes Authors.
3
3
4
4
Licensed under the Apache License, Version 2.0 (the "License");
5
5
you may not use this file except in compliance with the License.
@@ -18,7 +18,6 @@ package e2e
18
18
19
19
import (
20
20
"fmt"
21
- "os"
22
21
"os/exec"
23
22
"path/filepath"
24
23
"strings"
@@ -30,77 +29,57 @@ import (
30
29
31
30
var _ = Describe ("kubebuilder" , func () {
32
31
Context ("with v1 scaffolding" , func () {
33
- imageName := "controller:v0.0.1"
34
- var testSuffix string
35
- var c * config
36
- var kbTest * kubebuilderTest
37
-
32
+ var kbc * KBTestContext
38
33
BeforeEach (func () {
39
34
var err error
40
- testSuffix , err = randomSuffix ()
41
- Expect (err ).NotTo (HaveOccurred ())
42
- c , err = configWithSuffix (testSuffix )
35
+ kbc , err = TestContext ("GO111MODULE=off" )
43
36
Expect (err ).NotTo (HaveOccurred ())
44
- kbTest = & kubebuilderTest {
45
- Dir : c .workDir ,
46
- Env : []string {"GO111MODULE=off" },
47
- }
48
- prepare (c .workDir )
37
+ Expect (kbc .Prepare ()).To (Succeed ())
49
38
})
50
39
51
40
AfterEach (func () {
52
41
By ("clean up created API objects during test process" )
53
- resources , err := kbTest .RunKustomizeCommand ("build" , filepath .Join ("config" , "default" ))
54
- if err != nil {
55
- fmt .Fprintf (GinkgoWriter , "error when running kustomize build during cleaning up: %v\n " , err )
56
- }
57
- if _ , err = kbTest .RunKubectlCommandWithInput (resources , "delete" , "--recursive" , "-f" , "-" ); err != nil {
58
- fmt .Fprintf (GinkgoWriter , "error when running kubectl delete during cleaning up: %v\n " , err )
59
- }
60
- if _ , err = kbTest .RunKubectlCommand (
42
+ kbc .CleanupManifests (filepath .Join ("config" , "default" ))
43
+ if _ , err := kbc .Kubectl .Command (
61
44
"delete" , "--recursive" ,
62
45
"-f" , filepath .Join ("config" , "crds" ),
63
46
); err != nil {
64
47
fmt .Fprintf (GinkgoWriter , "error when running kubectl delete during cleaning up crd: %v\n " , err )
65
48
}
66
49
67
- By ("remove container image created during test" )
68
- kbTest .CleanupImage (c .controllerImageName )
69
-
70
- By ("remove test work dir" )
71
- os .RemoveAll (c .workDir )
50
+ By ("remove container image and work dir" )
51
+ kbc .Destroy ()
72
52
})
73
53
74
54
It ("should generate a runnable project" , func () {
75
55
// prepare v1 vendor
76
56
By ("untar the vendor tarball" )
77
57
cmd := exec .Command ("tar" , "-zxf" , "../../../testdata/vendor.v1.tgz" )
78
- cmd .Dir = c .workDir
79
- err := cmd .Run ()
58
+ _ , err := kbc .Run (cmd )
80
59
Expect (err ).Should (Succeed ())
81
60
82
61
var controllerPodName string
83
62
84
63
By ("init v1 project" )
85
- err = kbTest .Init (
64
+ err = kbc .Init (
86
65
"--project-version" , "1" ,
87
- "--domain" , c . domain ,
66
+ "--domain" , kbc . Domain ,
88
67
"--dep=false" )
89
68
Expect (err ).Should (Succeed ())
90
69
91
70
By ("creating api definition" )
92
- err = kbTest .CreateAPI (
93
- "--group" , c . group ,
94
- "--version" , c . version ,
95
- "--kind" , c . kind ,
71
+ err = kbc .CreateAPI (
72
+ "--group" , kbc . Group ,
73
+ "--version" , kbc . Version ,
74
+ "--kind" , kbc . Kind ,
96
75
"--namespaced" ,
97
76
"--resource" ,
98
77
"--controller" ,
99
78
"--make=false" )
100
79
Expect (err ).Should (Succeed ())
101
80
102
81
By ("creating core-type resource controller" )
103
- err = kbTest .CreateAPI (
82
+ err = kbc .CreateAPI (
104
83
"--group" , "apps" ,
105
84
"--version" , "v1" ,
106
85
"--kind" , "Deployment" ,
@@ -111,27 +90,27 @@ var _ = Describe("kubebuilder", func() {
111
90
Expect (err ).Should (Succeed ())
112
91
113
92
By ("building image" )
114
- err = kbTest .Make ("docker-build" , "IMG=" + imageName )
93
+ err = kbc .Make ("docker-build" , "IMG=" + kbc . ImageName )
115
94
Expect (err ).Should (Succeed ())
116
95
117
96
By ("loading docker image into kind cluster" )
118
- err = kbTest .LoadImageToKindCluster (imageName )
97
+ err = kbc .LoadImageToKindCluster ()
119
98
Expect (err ).Should (Succeed ())
120
99
121
100
// NOTE: If you want to run the test against a GKE cluster, you will need to grant yourself permission.
122
101
// Otherwise, you may see "... is forbidden: attempt to grant extra privileges"
123
102
// $ kubectl create clusterrolebinding myname-cluster-admin-binding --clusterrole=cluster-admin --user=myname@mycompany.com
124
103
// https://cloud.google.com/kubernetes-engine/docs/how-to/role-based-access-control
125
104
By ("deploying controller manager" )
126
- err = kbTest .Make ("deploy" )
105
+ err = kbc .Make ("deploy" )
127
106
Expect (err ).Should (Succeed ())
128
107
129
108
By ("validate the controller-manager pod running as expected" )
130
109
verifyControllerUp := func () error {
131
110
// Get pod name
132
- podOutput , err := kbTest . RunKubectlGetPodsInNamespace (
133
- testSuffix ,
134
- "-l" , "control-plane=controller-manager" ,
111
+ podOutput , err := kbc . Kubectl . Get (
112
+ true ,
113
+ "pods" , " -l" , "control-plane=controller-manager" ,
135
114
"-o" , "go-template={{ range .items }}{{ if not .metadata.deletionTimestamp }}{{ .metadata.name }}{{ \" \\ n\" }}{{ end }}{{ end }}" ,
136
115
)
137
116
Expect (err ).NotTo (HaveOccurred ())
@@ -143,9 +122,9 @@ var _ = Describe("kubebuilder", func() {
143
122
Expect (controllerPodName ).Should (ContainSubstring ("controller-manager" ))
144
123
145
124
// Validate pod status
146
- status , err := kbTest . RunKubectlGetPodsInNamespace (
147
- testSuffix ,
148
- controllerPodName , "-o" , "jsonpath={.status.phase}" ,
125
+ status , err := kbc . Kubectl . Get (
126
+ true ,
127
+ "pods" , controllerPodName , "-o" , "jsonpath={.status.phase}" ,
149
128
)
150
129
Expect (err ).NotTo (HaveOccurred ())
151
130
if status != "Running" {
@@ -157,18 +136,14 @@ var _ = Describe("kubebuilder", func() {
157
136
Eventually (verifyControllerUp , 2 * time .Minute , time .Second ).Should (Succeed ())
158
137
159
138
By ("creating an instance of CR" )
160
- inputFile := filepath .Join ("config" , "samples" , fmt .Sprintf ("%s_%s_%s.yaml" , c . group , c . version , strings .ToLower (c . kind )))
161
- _ , err = kbTest . RunKubectlCommand ( "apply" , "-f" , inputFile )
139
+ inputFile := filepath .Join ("config" , "samples" , fmt .Sprintf ("%s_%s_%s.yaml" , kbc . Group , kbc . Version , strings .ToLower (kbc . Kind )))
140
+ _ , err = kbc . Kubectl . Apply ( false , "-f" , inputFile )
162
141
Expect (err ).NotTo (HaveOccurred ())
163
142
164
143
By ("validate the created resource object gets reconciled in controller" )
165
144
controllerContainerLogs := func () string {
166
145
// Check container log to validate that the created resource object gets reconciled in controller
167
- logOutput , err := kbTest .RunKubectlCommand (
168
- "logs" , controllerPodName ,
169
- "-c" , "manager" ,
170
- "-n" , fmt .Sprintf ("e2e-%s-system" , testSuffix ),
171
- )
146
+ logOutput , err := kbc .Kubectl .Logs (controllerPodName , "-c" , "manager" )
172
147
Expect (err ).NotTo (HaveOccurred ())
173
148
174
149
return logOutput
0 commit comments