Skip to content

Commit

Permalink
⚠️ Move envtest setup under internal/envtest
Browse files Browse the repository at this point in the history
This change refactors all envtest suites to use the internal/envtest
package instead of test/helpers. These helpers aren't useful to folks
outside of Cluster API because of the nature how we setup the CRDs.

Signed-off-by: Vince Prignano <vincepri@vmware.com>
  • Loading branch information
vincepri committed May 28, 2021
1 parent 58cdbed commit 9746243
Show file tree
Hide file tree
Showing 43 changed files with 773 additions and 756 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,32 +23,32 @@ import (

utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/cluster-api/test/helpers"
"sigs.k8s.io/cluster-api/internal/envtest"
ctrl "sigs.k8s.io/controller-runtime"
// +kubebuilder:scaffold:imports
)

var (
testEnv *helpers.TestEnvironment
ctx = ctrl.SetupSignalHandler()
env *envtest.Environment
ctx = ctrl.SetupSignalHandler()
)

func TestMain(m *testing.M) {
// Bootstrapping test environment
utilruntime.Must(AddToScheme(scheme.Scheme))
testEnv = helpers.NewTestEnvironment()
env = envtest.New()
go func() {
if err := testEnv.StartManager(ctx); err != nil {
if err := env.StartManager(ctx); err != nil {
panic(fmt.Sprintf("Failed to start the envtest manager: %v", err))
}
}()
<-testEnv.Manager.Elected()
testEnv.WaitForWebhooks()
<-env.Manager.Elected()
env.WaitForWebhooks()

// Run tests
code := m.Run()
// Tearing down the test environment
if err := testEnv.Stop(); err != nil {
if err := env.Stop(); err != nil {
panic(fmt.Sprintf("Failed to stop the envtest: %v", err))
}

Expand Down
18 changes: 9 additions & 9 deletions api/v1alpha3/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import (

func TestClusterConversion(t *testing.T) {
g := NewWithT(t)
ns, err := testEnv.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
ns, err := env.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
g.Expect(err).ToNot(HaveOccurred())
clusterName := fmt.Sprintf("test-cluster-%s", util.RandomString(5))
cluster := &Cluster{
Expand All @@ -42,15 +42,15 @@ func TestClusterConversion(t *testing.T) {
},
}

g.Expect(testEnv.Create(ctx, cluster)).To(Succeed())
g.Expect(env.Create(ctx, cluster)).To(Succeed())
defer func(do ...client.Object) {
g.Expect(testEnv.Cleanup(ctx, do...)).To(Succeed())
g.Expect(env.Cleanup(ctx, do...)).To(Succeed())
}(ns, cluster)
}

func TestMachineSetConversion(t *testing.T) {
g := NewWithT(t)
ns, err := testEnv.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
ns, err := env.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
g.Expect(err).ToNot(HaveOccurred())

clusterName := fmt.Sprintf("test-cluster-%s", util.RandomString(5))
Expand All @@ -69,15 +69,15 @@ func TestMachineSetConversion(t *testing.T) {
},
}

g.Expect(testEnv.Create(ctx, machineSet)).To(Succeed())
g.Expect(env.Create(ctx, machineSet)).To(Succeed())
defer func(do ...client.Object) {
g.Expect(testEnv.Cleanup(ctx, do...)).To(Succeed())
g.Expect(env.Cleanup(ctx, do...)).To(Succeed())
}(ns, machineSet)
}

func TestMachineDeploymentConversion(t *testing.T) {
g := NewWithT(t)
ns, err := testEnv.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
ns, err := env.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
g.Expect(err).ToNot(HaveOccurred())

clusterName := fmt.Sprintf("test-cluster-%s", util.RandomString(5))
Expand All @@ -94,9 +94,9 @@ func TestMachineDeploymentConversion(t *testing.T) {
},
}

g.Expect(testEnv.Create(ctx, machineDeployment)).To(Succeed())
g.Expect(env.Create(ctx, machineDeployment)).To(Succeed())
defer func(do ...client.Object) {
g.Expect(testEnv.Cleanup(ctx, do...)).To(Succeed())
g.Expect(env.Cleanup(ctx, do...)).To(Succeed())
}(ns, machineDeployment)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,32 +23,32 @@ import (

utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/kubernetes/scheme"
"sigs.k8s.io/cluster-api/test/helpers"
"sigs.k8s.io/cluster-api/internal/envtest"
ctrl "sigs.k8s.io/controller-runtime"
// +kubebuilder:scaffold:imports
)

var (
testEnv *helpers.TestEnvironment
ctx = ctrl.SetupSignalHandler()
env *envtest.Environment
ctx = ctrl.SetupSignalHandler()
)

func TestMain(m *testing.M) {
// Bootstrapping test environment
utilruntime.Must(AddToScheme(scheme.Scheme))
testEnv = helpers.NewTestEnvironment()
env = envtest.New()
go func() {
if err := testEnv.StartManager(ctx); err != nil {
if err := env.StartManager(ctx); err != nil {
panic(fmt.Sprintf("Failed to start the envtest manager: %v", err))
}
}()
<-testEnv.Manager.Elected()
testEnv.WaitForWebhooks()
<-env.Manager.Elected()
env.WaitForWebhooks()

// Run tests
code := m.Run()
// Tearing down the test environment
if err := testEnv.Stop(); err != nil {
if err := env.Stop(); err != nil {
panic(fmt.Sprintf("Failed to stop the envtest: %v", err))
}

Expand Down
12 changes: 6 additions & 6 deletions bootstrap/kubeadm/api/v1alpha3/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ import (

func TestKubeadmConfigConversion(t *testing.T) {
g := NewWithT(t)
ns, err := testEnv.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
ns, err := env.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
g.Expect(err).ToNot(HaveOccurred())
kubeadmConfigName := fmt.Sprintf("test-kubeadmconfig-%s", util.RandomString(5))
kubeadmConfig := &KubeadmConfig{
Expand All @@ -43,15 +43,15 @@ func TestKubeadmConfigConversion(t *testing.T) {
Spec: fakeKubeadmConfigSpec,
}

g.Expect(testEnv.Create(ctx, kubeadmConfig)).To(Succeed())
g.Expect(env.Create(ctx, kubeadmConfig)).To(Succeed())
defer func(do ...client.Object) {
g.Expect(testEnv.Cleanup(ctx, do...)).To(Succeed())
g.Expect(env.Cleanup(ctx, do...)).To(Succeed())
}(ns, kubeadmConfig)
}

func TestKubeadmConfigTemplateConversion(t *testing.T) {
g := NewWithT(t)
ns, err := testEnv.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
ns, err := env.CreateNamespace(ctx, fmt.Sprintf("conversion-webhook-%s", util.RandomString(5)))
g.Expect(err).ToNot(HaveOccurred())
kubeadmConfigTemplateName := fmt.Sprintf("test-kubeadmconfigtemplate-%s", util.RandomString(5))
kubeadmConfigTemplate := &KubeadmConfigTemplate{
Expand All @@ -66,9 +66,9 @@ func TestKubeadmConfigTemplateConversion(t *testing.T) {
},
}

g.Expect(testEnv.Create(ctx, kubeadmConfigTemplate)).To(Succeed())
g.Expect(env.Create(ctx, kubeadmConfigTemplate)).To(Succeed())
defer func(do ...client.Object) {
g.Expect(testEnv.Cleanup(ctx, do...)).To(Succeed())
g.Expect(env.Cleanup(ctx, do...)).To(Succeed())
}(ns, kubeadmConfigTemplate)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ func TestKubeadmConfigReconciler(t *testing.T) {
g := NewWithT(t)

cluster := newCluster("cluster1")
g.Expect(testEnv.Create(ctx, cluster)).To(Succeed())
g.Expect(env.Create(ctx, cluster)).To(Succeed())

machine := newMachine(cluster, "my-machine")
g.Expect(testEnv.Create(ctx, machine)).To(Succeed())
g.Expect(env.Create(ctx, machine)).To(Succeed())

config := newKubeadmConfig(machine, "my-machine-config")
g.Expect(testEnv.Create(ctx, config)).To(Succeed())
g.Expect(env.Create(ctx, config)).To(Succeed())

reconciler := KubeadmConfigReconciler{
Client: testEnv,
Client: env,
}
t.Log("Calling reconcile should requeue")
result, err := reconciler.Reconcile(ctx, ctrl.Request{
Expand Down
16 changes: 8 additions & 8 deletions bootstrap/kubeadm/controllers/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,33 +21,33 @@ import (
"os"
"testing"

"sigs.k8s.io/cluster-api/test/helpers"
"sigs.k8s.io/cluster-api/internal/envtest"
ctrl "sigs.k8s.io/controller-runtime"
// +kubebuilder:scaffold:imports
)

var (
testEnv *helpers.TestEnvironment
ctx = ctrl.SetupSignalHandler()
env *envtest.Environment
ctx = ctrl.SetupSignalHandler()
)

func TestMain(m *testing.M) {
fmt.Println("Creating new test environment")
testEnv = helpers.NewTestEnvironment()
env = envtest.New()

go func() {
fmt.Println("Starting the manager")
if err := testEnv.StartManager(ctx); err != nil {
if err := env.StartManager(ctx); err != nil {
panic(fmt.Sprintf("Failed to start the envtest manager: %v", err))
}
}()
<-testEnv.Manager.Elected()
testEnv.WaitForWebhooks()
<-env.Manager.Elected()
env.WaitForWebhooks()

code := m.Run()

fmt.Println("Tearing down test suite")
if err := testEnv.Stop(); err != nil {
if err := env.Stop(); err != nil {
panic(fmt.Sprintf("Failed to stop envtest: %v", err))
}

Expand Down
16 changes: 8 additions & 8 deletions bootstrap/util/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,31 +21,31 @@ import (
"os"
"testing"

"sigs.k8s.io/cluster-api/test/helpers"
"sigs.k8s.io/cluster-api/internal/envtest"
ctrl "sigs.k8s.io/controller-runtime"
// +kubebuilder:scaffold:imports
)

var (
testEnv *helpers.TestEnvironment
ctx = ctrl.SetupSignalHandler()
env *envtest.Environment
ctx = ctrl.SetupSignalHandler()
)

func TestMain(m *testing.M) {
// Bootstrapping test environment
testEnv = helpers.NewTestEnvironment()
env = envtest.New()
go func() {
if err := testEnv.StartManager(ctx); err != nil {
if err := env.StartManager(ctx); err != nil {
panic(fmt.Sprintf("Failed to start the envtest manager: %v", err))
}
}()
<-testEnv.Manager.Elected()
testEnv.WaitForWebhooks()
<-env.Manager.Elected()
env.WaitForWebhooks()

// Run tests
code := m.Run()
// Tearing down the test environment
if err := testEnv.Stop(); err != nil {
if err := env.Stop(); err != nil {
panic(fmt.Sprintf("Failed to stop the envtest: %v", err))
}

Expand Down

0 comments on commit 9746243

Please sign in to comment.