Skip to content

Commit c59e0a9

Browse files
presztakspowelljr
authored andcommitted
Add integration test for storage-provisioner-rancher addon
1 parent f7d2a15 commit c59e0a9

File tree

3 files changed

+87
-1
lines changed

3 files changed

+87
-1
lines changed

test/integration/addons_test.go

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737

3838
"github.com/blang/semver/v4"
3939
retryablehttp "github.com/hashicorp/go-retryablehttp"
40+
core "k8s.io/api/core/v1"
4041
"k8s.io/minikube/pkg/kapi"
4142
"k8s.io/minikube/pkg/minikube/constants"
4243
"k8s.io/minikube/pkg/minikube/detect"
@@ -78,7 +79,7 @@ func TestAddons(t *testing.T) {
7879
// so we override that here to let minikube auto-detect appropriate cgroup driver
7980
os.Setenv(constants.MinikubeForceSystemdEnv, "")
8081

81-
args := append([]string{"start", "-p", profile, "--wait=true", "--memory=4000", "--alsologtostderr", "--addons=registry", "--addons=metrics-server", "--addons=volumesnapshots", "--addons=csi-hostpath-driver", "--addons=gcp-auth", "--addons=cloud-spanner", "--addons=inspektor-gadget"}, StartArgs()...)
82+
args := append([]string{"start", "-p", profile, "--wait=true", "--memory=4000", "--alsologtostderr", "--addons=registry", "--addons=metrics-server", "--addons=volumesnapshots", "--addons=csi-hostpath-driver", "--addons=gcp-auth", "--addons=cloud-spanner", "--addons=inspektor-gadget", "--addons=storage-provisioner-rancher"}, StartArgs()...)
8283
if !NoneDriver() { // none driver does not support ingress
8384
args = append(args, "--addons=ingress", "--addons=ingress-dns")
8485
}
@@ -111,6 +112,7 @@ func TestAddons(t *testing.T) {
111112
{"CSI", validateCSIDriverAndSnapshots},
112113
{"Headlamp", validateHeadlampAddon},
113114
{"CloudSpanner", validateCloudSpannerAddon},
115+
{"LocalPath", validateLocalPathAddon},
114116
}
115117
for _, tc := range tests {
116118
tc := tc
@@ -837,3 +839,59 @@ func validateCloudSpannerAddon(ctx context.Context, t *testing.T, profile string
837839
t.Errorf("failed to disable cloud-spanner addon: args %q : %v", rr.Command(), err)
838840
}
839841
}
842+
843+
// validateLocalPathAddon tests the functionality of the storage-provisioner-rancher addon
844+
func validateLocalPathAddon(ctx context.Context, t *testing.T, profile string) {
845+
// Create a test PVC
846+
rr, err := Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "apply", "-f", filepath.Join(*testdataDir, "storage-provisioner-rancher", "pvc.yaml")))
847+
if err != nil {
848+
t.Fatalf("kubectl apply pvc.yaml failed: args %q: %v", rr.Command(), err)
849+
}
850+
851+
// Deploy a simple pod with PVC
852+
rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "apply", "-f", filepath.Join(*testdataDir, "storage-provisioner-rancher", "pod.yaml")))
853+
if err != nil {
854+
t.Fatalf("kubectl apply pod.yaml failed: args %q: %v", rr.Command(), err)
855+
}
856+
if _, err := PodWait(ctx, t, profile, "default", "run=test-local-path", Minutes(3)); err != nil {
857+
t.Fatalf("failed waiting for test-local-path pod: %v", err)
858+
}
859+
if err := PVCWait(ctx, t, profile, "default", "test-pvc", Minutes(5)); err != nil {
860+
t.Fatalf("failed waiting for PVC test-pvc: %v", err)
861+
}
862+
863+
// Get info about PVC
864+
rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "get", "pvc", "test-pvc", "-o=json"))
865+
if err != nil {
866+
t.Fatalf("kubectl get pvc with %s failed: %v", rr.Command(), err)
867+
}
868+
pvc := core.PersistentVolumeClaim{}
869+
if err := json.NewDecoder(bytes.NewReader(rr.Stdout.Bytes())).Decode(&pvc); err != nil {
870+
t.Fatalf("failed decoding json to pvc: %v", err)
871+
}
872+
873+
rr, err = Run(t, exec.CommandContext(ctx, Target(), "-p", profile, "ssh", fmt.Sprintf("cat /opt/local-path-provisioner/%s_default_test-pvc/file1", pvc.Spec.VolumeName)))
874+
if err != nil {
875+
t.Fatalf("ssh error: %v", err)
876+
}
877+
878+
got := rr.Stdout.String()
879+
want := "local-path-provisioner"
880+
if !strings.Contains(got, want) {
881+
t.Fatalf("%v stdout = %q, want %q", rr.Command(), got, want)
882+
}
883+
884+
// Cleanup
885+
rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "delete", "pod", "test-local-path"))
886+
if err != nil {
887+
t.Logf("cleanup with %s failed: %v", rr.Command(), err)
888+
}
889+
rr, err = Run(t, exec.CommandContext(ctx, "kubectl", "--context", profile, "delete", "pvc", "test-pvc"))
890+
if err != nil {
891+
t.Logf("cleanup with %s failed: %v", rr.Command(), err)
892+
}
893+
rr, err = Run(t, exec.CommandContext(ctx, Target(), "-p", profile, "addons", "disable", "storage-provisioner-rancher", "--alsologtostderr", "-v=1"))
894+
if err != nil {
895+
t.Errorf("failed to disable storage-provisioner-rancher addon: args %q: %v", rr.Command(), err)
896+
}
897+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
name: test-local-path
5+
labels:
6+
run: test-local-path
7+
spec:
8+
containers:
9+
- name: busybox
10+
image: busybox:stable
11+
command: ["sh", "-c", "echo 'local-path-provisioner' > /test/file1"]
12+
volumeMounts:
13+
- name: data
14+
mountPath: /test
15+
volumes:
16+
- name: data
17+
persistentVolumeClaim:
18+
claimName: test-pvc
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
name: test-pvc
5+
spec:
6+
accessModes:
7+
- ReadWriteOnce
8+
resources:
9+
requests:
10+
storage: 64Mi

0 commit comments

Comments
 (0)