Skip to content

Commit 5f22f25

Browse files
committed
integration test on actual cluster
1 parent de16cb0 commit 5f22f25

File tree

4 files changed

+55
-26
lines changed

4 files changed

+55
-26
lines changed

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ ifeq (${KUBECONFIG}, )
55
export KUBECONFIG
66
endif
77

8-
# Requires KUBECONFIG env and Ginkgo binary
8+
# Requires KUBECONFIG env
99
.PHONY: integration-test
1010
integration-test:
11-
@cd tests && ginkgo -v
11+
@cd tests && go test .

deploy/sc.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: storage.k8s.io/v1
22
kind: StorageClass
33
metadata:
4-
name: test-storage-class-1
4+
name: test-storage-class
55
annotations:
66
openebs.io/delete-dangling-pvc: "true"
77
openebs.io/cas-type: local

tests/suite_test.go tests/integration_test.go

+23-22
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package tests
22

33
import (
44
"context"
5-
"fmt"
6-
"strings"
5+
"flag"
6+
"os"
77
"testing"
88
"time"
99

@@ -12,30 +12,31 @@ import (
1212
CoreV1 "k8s.io/api/core/v1"
1313
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1414
"k8s.io/client-go/kubernetes"
15-
envtest "sigs.k8s.io/controller-runtime/pkg/envtest"
15+
"k8s.io/client-go/tools/clientcmd"
1616
)
1717

18-
func startCluster() (*kubernetes.Clientset, *envtest.Environment) {
19-
testenv := &envtest.Environment{}
20-
cfg, err := testenv.Start()
18+
var (
19+
kubeConfigPath string
20+
openebsNamespace string
21+
clientSet *kubernetes.Clientset
22+
LocalPVProvisionerLabelSelector = "openebs.io/component-name=openebs-localpv-provisioner"
23+
)
24+
25+
func init() {
26+
flag.StringVar(&kubeConfigPath, "kubeconfig", os.Getenv("KUBECONFIG"), "path to kubeconfig to invoke kubernetes API calls")
27+
flag.StringVar(&openebsNamespace, "openebs-namespace", "openebs", "kubernetes namespace where the OpenEBS components are present")
28+
config, err := clientcmd.BuildConfigFromFlags("", kubeConfigPath)
2129
if err != nil {
2230
panic(err.Error())
2331
}
24-
clientset, err := kubernetes.NewForConfig(cfg)
32+
clientSet, err = kubernetes.NewForConfig(config)
2533
if err != nil {
2634
panic(err.Error())
2735
}
28-
return clientset, testenv
29-
}
30-
31-
func stopCluster(testenv *envtest.Environment) {
32-
testenv.Stop()
3336
}
3437

3538
func TestMain(t *testing.T) {
3639
ctx := context.Background()
37-
clientSet, clusterTestEnv := startCluster()
38-
defer stopCluster(clusterTestEnv)
3940

4041
// Ensure openebs-localpv-provisioner pod running
4142
setup.TestOpenEbsPodRunningState(t, clientSet, ctx, 90)
@@ -75,15 +76,15 @@ func TestMain(t *testing.T) {
7576

7677
time.Sleep(5 * time.Second)
7778

78-
pvcs, err := clientSet.CoreV1().PersistentVolumeClaims("default").List(ctx, metav1.ListOptions{})
79+
setup.TestDanglingPVCDeleted(t, clientSet, ctx, statefulsetName, 90)
80+
81+
err = clientSet.BatchV1().Jobs("default").Delete(ctx, "test-job", metav1.DeleteOptions{})
7982
if err != nil {
80-
fmt.Printf("error %s, getting PVCs\n", err.Error())
81-
}
82-
for _, pvc := range pvcs.Items {
83-
if strings.Contains(pvc.Name, statefulsetName) {
84-
t.Fatalf("Dangling PVCs %v not deleted by Job", pvc.Name)
85-
}
83+
panic(err.Error())
8684
}
8785

88-
// clientSet.BatchV1().Jobs("default").Delete(ctx, "test-job", metav1.DeleteOptions{})
86+
err = clientSet.StorageV1().StorageClasses().Delete(ctx, "test-storage-class", metav1.DeleteOptions{})
87+
if err != nil {
88+
panic(err.Error())
89+
}
8990
}

tests/setup/setup.go

+29-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package setup
22

33
import (
44
"context"
5+
"fmt"
6+
"strings"
57
"testing"
68
"time"
79

@@ -45,6 +47,32 @@ func TestOpenEbsPodRunningState(t *testing.T, clientset *kubernetes.Clientset, c
4547
}
4648
}
4749

50+
func TestDanglingPVCDeleted(t *testing.T, clientset *kubernetes.Clientset, ctx context.Context, statefulsetName string, maxRetry int) {
51+
isSuccessful := false
52+
var danglingPvcName string
53+
for i := 0; i < maxRetry; i++ {
54+
pvcs, err := clientset.CoreV1().PersistentVolumeClaims("default").List(ctx, metav1.ListOptions{})
55+
if err != nil {
56+
fmt.Printf("error %s, getting PVCs\n", err.Error())
57+
}
58+
count := 0
59+
for _, pvc := range pvcs.Items {
60+
if strings.Contains(pvc.Name, statefulsetName) {
61+
count++
62+
danglingPvcName = pvc.Name
63+
}
64+
}
65+
if count == 0 {
66+
isSuccessful = true
67+
break
68+
}
69+
time.Sleep(5 * time.Second)
70+
}
71+
if !isSuccessful {
72+
t.Fatalf("Dangling PVCs %v not deleted by Job", danglingPvcName)
73+
}
74+
}
75+
4876
func CreateStorageClass(t *testing.T, clientset *kubernetes.Clientset, ctx context.Context, maxRetry int) {
4977
storageClass := generators.GenerateStorageClass(
5078
"test-storage-class",
@@ -68,7 +96,7 @@ func CreateStorageClass(t *testing.T, clientset *kubernetes.Clientset, ctx conte
6896
}
6997

7098
func CreateStatefulSet(t *testing.T, clientset *kubernetes.Clientset, ctx context.Context, name string, maxRetry int) {
71-
statefulset := generators.GenerateStatefulSet(name, "default", 2, map[string]string{"sts-pvc": "true"}, "test-storage-class")
99+
statefulset := generators.GenerateStatefulSet(name, "default", 1, map[string]string{"sts-pvc": "true"}, "test-storage-class")
72100
_, err := clientset.AppsV1().StatefulSets("default").Create(ctx, statefulset, metav1.CreateOptions{})
73101
if err != nil {
74102
panic(err.Error())

0 commit comments

Comments
 (0)