Refactor tests

This commit is contained in:
mmontes11
2024-08-13 13:21:46 +02:00
committed by Martin Montes
parent 8946786d43
commit b5836f1793
4 changed files with 117 additions and 157 deletions

View File

@ -19,6 +19,50 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
)
var _ = Describe("MariaDB Galera spec", func() {
It("should default", func() {
By("Creating MariaDB")
key := types.NamespacedName{
Name: "mariadb-galera-default",
Namespace: testNamespace,
}
mdb := mariadbv1alpha1.MariaDB{
ObjectMeta: metav1.ObjectMeta{
Name: key.Name,
Namespace: key.Namespace,
},
Spec: mariadbv1alpha1.MariaDBSpec{
Galera: &mariadbv1alpha1.Galera{
Enabled: true,
},
Replicas: 3,
Storage: mariadbv1alpha1.Storage{
Size: ptr.To(resource.MustParse("300Mi")),
},
},
}
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariadb(key)
})
By("Expecting to eventually default")
Eventually(func(g Gomega) bool {
if err := k8sClient.Get(testCtx, client.ObjectKeyFromObject(&mdb), &mdb); err != nil {
return false
}
g.Expect(mdb.Spec.Galera).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.Primary).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.SST).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.ReplicaThreads).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.Recovery).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.InitContainer).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.Config).ToNot(BeZero())
return true
}, testTimeout, testInterval).Should(BeTrue())
})
})
var _ = Describe("MariaDB Galera", Ordered, func() {
var (
key = types.NamespacedName{
@ -154,52 +198,10 @@ var _ = Describe("MariaDB Galera", Ordered, func() {
By("Creating MariaDB Galera")
Expect(k8sClient.Create(testCtx, mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
deleteMariadb(key)
})
})
It("should default", func() {
By("Creating MariaDB")
key := types.NamespacedName{
Name: "mariadb-galera-default",
Namespace: testNamespace,
}
mdb := mariadbv1alpha1.MariaDB{
ObjectMeta: metav1.ObjectMeta{
Name: key.Name,
Namespace: key.Namespace,
},
Spec: mariadbv1alpha1.MariaDBSpec{
Galera: &mariadbv1alpha1.Galera{
Enabled: true,
},
Replicas: 3,
Storage: mariadbv1alpha1.Storage{
Size: ptr.To(resource.MustParse("300Mi")),
},
},
}
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
})
By("Expecting to eventually default")
Eventually(func(g Gomega) bool {
if err := k8sClient.Get(testCtx, client.ObjectKeyFromObject(&mdb), &mdb); err != nil {
return false
}
g.Expect(mdb.Spec.Galera).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.Primary).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.SST).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.ReplicaThreads).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.Recovery).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.InitContainer).ToNot(BeZero())
g.Expect(mdb.Spec.Galera.Config).ToNot(BeZero())
return true
}, testTimeout, testInterval).Should(BeTrue())
})
It("should reconcile", func() {
By("Expecting MariaDB to be ready eventually")
Eventually(func() bool {

View File

@ -16,7 +16,7 @@ import (
"k8s.io/utils/ptr"
)
var _ = Describe("MariaDB replication", Ordered, Focus, func() {
var _ = Describe("MariaDB replication", Ordered, func() {
var (
key = types.NamespacedName{
Name: "mariadb-repl",
@ -131,7 +131,7 @@ var _ = Describe("MariaDB replication", Ordered, Focus, func() {
By("Creating MariaDB with replication")
Expect(k8sClient.Create(testCtx, mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
deleteMariadb(key)
})
})

View File

@ -21,14 +21,39 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
)
var _ = Describe("MariaDB", func() {
BeforeEach(func() {
By("Waiting for MariaDB to be ready")
expectMariadbReady(testCtx, k8sClient, testMdbkey)
var _ = Describe("MariaDB spec", func() {
It("should default", func() {
By("Creating MariaDB")
key := types.NamespacedName{
Name: "test-mariadb-default",
Namespace: testNamespace,
}
mdb := mariadbv1alpha1.MariaDB{
ObjectMeta: metav1.ObjectMeta{
Name: key.Name,
Namespace: key.Namespace,
},
Spec: mariadbv1alpha1.MariaDBSpec{
Storage: mariadbv1alpha1.Storage{
Size: ptr.To(resource.MustParse("300Mi")),
},
},
}
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariadb(key)
})
By("Expecting to eventually default")
Eventually(func() bool {
if err := k8sClient.Get(testCtx, key, &mdb); err != nil {
return false
}
return mdb.Spec.Image != ""
}, testTimeout, testInterval).Should(BeTrue())
})
DescribeTable(
"should render default config",
DescribeTable("should render default config",
func(mariadb *mariadbv1alpha1.MariaDB, expectedConfig string) {
config, err := defaultConfig(mariadb)
Expect(err).ToNot(HaveOccurred())
@ -54,11 +79,18 @@ default_time_zone = UTC
`,
),
)
})
It("should default", func() {
var _ = Describe("MariaDB", func() {
BeforeEach(func() {
By("Waiting for MariaDB to be ready")
expectMariadbReady(testCtx, k8sClient, testMdbkey)
})
It("should suspend ", func() {
By("Creating MariaDB")
key := types.NamespacedName{
Name: "test-mariadb-default",
Name: "test-mariadb-suspend",
Namespace: testNamespace,
}
mdb := mariadbv1alpha1.MariaDB{
@ -74,48 +106,17 @@ default_time_zone = UTC
}
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
})
By("Expecting to eventually default")
Eventually(func() bool {
if err := k8sClient.Get(testCtx, key, &mdb); err != nil {
return false
}
return mdb.Spec.Image != ""
}, testTimeout, testInterval).Should(BeTrue())
})
It("should suspend ", func() {
By("Creating MariaDB")
key := types.NamespacedName{
Name: "test-mariadb-suspend",
Namespace: testNamespace,
}
testSuspendMariaDB := mariadbv1alpha1.MariaDB{
ObjectMeta: metav1.ObjectMeta{
Name: key.Name,
Namespace: key.Namespace,
},
Spec: mariadbv1alpha1.MariaDBSpec{
Storage: mariadbv1alpha1.Storage{
Size: ptr.To(resource.MustParse("300Mi")),
},
},
}
Expect(k8sClient.Create(testCtx, &testSuspendMariaDB)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
deleteMariadb(key)
})
By("Suspend MariaDB")
Eventually(func() bool {
if err := k8sClient.Get(testCtx, key, &testSuspendMariaDB); err != nil {
if err := k8sClient.Get(testCtx, key, &mdb); err != nil {
return false
}
testSuspendMariaDB.Spec.Suspend = true
mdb.Spec.Suspend = true
return k8sClient.Update(testCtx, &testSuspendMariaDB) == nil
return k8sClient.Update(testCtx, &mdb) == nil
}, testTimeout, testInterval).Should(BeTrue())
By("Expecting MariaDB to eventually be suspended")
@ -424,7 +425,7 @@ default_time_zone = UTC
By("Creating MariaDB")
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
deleteMariadb(key)
})
By("Expecting MariaDB to be ready eventually")
@ -470,7 +471,7 @@ default_time_zone = UTC
By("Creating MariaDB")
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
deleteMariadb(key)
})
By("Expecting MariaDB to be ready eventually")
@ -555,7 +556,7 @@ default_time_zone = UTC
By("Creating MariaDB")
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
deleteMariadb(key)
})
By("Expecting MariaDB to be ready eventually")
@ -724,7 +725,7 @@ func testMariadbBootstrap(key types.NamespacedName, source mariadbv1alpha1.Resto
By("Creating MariaDB")
Expect(k8sClient.Create(testCtx, &mdb)).To(Succeed())
DeferCleanup(func() {
deleteMariaDB(key)
deleteMariadb(key)
})
By("Expecting MariaDB to be ready eventually")

View File

@ -33,9 +33,9 @@ import (
)
var (
testVeryHighTimeout = 8 * time.Minute
testHighTimeout = 4 * time.Minute
testTimeout = 1 * time.Minute
testVeryHighTimeout = 10 * time.Minute
testHighTimeout = 5 * time.Minute
testTimeout = 2 * time.Minute
testInterval = 1 * time.Second
testNamespace = "default"
@ -200,7 +200,7 @@ func testCleanupInitialData(ctx context.Context) {
var password corev1.Secret
Expect(k8sClient.Get(ctx, testPwdKey, &password)).To(Succeed())
Expect(k8sClient.Delete(ctx, &password)).To(Succeed())
deleteMariaDB(testMdbkey)
deleteMariadb(testMdbkey)
}
func testMariadbUpdate(mdb *mariadbv1alpha1.MariaDB) {
@ -534,40 +534,28 @@ func testValidCredentials(username string, passwordSecretKeyRef corev1.SecretKey
}, testTimeout, testInterval).Should(BeTrue())
}
// See: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
func applyMariadbTestConfig(mdb *mariadbv1alpha1.MariaDB) *mariadbv1alpha1.MariaDB {
mdb.Spec.ContainerTemplate.ReadinessProbe = &corev1.Probe{
InitialDelaySeconds: 10,
}
mdb.Spec.ContainerTemplate.LivenessProbe = &corev1.Probe{
InitialDelaySeconds: 30,
}
mdb.Spec.Resources = &corev1.ResourceRequirements{
Requests: corev1.ResourceList{
"cpu": resource.MustParse("300m"),
"memory": resource.MustParse("256Mi"),
"cpu": resource.MustParse("500m"),
"memory": resource.MustParse("1Gi"),
},
Limits: corev1.ResourceList{
"cpu": resource.MustParse("300m"),
"memory": resource.MustParse("256Mi"),
"memory": resource.MustParse("1Gi"),
},
}
return mdb
}
// See: https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
func applyMaxscaleTestConfig(mxs *mariadbv1alpha1.MaxScale) *mariadbv1alpha1.MaxScale {
mxs.Spec.ContainerTemplate.ReadinessProbe = &corev1.Probe{
InitialDelaySeconds: 10,
}
mxs.Spec.ContainerTemplate.LivenessProbe = &corev1.Probe{
InitialDelaySeconds: 30,
}
mxs.Spec.Resources = &corev1.ResourceRequirements{
Requests: corev1.ResourceList{
"cpu": resource.MustParse("200m"),
"cpu": resource.MustParse("250m"),
"memory": resource.MustParse("128Mi"),
},
Limits: corev1.ResourceList{
"cpu": resource.MustParse("200m"),
"memory": resource.MustParse("128Mi"),
},
}
@ -698,54 +686,23 @@ func deploymentReady(deploy *appsv1.Deployment) bool {
return false
}
func deleteMariaDB(key types.NamespacedName) {
func deleteMariadb(key types.NamespacedName) {
var mdb mariadbv1alpha1.MariaDB
By("Deleting MariaDB")
Expect(k8sClient.Get(testCtx, key, &mdb)).To(Succeed())
Expect(k8sClient.Delete(testCtx, &mdb)).To(Succeed())
By("Expecting Pods to be terminated eventually")
Eventually(func(g Gomega) bool {
var podList corev1.PodList
listOpts := []client.ListOption{
client.MatchingLabels(
labels.NewLabelsBuilder().
WithMariaDBSelectorLabels(&mdb).
Build(),
),
client.InNamespace(mdb.Namespace),
}
g.Expect(k8sClient.List(testCtx, &podList, listOpts...)).To(Succeed())
return len(podList.Items) == 0
}, testTimeout, testInterval).Should(BeTrue())
By("Deleting PVCs")
opts := []client.DeleteAllOfOption{
client.MatchingLabels(
labels.NewLabelsBuilder().
WithMariaDBSelectorLabels(&mdb).
Build(),
),
client.InNamespace(mdb.Namespace),
}
Expect(k8sClient.DeleteAllOf(testCtx, &corev1.PersistentVolumeClaim{}, opts...)).To(Succeed())
By("Expecting to delete PVCs eventually")
Eventually(func(g Gomega) bool {
opts := []client.DeleteAllOfOption{
client.MatchingLabels(
labels.NewLabelsBuilder().
WithMariaDBSelectorLabels(&mdb).
Build(),
),
client.InNamespace(mdb.Namespace),
}
g.Expect(k8sClient.DeleteAllOf(testCtx, &corev1.PersistentVolumeClaim{}, opts...)).To(Succeed())
return true
}, testTimeout, testInterval).Should(BeTrue())
By("Expecting PVCs to be deleted eventually")
Eventually(func(g Gomega) bool {
var pvcList corev1.PersistentVolumeClaimList
listOpts := []client.ListOption{
client.MatchingLabels(
labels.NewLabelsBuilder().
WithMariaDBSelectorLabels(&mdb).
Build(),
),
client.InNamespace(mdb.Namespace),
}
g.Expect(k8sClient.List(testCtx, &pvcList, listOpts...)).To(Succeed())
return len(pvcList.Items) == 0
}, testTimeout, testInterval).Should(BeTrue())
}
func deleteMaxScale(key types.NamespacedName, assertPVCDeletion bool) {