Add tests

Signed-off-by: Howard Lau <howardlau1999@hotmail.com>
This commit is contained in:
Howard Lau 2020-11-01 09:24:13 +00:00
parent 2d2148e96c
commit 89bf4e4e0e
No known key found for this signature in database
GPG Key ID: 5CCC55849E3CF8E2
2 changed files with 113 additions and 0 deletions

View File

@ -0,0 +1,95 @@
package controllers
import (
"context"
"time"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
appsv1 "k8s.io/api/apps/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
seaweedv1 "github.com/seaweedfs/seaweedfs-operator/api/v1"
)
var _ = Describe("Seaweed Controller", func() {
Context("Basic Functionality", func() {
It("Should create StatefulSets", func() {
By("By creating a new Seaweed", func() {
const (
namespace = "default"
name = "test-seaweed"
timeout = time.Second * 10
duration = time.Second * 10
interval = time.Millisecond * 250
)
ctx := context.Background()
seaweed := &seaweedv1.Seaweed{
ObjectMeta: metav1.ObjectMeta{
Namespace: namespace,
Name: name,
},
Spec: seaweedv1.SeaweedSpec{
Image: "chrislusf/seaweedfs:2.07",
VolumeServerDiskCount: 1,
Master: &seaweedv1.MasterSpec{
Replicas: 3,
},
Volume: &seaweedv1.VolumeSpec{
Replicas: 1,
ResourceRequirements: corev1.ResourceRequirements{
Requests: corev1.ResourceList{
corev1.ResourceStorage: resource.MustParse("1Gi"),
},
},
},
Filer: &seaweedv1.FilerSpec{
Replicas: 2,
},
},
}
Expect(k8sClient.Create(ctx, seaweed)).Should(Succeed())
masterKey := types.NamespacedName{Name: name + "-master", Namespace: namespace}
volumeKey := types.NamespacedName{Name: name + "-volume", Namespace: namespace}
filerKey := types.NamespacedName{Name: name + "-filer", Namespace: namespace}
masterSts := &appsv1.StatefulSet{}
volumeSts := &appsv1.StatefulSet{}
filerSts := &appsv1.StatefulSet{}
Eventually(func() bool {
err := k8sClient.Get(ctx, masterKey, masterSts)
if err != nil {
return false
}
return true
}, timeout, interval).Should(BeTrue())
Expect(*masterSts.Spec.Replicas).Should(Equal(seaweed.Spec.Master.Replicas))
Eventually(func() bool {
err := k8sClient.Get(ctx, volumeKey, volumeSts)
if err != nil {
return false
}
return true
}, timeout, interval).Should(BeTrue())
Expect(*volumeSts.Spec.Replicas).Should(Equal(seaweed.Spec.Volume.Replicas))
Eventually(func() bool {
err := k8sClient.Get(ctx, filerKey, filerSts)
if err != nil {
return false
}
return true
}, timeout, interval).Should(BeTrue())
Expect(*filerSts.Spec.Replicas).Should(Equal(seaweed.Spec.Filer.Replicas))
})
})
})
})

View File

@ -24,6 +24,7 @@ import (
. "github.com/onsi/gomega"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/envtest"
"sigs.k8s.io/controller-runtime/pkg/envtest/printer"
@ -68,6 +69,23 @@ var _ = BeforeSuite(func(done Done) {
// +kubebuilder:scaffold:scheme
k8sClient, err = client.New(cfg, client.Options{Scheme: scheme.Scheme})
k8sManager, err := ctrl.NewManager(cfg, ctrl.Options{
Scheme: scheme.Scheme,
})
Expect(err).ToNot(HaveOccurred())
err = (&SeaweedReconciler{
Client: k8sManager.GetClient(),
Log: ctrl.Log.WithName("controllers").WithName("Seaweed"),
Scheme: k8sManager.GetScheme(),
}).SetupWithManager(k8sManager)
Expect(err).ToNot(HaveOccurred())
go func() {
err = k8sManager.Start(ctrl.SetupSignalHandler())
Expect(err).ToNot(HaveOccurred())
}()
Expect(err).ToNot(HaveOccurred())
Expect(k8sClient).ToNot(BeNil())