mirror of
https://github.com/mariadb-operator/mariadb-operator.git
synced 2025-08-19 16:24:15 +00:00
Refactor tests
This commit is contained in:
@ -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 {
|
||||
|
@ -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)
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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) {
|
||||
|
Reference in New Issue
Block a user