@@ -17,13 +17,12 @@ limitations under the License.
17
17
package vsphere
18
18
19
19
import (
20
- "fmt"
21
- "strings"
22
20
"time"
23
21
24
22
. "github.com/onsi/ginkgo"
25
23
. "github.com/onsi/gomega"
26
- "k8s.io/api/core/v1"
24
+ v1 "k8s.io/api/core/v1"
25
+ "k8s.io/apimachinery/pkg/api/resource"
27
26
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
28
27
clientset "k8s.io/client-go/kubernetes"
29
28
"k8s.io/kubernetes/test/e2e/framework"
@@ -35,13 +34,12 @@ const (
35
34
)
36
35
37
36
/*
38
- Test to verify disk size specified in PVC is being honored while volume creation .
37
+ Test to verify disk size specified in PVC is being rounded up correctly .
39
38
40
39
Steps
41
40
1. Create StorageClass.
42
41
2. Create PVC with invalid disk size which uses the StorageClass created in step 1.
43
- 3. Expect the PVC to fail.
44
- 4. Verify the error returned on PVC failure is the correct.
42
+ 3. Verify the provisioned PV size is correct.
45
43
*/
46
44
47
45
var _ = utils .SIGDescribe ("Volume Disk Size [Feature:vsphere]" , func () {
@@ -61,35 +59,38 @@ var _ = utils.SIGDescribe("Volume Disk Size [Feature:vsphere]", func() {
61
59
datastore = GetAndExpectStringEnvVar (StorageClassDatastoreName )
62
60
})
63
61
64
- It ("verify dynamically provisioned pv using storageclass with an invalid disk size fails " , func () {
65
- By ("Invoking Test for invalid disk size" )
62
+ It ("verify dynamically provisioned pv has size rounded up correctly " , func () {
63
+ By ("Invoking Test disk size" )
66
64
scParameters [Datastore ] = datastore
67
65
scParameters [DiskFormat ] = ThinDisk
68
66
diskSize := "1"
69
- err := invokeInvalidDiskSizeTestNeg (client , namespace , scParameters , diskSize )
70
- Expect (err ).To (HaveOccurred ())
71
- errorMsg := `Failed to provision volume with StorageClass \"` + DiskSizeSCName + `\": A specified parameter was not correct`
72
- if ! strings .Contains (err .Error (), errorMsg ) {
73
- framework .ExpectNoError (err , errorMsg )
74
- }
75
- })
76
- })
67
+ expectedDiskSize := "1Mi"
68
+
69
+ By ("Creating Storage Class" )
70
+ storageclass , err := client .StorageV1 ().StorageClasses ().Create (getVSphereStorageClassSpec (DiskSizeSCName , scParameters , nil ))
71
+ framework .ExpectNoError (err )
72
+ defer client .StorageV1 ().StorageClasses ().Delete (storageclass .Name , nil )
77
73
78
- func invokeInvalidDiskSizeTestNeg (client clientset.Interface , namespace string , scParameters map [string ]string , diskSize string ) error {
79
- By ("Creating Storage Class With invalid disk size" )
80
- storageclass , err := client .StorageV1 ().StorageClasses ().Create (getVSphereStorageClassSpec (DiskSizeSCName , scParameters , nil ))
81
- framework .ExpectNoError (err , fmt .Sprintf ("Failed to create storage class with err: %v" , err ))
82
- defer client .StorageV1 ().StorageClasses ().Delete (storageclass .Name , nil )
74
+ By ("Creating PVC using the Storage Class" )
75
+ pvclaim , err := framework .CreatePVC (client , namespace , getVSphereClaimSpecWithStorageClass (namespace , diskSize , storageclass ))
76
+ framework .ExpectNoError (err )
77
+ defer framework .DeletePersistentVolumeClaim (client , pvclaim .Name , namespace )
83
78
84
- By ("Creating PVC using the Storage Class" )
85
- pvclaim , err := framework .CreatePVC (client , namespace , getVSphereClaimSpecWithStorageClass (namespace , diskSize , storageclass ))
86
- framework .ExpectNoError (err )
87
- defer framework .DeletePersistentVolumeClaim (client , pvclaim .Name , namespace )
79
+ By ("Waiting for claim to be in bound phase" )
80
+ err = framework .WaitForPersistentVolumeClaimPhase (v1 .ClaimBound , client , pvclaim .Namespace , pvclaim .Name , framework .Poll , 2 * time .Minute )
81
+ framework .ExpectNoError (err )
88
82
89
- By ("Expect claim to fail provisioning volume " )
90
- err = framework . WaitForPersistentVolumeClaimPhase ( v1 . ClaimBound , client , pvclaim .Namespace , pvclaim .Name , framework . Poll , 2 * time . Minute )
91
- Expect ( err ). To ( HaveOccurred () )
83
+ By ("Getting new copy of PVC " )
84
+ pvclaim , err = client . CoreV1 (). PersistentVolumeClaims ( pvclaim .Namespace ). Get ( pvclaim .Name , metav1. GetOptions {} )
85
+ framework . ExpectNoError ( err )
92
86
93
- eventList , err := client .CoreV1 ().Events (pvclaim .Namespace ).List (metav1.ListOptions {})
94
- return fmt .Errorf ("Failure message: %+q" , eventList .Items [0 ].Message )
95
- }
87
+ By ("Getting PV created" )
88
+ pv , err := client .CoreV1 ().PersistentVolumes ().Get (pvclaim .Spec .VolumeName , metav1.GetOptions {})
89
+ framework .ExpectNoError (err )
90
+
91
+ By ("Verifying if provisioned PV has the correct size" )
92
+ expectedCapacity := resource .MustParse (expectedDiskSize )
93
+ pvCapacity := pv .Spec .Capacity [v1 .ResourceName (v1 .ResourceStorage )]
94
+ Expect (pvCapacity .Value ()).To (Equal (expectedCapacity .Value ()))
95
+ })
96
+ })
0 commit comments