@@ -17,13 +17,21 @@ limitations under the License.
17
17
package test
18
18
19
19
import (
20
+ "os"
20
21
"time"
21
22
23
+ "github.com/kubernetes-sigs/kubebuilder/pkg/install"
22
24
extensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
23
25
"k8s.io/client-go/rest"
24
-
25
26
"sigs.k8s.io/testing_frameworks/integration"
26
- "github.com/kubernetes-sigs/kubebuilder/pkg/install"
27
+ )
28
+
29
+ // Default binary path for test framework
30
+ const (
31
+ envKubeAPIServerBin = "TEST_ASSET_KUBE_APISERVER"
32
+ envEtcdBin = "TEST_ASSET_ETCD"
33
+ defaultKubeAPIServerBin = "/usr/local/kubebuilder/bin/kube-apiserver"
34
+ defaultEtcdBin = "/usr/local/kubebuilder/bin/etcd"
27
35
)
28
36
29
37
// TestEnvironment creates a Kubernetes test environment that will start / stop the Kubernetes control plane and
@@ -41,14 +49,21 @@ func (te *TestEnvironment) Stop() {
41
49
42
50
// Start starts a local Kubernetes server and updates te.ApiserverPort with the port it is listening on
43
51
func (te * TestEnvironment ) Start () (* rest.Config , error ) {
52
+ te .ControlPlane = integration.ControlPlane {}
53
+ if os .Getenv (envKubeAPIServerBin ) == "" {
54
+ te .ControlPlane .APIServer = & integration.APIServer {Path : defaultKubeAPIServerBin }
55
+ }
56
+ if os .Getenv (envEtcdBin ) == "" {
57
+ te .ControlPlane .Etcd = & integration.Etcd {Path : defaultEtcdBin }
58
+ }
59
+
44
60
// Start the control plane - retry if it fails
45
61
var err error
46
62
for i := 0 ; i < 5 ; i ++ {
47
63
err = te .ControlPlane .Start ()
48
64
if err == nil {
49
65
break
50
66
}
51
- te .ControlPlane = integration.ControlPlane {}
52
67
}
53
68
// Give up trying to start the control plane
54
69
if err != nil {
0 commit comments