...
1 package couchctl
2
3 import (
4 "fmt"
5 "testing"
6
7 "sigs.k8s.io/controller-runtime/pkg/client"
8
9 "edge-infra.dev/pkg/edge/constants/api/cluster"
10 "edge-infra.dev/pkg/edge/constants/api/fleet"
11 "edge-infra.dev/pkg/edge/datasync/couchdb"
12 "edge-infra.dev/pkg/k8s/testing/kmp"
13 "edge-infra.dev/test/f2"
14 "edge-infra.dev/test/f2/x/ktest"
15
16 "github.com/stretchr/testify/require"
17 corev1 "k8s.io/api/core/v1"
18 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
19 )
20
21 func TestTouchpointServerController(t *testing.T) {
22 fin := f2.NewFeature("CouchServerReconciler Touchpoint").
23 WithLabel(_fleetType, fleet.Store).
24 WithLabel(_clusterType, cluster.DSDS).
25 Setup("Touchpoint CouchDBServer Exists", func(ctx f2.Context, t *testing.T) f2.Context {
26 k := ktest.FromContextT(ctx, t)
27
28 require.NoError(t, client.IgnoreAlreadyExists(k.Client.Create(ctx, touchpointSever)))
29 return ctx
30 }).
31 Test("CouchDB Pods Ready", func(ctx f2.Context, t *testing.T) f2.Context {
32 k := ktest.FromContextT(ctx, t)
33 podNum := touchpointSever.Spec.Cluster.Nodes
34 podLabel := fmt.Sprintf("%s-%s", couchdb.Namespace, laneNumber)
35 for i := 0; i < podNum; i++ {
36 pod := &corev1.Pod{
37 ObjectMeta: metav1.ObjectMeta{
38 Name: fmt.Sprintf("%s-%d", podLabel, i),
39 Namespace: couchdb.Namespace,
40 },
41 }
42 k.WaitOn(t, k.Check(pod, kmp.IsCurrent()))
43 }
44 return ctx
45 }).
46 Test("CouchDBServer Ready", func(ctx f2.Context, t *testing.T) f2.Context {
47 k := ktest.FromContextT(ctx, t)
48 k.WaitOn(t, k.Check(touchpointSever, kmp.IsReady()))
49 return ctx
50 }).
51 Feature()
52
53 f.Test(t, fin)
54 }
55
View as plain text