Skip to content

Commit eb0591e

Browse files
author
Julian Vanden Broeck
committed
Share kubernetes client between e2e tests & setup()
1 parent d67c9e1 commit eb0591e

File tree

1 file changed

+22
-29
lines changed

1 file changed

+22
-29
lines changed

test/e2e/e2e_test.go

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,37 @@ import (
2727
"sigs.k8s.io/controller-runtime/pkg/log/zap"
2828
)
2929

30+
var cl *kubernetes.K8sClient
31+
3032
// Deploy CNGP operator, certmanager, minio and our plugins
3133
func setup() error {
32-
k8sClient, err := kubernetes.Client()
34+
var err error
35+
cl, err = kubernetes.Client()
3336
if err != nil {
3437
panic("can't init kubernetes client")
3538
}
3639
s := kubernetes.InstallSpec{ManifestUrl: "https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.25/releases/cnpg-1.25.1.yaml"}
37-
if err := cnpg.Install(*k8sClient, s); err != nil {
40+
if err := cnpg.Install(*cl, s); err != nil {
3841
panic("can't install CNPG")
3942
}
4043
s = kubernetes.InstallSpec{ManifestUrl: "https://github.com/cert-manager/cert-manager/releases/download/v1.16.2/cert-manager.yaml"}
41-
if err := certmanager.Install(*k8sClient, s); err != nil {
44+
if err := certmanager.Install(*cl, s); err != nil {
4245
panic("can't install certmanager")
4346
}
44-
if err = minio.Install(*k8sClient); err != nil {
47+
if err = minio.Install(*cl); err != nil {
4548
panic("can't install minio")
4649
}
4750
// install our pgbackrest plugin from kubernetes directory at the root
4851
// of the repository
4952
path, err := os.Getwd()
5053
s = kubernetes.InstallSpec{ManifestUrl: path + "/../../kubernetes"}
51-
if err := pgbackrest.Install(*k8sClient, s); err != nil {
54+
if err := pgbackrest.Install(*cl, s); err != nil {
5255
panic("can't deploy plugin")
5356
}
5457
return nil
5558
}
5659

57-
func createSecret(ctx context.Context, k8sClient *kubernetes.K8sClient, namespace string) (*v1.Secret, error) {
60+
func createSecret(ctx context.Context, cl *kubernetes.K8sClient, namespace string) (*v1.Secret, error) {
5861
// TODO: move that ?
5962
secret := &v1.Secret{
6063
TypeMeta: metav1.TypeMeta{
@@ -71,7 +74,7 @@ func createSecret(ctx context.Context, k8sClient *kubernetes.K8sClient, namespac
7174
"key-secret": minio.SECRET_KEY,
7275
},
7376
}
74-
return secret, k8sClient.Create(ctx, secret)
77+
return secret, cl.Create(ctx, secret)
7578
}
7679

7780
func teardown() {
@@ -87,15 +90,9 @@ func TestMain(m *testing.M) {
8790

8891
func TestInstall(t *testing.T) {
8992
logcr.SetLogger(zap.New(zap.WriteTo(os.Stdout), zap.UseDevMode(true)))
90-
// basic verification to ensure our plugin is present
91-
k8sClient, err := kubernetes.Client()
92-
if k8sClient == nil || err != nil {
93-
t.Errorf("error kubernetes client not initialized")
94-
}
95-
// basic check for deployment
9693
fqdn := types.NamespacedName{Name: "pgbackrest-controller", Namespace: "cnpg-system"}
9794
obj := &appsv1.Deployment{}
98-
k8sClient.Get(context.TODO(), fqdn, obj)
95+
cl.Get(context.TODO(), fqdn, obj)
9996
var want int32 = 1
10097
got := obj.Status.ReadyReplicas
10198
if got != want {
@@ -105,7 +102,7 @@ func TestInstall(t *testing.T) {
105102
// verify service creation
106103
fqdn = types.NamespacedName{Name: "pgbackrest", Namespace: "cnpg-system"}
107104
svc := &corev1.Service{}
108-
err = k8sClient.Get(context.TODO(), fqdn, svc)
105+
err := cl.Get(context.TODO(), fqdn, svc)
109106
if err != nil {
110107
t.Errorf("error no service for pgbackrest found %s", err.Error())
111108
}
@@ -116,20 +113,16 @@ func TestInstall(t *testing.T) {
116113
if !reflect.DeepEqual(svc.Labels, want_labels) {
117114
t.Errorf("error labels not valid %v", svc.Labels)
118115
}
119-
k8sClient.Get(context.TODO(), fqdn, obj)
116+
cl.Get(context.TODO(), fqdn, obj)
120117
}
121118

122119
// basic verification to ensure we can use our plugin with a cluster
123120
func TestDeployInstance(t *testing.T) {
124121
logcr.SetLogger(zap.New(zap.WriteTo(os.Stdout), zap.UseDevMode(true)))
125-
k8sClient, err := kubernetes.Client()
126-
if k8sClient == nil || err != nil {
127-
t.Errorf("error kubernetes client not initialized")
128-
}
129122
ns := "default"
130123
ctx := context.TODO()
131124
// first create a secret
132-
secret, err := createSecret(ctx, k8sClient, ns)
125+
secret, err := createSecret(ctx, cl, ns)
133126
if err != nil {
134127
t.Error(err.Error())
135128
}
@@ -138,30 +131,30 @@ func TestDeployInstance(t *testing.T) {
138131
clusterName := "cluster-demo"
139132
p := maps.Clone(cluster.DefaultParamater)
140133
p["s3-repo-path"] = "/" + clusterName
141-
c, err := cluster.Create(k8sClient, ns, clusterName, 1, "100M", p)
134+
c, err := cluster.Create(cl, ns, clusterName, 1, "100M", p)
142135
if err != nil {
143136
t.Error(err.Error())
144137
}
145-
if ready, err := k8sClient.PodsIsReady(ns, clusterName+"-1", 30, 2); err != nil {
138+
if ready, err := cl.PodsIsReady(ns, clusterName+"-1", 30, 2); err != nil {
146139
t.Errorf("error when requesting pod status, %s", err.Error())
147140
} else if !ready {
148141
t.Error("pod not ready")
149142
}
150143

151144
// Verify we can backup our cluster
152145
backupName := types.NamespacedName{Name: "backup-01", Namespace: ns}
153-
backup, err := cluster.Backup(k8sClient, clusterName, backupName)
146+
backup, err := cluster.Backup(cl, clusterName, backupName)
154147
if err != nil {
155148
t.Error(err)
156149
}
157-
ctx, cancel := context.WithTimeout(context.TODO(), time.Minute*2)
150+
ctxTimeout, cancel := context.WithTimeout(context.TODO(), time.Minute*2)
158151
defer cancel()
159-
if err := cluster.BackupCompleted(ctx, k8sClient, backupName, time.Second*2); err != nil {
152+
if err := cluster.BackupCompleted(ctxTimeout, cl, backupName, time.Second*2); err != nil {
160153
t.Error(err)
161154
}
162155

163156
// delete created ressources
164-
k8sClient.Delete(ctx, backup)
165-
k8sClient.Delete(ctx, c)
166-
k8sClient.Delete(ctx, secret)
157+
cl.Delete(ctx, backup)
158+
cl.Delete(ctx, c)
159+
cl.Delete(ctx, secret)
167160
}

0 commit comments

Comments
 (0)