@@ -18,9 +18,11 @@ package common_controller
18
18
19
19
import (
20
20
//"errors"
21
+ "errors"
21
22
"testing"
22
23
"time"
23
24
25
+ "github.com/kubernetes-csi/external-snapshotter/v2/pkg/utils"
24
26
v1 "k8s.io/api/core/v1"
25
27
storagev1beta1 "k8s.io/api/storage/v1beta1"
26
28
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -282,6 +284,59 @@ func TestSync(t *testing.T) {
282
284
errors : noerrors ,
283
285
test : testSyncSnapshot ,
284
286
},
287
+ {
288
+ name : "5-1 - content missing finalizer is updated to have finalizer" ,
289
+ initialContents : newContentArray ("content5-1" , "snapuid5-1" , "snap5-1" , "sid5-1" , validSecretClass , "" , "" , deletionPolicy , nil , nil , false ),
290
+ expectedContents : newContentArray ("content5-1" , "snapuid5-1" , "snap5-1" , "sid5-1" , validSecretClass , "" , "" , deletionPolicy , nil , nil , true ),
291
+ initialClaims : newClaimArray ("claim5-1" , "pvc-uid5-1" , "1Gi" , "volume5-1" , v1 .ClaimBound , & classEmpty ),
292
+ initialVolumes : newVolumeArray ("volume5-1" , "pv-uid5-1" , "pv-handle5-1" , "1Gi" , "pvc-uid5-1" , "claim5-1" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
293
+ initialSecrets : []* v1.Secret {secret ()},
294
+ errors : noerrors ,
295
+ test : testSyncContent ,
296
+ },
297
+ {
298
+ name : "5-2 - content missing finalizer update attempt fails because of failed API call" ,
299
+ initialContents : newContentArray ("content5-2" , "snapuid5-2" , "snap5-2" , "sid5-2" , validSecretClass , "" , "" , deletionPolicy , nil , nil , false ),
300
+ expectedContents : newContentArray ("content5-2" , "snapuid5-2" , "snap5-2" , "sid5-2" , validSecretClass , "" , "" , deletionPolicy , nil , nil , false ),
301
+ initialClaims : newClaimArray ("claim5-2" , "pvc-uid5-2" , "1Gi" , "volume5-2" , v1 .ClaimBound , & classEmpty ),
302
+ initialVolumes : newVolumeArray ("volume5-2" , "pv-uid5-2" , "pv-handle5-2" , "1Gi" , "pvc-uid5-2" , "claim5-2" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
303
+ initialSecrets : []* v1.Secret {secret ()},
304
+ errors : []reactorError {
305
+ // Inject error to the forth client.VolumesnapshotV1beta1().VolumeSnapshots().Update call.
306
+ {"update" , "volumesnapshotcontents" , errors .New ("mock update error" )},
307
+ },
308
+ expectSuccess : false ,
309
+ test : testSyncContentError ,
310
+ },
311
+ {
312
+ name : "5-3 - snapshot deletion candidate marked for deletion" ,
313
+ initialSnapshots : newSnapshotArray ("snap5-3" , "snapuid5-3" , "claim5-3" , "" , validSecretClass , "content5-3" , & False , nil , nil , nil , false , true , & timeNowMetav1 ),
314
+ expectedSnapshots : newSnapshotArray ("snap5-3" , "snapuid5-3" , "claim5-3" , "" , validSecretClass , "content5-3" , & False , nil , nil , nil , false , true , & timeNowMetav1 ),
315
+ initialContents : newContentArray ("content5-3" , "snapuid5-3" , "snap5-3" , "sid5-3" , validSecretClass , "" , "" , deletionPolicy , nil , nil , true ),
316
+ expectedContents : withContentAnnotations (newContentArray ("content5-3" , "snapuid5-3" , "snap5-3" , "sid5-3" , validSecretClass , "" , "" , deletionPolicy , nil , nil , true ), map [string ]string {utils .AnnVolumeSnapshotBeingDeleted : "yes" }),
317
+ initialClaims : newClaimArray ("claim5-3" , "pvc-uid5-3" , "1Gi" , "volume5-3" , v1 .ClaimBound , & classEmpty ),
318
+ initialVolumes : newVolumeArray ("volume5-3" , "pv-uid5-3" , "pv-handle5-3" , "1Gi" , "pvc-uid5-3" , "claim5-3" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
319
+ initialSecrets : []* v1.Secret {secret ()},
320
+ expectSuccess : true ,
321
+ test : testSyncContent ,
322
+ },
323
+ {
324
+ name : "5-4 - snapshot deletion candidate fail to mark for deletion due to failed API call" ,
325
+ initialSnapshots : newSnapshotArray ("snap5-4" , "snapuid5-4" , "claim5-4" , "" , validSecretClass , "content5-4" , & False , nil , nil , nil , false , true , & timeNowMetav1 ),
326
+ expectedSnapshots : newSnapshotArray ("snap5-4" , "snapuid5-4" , "claim5-4" , "" , validSecretClass , "content5-4" , & False , nil , nil , nil , false , true , & timeNowMetav1 ),
327
+ initialContents : newContentArray ("content5-4" , "snapuid5-4" , "snap5-4" , "sid5-4" , validSecretClass , "" , "" , deletionPolicy , nil , nil , true ),
328
+ // result of the test framework - annotation is still set in memory, but update call fails.
329
+ expectedContents : withContentAnnotations (newContentArray ("content5-4" , "snapuid5-4" , "snap5-4" , "sid5-4" , validSecretClass , "" , "" , deletionPolicy , nil , nil , true ), map [string ]string {utils .AnnVolumeSnapshotBeingDeleted : "yes" }),
330
+ initialClaims : newClaimArray ("claim5-4" , "pvc-uid5-4" , "1Gi" , "volume5-4" , v1 .ClaimBound , & classEmpty ),
331
+ initialVolumes : newVolumeArray ("volume5-4" , "pv-uid5-4" , "pv-handle5-4" , "1Gi" , "pvc-uid5-4" , "claim5-4" , v1 .VolumeBound , v1 .PersistentVolumeReclaimDelete , classEmpty ),
332
+ initialSecrets : []* v1.Secret {secret ()},
333
+ errors : []reactorError {
334
+ // Inject error to the forth client.VolumesnapshotV1beta1().VolumeSnapshots().Update call.
335
+ {"update" , "volumesnapshotcontents" , errors .New ("mock update error" )},
336
+ },
337
+ expectSuccess : false ,
338
+ test : testSyncContentError ,
339
+ },
285
340
}
286
341
287
342
runSyncTests (t , tests , snapshotClasses )
0 commit comments