More BackupConf tests

This commit is contained in:
jandre 2021-03-04 20:43:18 +01:00
parent 8509cf8d2f
commit 1dfd0d472b

View File

@ -4,14 +4,17 @@ import (
"context" "context"
//"k8s.io/apimachinery/pkg/types" //"k8s.io/apimachinery/pkg/types"
//"reflect" //"reflect"
//"fmt"
"time" "time"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
//batchv1 "k8s.io/api/batch/v1" //batchv1 "k8s.io/api/batch/v1"
formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1" formolv1alpha1 "github.com/desmo999r/formol/api/v1alpha1"
appsv1 "k8s.io/api/apps/v1"
batchv1beta1 "k8s.io/api/batch/v1beta1" batchv1beta1 "k8s.io/api/batch/v1beta1"
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
//"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/types"
) )
@ -21,16 +24,45 @@ var _ = Describe("Setup the environment", func() {
BackupConfName = "test-backupconf" BackupConfName = "test-backupconf"
BackupConfNamespace = "test-backupconf-namespace" BackupConfNamespace = "test-backupconf-namespace"
RepoName = "test-repo" RepoName = "test-repo"
DeploymentName = "test-deployment"
timeout = time.Second * 10 timeout = time.Second * 10
interval = time.Millisecond * 250 interval = time.Millisecond * 250
) )
var ( var (
key = types.NamespacedName{
Name: BackupConfName,
Namespace: BackupConfNamespace,
}
ctx = context.Background() ctx = context.Background()
namespace = &corev1.Namespace{ namespace = &corev1.Namespace{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: BackupConfNamespace, Name: BackupConfNamespace,
}, },
} }
deployment = &appsv1.Deployment{
ObjectMeta: metav1.ObjectMeta{
Name: DeploymentName,
Namespace: BackupConfNamespace,
},
Spec: appsv1.DeploymentSpec{
Selector: &metav1.LabelSelector{
MatchLabels: map[string]string{"app": "test-deployment"},
},
Template: corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: map[string]string{"app": "test-deployment"},
},
Spec: corev1.PodSpec{
Containers: []corev1.Container{
corev1.Container{
Name: "test-container",
Image: "test-image",
},
},
},
},
},
}
sa = &corev1.ServiceAccount{ sa = &corev1.ServiceAccount{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "default", Name: "default",
@ -74,7 +106,7 @@ var _ = Describe("Setup the environment", func() {
Targets: []formolv1alpha1.Target{ Targets: []formolv1alpha1.Target{
formolv1alpha1.Target{ formolv1alpha1.Target{
Kind: "Deployment", Kind: "Deployment",
Name: "test-deployment", Name: DeploymentName,
}, },
}, },
}, },
@ -86,18 +118,18 @@ var _ = Describe("Setup the environment", func() {
AfterEach(func() { AfterEach(func() {
}) })
Context("Creating a backupconf", func() { Context("Testing backupconf", func() {
It("Should also create a CronJob", func() { It("Requires initialisation", func() {
Expect(k8sClient.Create(ctx, namespace)).Should(Succeed()) Expect(k8sClient.Create(ctx, namespace)).Should(Succeed())
Expect(k8sClient.Create(ctx, sa)).Should(Succeed()) Expect(k8sClient.Create(ctx, sa)).Should(Succeed())
Expect(k8sClient.Create(ctx, secret)).Should(Succeed()) Expect(k8sClient.Create(ctx, secret)).Should(Succeed())
Expect(k8sClient.Create(ctx, repo)).Should(Succeed()) Expect(k8sClient.Create(ctx, repo)).Should(Succeed())
Expect(k8sClient.Create(ctx, deployment)).Should(Succeed())
})
Context("Creating a backupconf", func() {
It("Requires initialisation", func() {
Expect(k8sClient.Create(ctx, backupConf)).Should(Succeed()) Expect(k8sClient.Create(ctx, backupConf)).Should(Succeed())
realBackupConf := &formolv1alpha1.BackupConfiguration{} realBackupConf := &formolv1alpha1.BackupConfiguration{}
key := types.NamespacedName{
Name: BackupConfName,
Namespace: BackupConfNamespace,
}
Eventually(func() bool { Eventually(func() bool {
err := k8sClient.Get(ctx, key, realBackupConf) err := k8sClient.Get(ctx, key, realBackupConf)
if err != nil { if err != nil {
@ -106,7 +138,8 @@ var _ = Describe("Setup the environment", func() {
return true return true
}, timeout, interval).Should(BeTrue()) }, timeout, interval).Should(BeTrue())
Expect(realBackupConf.Spec.Schedule).Should(Equal("1 * * * *")) Expect(realBackupConf.Spec.Schedule).Should(Equal("1 * * * *"))
//Expect(realBackupConf.Spec.Suspend).Should(BeFalse()) })
It("Should also create a CronJob", func() {
cronJob := &batchv1beta1.CronJob{} cronJob := &batchv1beta1.CronJob{}
Eventually(func() bool { Eventually(func() bool {
err := k8sClient.Get(ctx, types.NamespacedName{ err := k8sClient.Get(ctx, types.NamespacedName{
@ -120,22 +153,27 @@ var _ = Describe("Setup the environment", func() {
}, timeout, interval).Should(BeTrue()) }, timeout, interval).Should(BeTrue())
Expect(cronJob.Spec.Schedule).Should(Equal("1 * * * *")) Expect(cronJob.Spec.Schedule).Should(Equal("1 * * * *"))
}) })
It("Should also create a sidecar container", func() {
realDeployment := &appsv1.Deployment{}
Eventually(func() (int, error) {
err := k8sClient.Get(ctx, types.NamespacedName{
Name: DeploymentName,
Namespace: BackupConfNamespace,
}, realDeployment)
if err != nil {
return 0, err
}
return len(realDeployment.Spec.Template.Spec.Containers), nil
}, timeout, interval).Should(Equal(2))
})
}) })
Context("Updating a backupconf", func() { Context("Updating a backupconf", func() {
It("Should also update the CronJob", func() { It("Should also update the CronJob", func() {
realBackupConf := &formolv1alpha1.BackupConfiguration{} realBackupConf := &formolv1alpha1.BackupConfiguration{}
key := types.NamespacedName{ Expect(k8sClient.Get(ctx, key, realBackupConf)).Should(Succeed())
Name: BackupConfName,
Namespace: BackupConfNamespace,
}
Eventually(func() bool {
err := k8sClient.Get(ctx, key, realBackupConf)
if err != nil {
return false
}
return true
}, timeout, interval).Should(BeTrue())
realBackupConf.Spec.Schedule = "1 0 * * *" realBackupConf.Spec.Schedule = "1 0 * * *"
suspend := true
realBackupConf.Spec.Suspend = &suspend
Expect(k8sClient.Update(ctx, realBackupConf)).Should(Succeed()) Expect(k8sClient.Update(ctx, realBackupConf)).Should(Succeed())
cronJob := &batchv1beta1.CronJob{} cronJob := &batchv1beta1.CronJob{}
Eventually(func() (string, error) { Eventually(func() (string, error) {
@ -148,6 +186,34 @@ var _ = Describe("Setup the environment", func() {
} }
return cronJob.Spec.Schedule, nil return cronJob.Spec.Schedule, nil
}, timeout, interval).Should(Equal("1 0 * * *")) }, timeout, interval).Should(Equal("1 0 * * *"))
Eventually(func() (bool, error) {
err := k8sClient.Get(ctx, types.NamespacedName{
Name: "backup-" + BackupConfName,
Namespace: BackupConfNamespace,
}, cronJob)
if err != nil {
return false, err
}
return *cronJob.Spec.Suspend == true, nil
}, timeout, interval).Should(BeTrue())
})
})
Context("Deleting a backupconf", func() {
It("Should also delete the sidecar container", func() {
Expect(k8sClient.Delete(ctx, backupConf)).Should(Succeed())
realDeployment := &appsv1.Deployment{}
Eventually(func() (int, error) {
err := k8sClient.Get(ctx, types.NamespacedName{
Name: DeploymentName,
Namespace: BackupConfNamespace,
}, realDeployment)
if err != nil {
return 0, err
}
return len(realDeployment.Spec.Template.Spec.Containers), nil
}, timeout, interval).Should(Equal(1))
})
}) })
}) })