Skip to content

Commit a962335

Browse files
committed
test: add e2e test
fix fix
1 parent dd86e42 commit a962335

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

test/e2e/dynamic_provisioning_test.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
205205
Cmd: "touch /mnt/test-1/data",
206206
Volumes: []testsuites.VolumeDetails{
207207
{
208-
FSType: "ext4",
209208
ClaimSize: "10Gi",
210209
VolumeMount: testsuites.VolumeMountDetails{
211210
NameGenerate: "test-volume-",
@@ -227,6 +226,33 @@ var _ = ginkgo.Describe("[blob-csi-e2e] Dynamic Provisioning", func() {
227226
test.Run(ctx, cs, ns)
228227
})
229228

229+
ginkgo.It("should create a volume on demand and mount it as readOnly when volume access mode is readonly", func(ctx ginkgo.SpecContext) {
230+
pods := []testsuites.PodDetails{
231+
{
232+
Cmd: "touch /mnt/test-1/data",
233+
Volumes: []testsuites.VolumeDetails{
234+
{
235+
ClaimSize: "10Gi",
236+
VolumeMount: testsuites.VolumeMountDetails{
237+
NameGenerate: "test-volume-",
238+
MountPathGenerate: "/mnt/test-",
239+
},
240+
AccessModes: []v1.PersistentVolumeAccessMode{v1.ReadOnlyMany},
241+
},
242+
},
243+
},
244+
}
245+
test := testsuites.DynamicallyProvisionedReadOnlyVolumeTest{
246+
CSIDriver: testDriver,
247+
Pods: pods,
248+
StorageClassParameters: map[string]string{"skuName": "Standard_GRS"},
249+
}
250+
if isAzureStackCloud {
251+
test.StorageClassParameters = map[string]string{"skuName": "Standard_LRS"}
252+
}
253+
test.Run(ctx, cs, ns)
254+
})
255+
230256
ginkgo.It("should create multiple PV objects, bind to PVCs and attach all to different pods on the same node", func(ctx ginkgo.SpecContext) {
231257
pods := []testsuites.PodDetails{
232258
{

test/e2e/testsuites/specs.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ type VolumeDetails struct {
5555
StorageClass *storagev1.StorageClass
5656
NodeStageSecretRef string
5757
Attrib map[string]string
58+
AccessModes []v1.PersistentVolumeAccessMode
5859
}
5960

6061
type VolumeMode int
@@ -196,6 +197,11 @@ func (volume *VolumeDetails) SetupDynamicPersistentVolumeClaim(ctx context.Conte
196197
} else {
197198
tpvc = NewTestPersistentVolumeClaim(client, namespace, volume.ClaimSize, volume.VolumeMode, &createdStorageClass)
198199
}
200+
201+
if len(volume.AccessModes) > 0 {
202+
ginkgo.By("setting up the PVC with access modes")
203+
tpvc.AccessModes = volume.AccessModes
204+
}
199205
tpvc.Create(ctx)
200206
cleanupFuncs = append(cleanupFuncs, tpvc.Cleanup)
201207
// PV will not be ready until PVC is used in a pod when volumeBindingMode: WaitForFirstConsumer

test/e2e/testsuites/testsuites.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ type TestPersistentVolumeClaim struct {
123123
persistentVolumeClaim *v1.PersistentVolumeClaim
124124
requestedPersistentVolumeClaim *v1.PersistentVolumeClaim
125125
dataSource *v1.TypedLocalObjectReference
126+
AccessModes []v1.PersistentVolumeAccessMode
126127
}
127128

128129
func NewTestPersistentVolumeClaim(c clientset.Interface, ns *v1.Namespace, claimSize string, volumeMode VolumeMode, sc *storagev1.StorageClass) *TestPersistentVolumeClaim {
@@ -163,6 +164,10 @@ func (t *TestPersistentVolumeClaim) Create(ctx context.Context) {
163164
storageClassName = t.storageClass.Name
164165
}
165166
t.requestedPersistentVolumeClaim = generatePVC(t.namespace.Name, storageClassName, t.claimSize, t.volumeMode, t.dataSource)
167+
if len(t.AccessModes) > 0 {
168+
ginkgo.By("setting access modes")
169+
t.requestedPersistentVolumeClaim.Spec.AccessModes = t.AccessModes
170+
}
166171
t.persistentVolumeClaim, err = t.client.CoreV1().PersistentVolumeClaims(t.namespace.Name).Create(ctx, t.requestedPersistentVolumeClaim, metav1.CreateOptions{})
167172
framework.ExpectNoError(err)
168173
}

0 commit comments

Comments
 (0)