@@ -101,7 +101,7 @@ var _ = Describe("GCE PD CSI Driver", func() {
101
101
102
102
})
103
103
104
- It ("Should resize controller and node" , func () {
104
+ It ("Should resize controller and node for an ext4 volume " , func () {
105
105
testContext := getRandomTestContext ()
106
106
107
107
p , z , _ := testContext .Instance .GetIdentity ()
@@ -153,7 +153,7 @@ var _ = Describe("GCE PD CSI Driver", func() {
153
153
154
154
// Stage Disk
155
155
stageDir := filepath .Join ("/tmp/" , volName , "stage" )
156
- err = client .NodeStageVolume (volID , stageDir )
156
+ err = client .NodeStageExt4Volume (volID , stageDir )
157
157
Expect (err ).To (BeNil (), "Node Stage volume failed" )
158
158
159
159
defer func () {
@@ -199,7 +199,7 @@ var _ = Describe("GCE PD CSI Driver", func() {
199
199
Expect (cloudDisk .SizeGb ).To (Equal (newSizeGb ))
200
200
201
201
// Resize node
202
- err = client .NodeExpandVolume (volID , publishDir , newSizeGb )
202
+ _ , err = client .NodeExpandVolume (volID , publishDir , newSizeGb )
203
203
Expect (err ).To (BeNil (), "Node expand volume failed" )
204
204
205
205
// Verify disk size
@@ -209,6 +209,115 @@ var _ = Describe("GCE PD CSI Driver", func() {
209
209
210
210
})
211
211
212
+ It ("Should resize controller and node for an block volume" , func () {
213
+ testContext := getRandomTestContext ()
214
+
215
+ p , z , _ := testContext .Instance .GetIdentity ()
216
+ client := testContext .Client
217
+ instance := testContext .Instance
218
+
219
+ // Create Disk
220
+ volName := testNamePrefix + string (uuid .NewUUID ())
221
+ volID , err := client .CreateVolume (volName , nil , defaultSizeGb ,
222
+ & csi.TopologyRequirement {
223
+ Requisite : []* csi.Topology {
224
+ {
225
+ Segments : map [string ]string {common .TopologyKeyZone : z },
226
+ },
227
+ },
228
+ })
229
+ Expect (err ).To (BeNil (), "CreateVolume failed with error: %v" , err )
230
+
231
+ // Validate Disk Created
232
+ cloudDisk , err := computeService .Disks .Get (p , z , volName ).Do ()
233
+ Expect (err ).To (BeNil (), "Could not get disk from cloud directly" )
234
+ Expect (cloudDisk .Type ).To (ContainSubstring (standardDiskType ))
235
+ Expect (cloudDisk .Status ).To (Equal (readyState ))
236
+ Expect (cloudDisk .SizeGb ).To (Equal (defaultSizeGb ))
237
+ Expect (cloudDisk .Name ).To (Equal (volName ))
238
+
239
+ defer func () {
240
+ // Delete Disk
241
+ client .DeleteVolume (volID )
242
+ Expect (err ).To (BeNil (), "DeleteVolume failed" )
243
+
244
+ // Validate Disk Deleted
245
+ _ , err = computeService .Disks .Get (p , z , volName ).Do ()
246
+ Expect (gce .IsGCEError (err , "notFound" )).To (BeTrue (), "Expected disk to not be found" )
247
+ }()
248
+
249
+ // Attach Disk
250
+ err = client .ControllerPublishVolume (volID , instance .GetNodeID ())
251
+ Expect (err ).To (BeNil (), "Controller publish volume failed" )
252
+
253
+ defer func () {
254
+ // Detach Disk
255
+ err = client .ControllerUnpublishVolume (volID , instance .GetNodeID ())
256
+ if err != nil {
257
+ klog .Errorf ("Failed to detach disk: %v" , err )
258
+ }
259
+
260
+ }()
261
+
262
+ // Stage Disk
263
+ stageDir := filepath .Join ("/tmp/" , volName , "stage" )
264
+ err = client .NodeStageBlockVolume (volID , stageDir )
265
+ Expect (err ).To (BeNil (), "Node Stage volume failed" )
266
+
267
+ defer func () {
268
+ // Unstage Disk
269
+ err = client .NodeUnstageVolume (volID , stageDir )
270
+ if err != nil {
271
+ klog .Errorf ("Failed to unstage volume: %v" , err )
272
+ }
273
+ fp := filepath .Join ("/tmp/" , volName )
274
+ err = testutils .RmAll (instance , fp )
275
+ if err != nil {
276
+ klog .Errorf ("Failed to rm file path %s: %v" , fp , err )
277
+ }
278
+ }()
279
+
280
+ // Mount Disk
281
+ publishDir := filepath .Join ("/tmp/" , volName , "mount" )
282
+ err = client .NodePublishBlockVolume (volID , stageDir , publishDir )
283
+ Expect (err ).To (BeNil (), "Node publish volume failed" )
284
+
285
+ defer func () {
286
+ // Unmount Disk
287
+ err = client .NodeUnpublishVolume (volID , publishDir )
288
+ if err != nil {
289
+ klog .Errorf ("NodeUnpublishVolume failed with error: %v" , err )
290
+ }
291
+ }()
292
+
293
+ // Verify pre-resize fs size
294
+ sizeGb , err := testutils .GetBlockSizeInGb (instance , publishDir )
295
+ Expect (err ).To (BeNil (), "Failed to get block device size in GB" )
296
+ Expect (sizeGb ).To (Equal (defaultSizeGb ), "Old size should be equal" )
297
+
298
+ // Resize controller
299
+ var newSizeGb int64 = 10
300
+ err = client .ControllerExpandVolume (volID , newSizeGb )
301
+
302
+ Expect (err ).To (BeNil (), "Controller expand volume failed" )
303
+
304
+ // Verify cloud size
305
+ cloudDisk , err = computeService .Disks .Get (p , z , volName ).Do ()
306
+ Expect (err ).To (BeNil (), "Get cloud disk failed" )
307
+ Expect (cloudDisk .SizeGb ).To (Equal (newSizeGb ))
308
+
309
+ // Resize node
310
+ resp , err := client .NodeExpandVolume (volID , publishDir , newSizeGb )
311
+ Expect (err ).To (BeNil (), "Node expand volume failed" )
312
+ Expect (resp .CapacityBytes ).To (Equal (int64 (0 )), "Node expand should not do anything" )
313
+
314
+ // Verify disk size
315
+ sizeGb , err = testutils .GetBlockSizeInGb (instance , publishDir )
316
+ Expect (err ).To (BeNil (), "Failed to get block device size in GB" )
317
+ Expect (sizeGb ).To (Equal (newSizeGb ), "New size should be equal" )
318
+
319
+ })
320
+
212
321
It ("Should create disks in correct zones when topology is specified" , func () {
213
322
Expect (testContexts ).ToNot (BeEmpty ())
214
323
testContext := getRandomTestContext ()
0 commit comments