@@ -8,12 +8,11 @@ import (
8
8
9
9
cmapi "github.com/cert-manager/cert-manager/pkg/apis/certmanager/v1"
10
10
cmmeta "github.com/cert-manager/cert-manager/pkg/apis/meta/v1"
11
- testpkg "github.com/cert-manager/cert-manager/pkg/controller/test"
12
11
"github.com/go-logr/logr/testr"
12
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
13
13
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14
- "k8s.io/apimachinery/pkg/runtime"
15
14
"k8s.io/apimachinery/pkg/util/wait"
16
- coretesting "k8s.io/client-go/testing "
15
+ "k8s.io/utils/strings/slices "
17
16
18
17
internalapi "github.com/cert-manager/csi-lib/internal/api"
19
18
internalapiutil "github.com/cert-manager/csi-lib/internal/api/util"
@@ -280,118 +279,106 @@ func TestManager_ManageVolume_beginsManagingAndProceedsIfNotReady(t *testing.T)
280
279
}
281
280
282
281
func TestManager_cleanupStaleRequests (t * testing.T ) {
283
-
284
- ctx := context .TODO ()
285
- log := testr .New (t )
286
-
287
282
type fields struct {
288
- nodeNameHash string
283
+ nodeID string
289
284
maxRequestsPerVolume int
290
285
}
291
-
292
286
tests := []struct {
293
- name string
294
- builder * testpkg. Builder
295
- fields fields
296
- volumeID string
297
- wantErr bool
287
+ name string
288
+ objects [] * cmapi. CertificateRequest
289
+ toBeDeleted [] string
290
+ fields fields
291
+ wantErr bool
298
292
}{
299
293
{
300
294
name : "maxRequestsPerVolume=1: all stale CSRs should be deleted" ,
301
- builder : & testpkg.Builder {
302
- T : t ,
303
-
304
- CertManagerObjects : []runtime.Object {
305
- cr ("cr-1" , "ns-1" , "nodeNameHash-1" , "volumeID-1" ),
306
- cr ("cr-2" , "ns-1" , "nodeNameHash-1" , "volumeID-1" ),
307
- },
308
- ExpectedActions : []testpkg.Action {
309
- testpkg .NewAction (coretesting .NewDeleteAction (
310
- cmapi .SchemeGroupVersion .WithResource ("certificaterequests" ),
311
- "ns-1" , "cr-2" )),
312
- testpkg .NewAction (coretesting .NewDeleteAction (
313
- cmapi .SchemeGroupVersion .WithResource ("certificaterequests" ),
314
- "ns-1" , "cr-1" )),
315
- },
295
+ objects : []* cmapi.CertificateRequest {
296
+ cr ("cr-1" , defaultTestNamespace , "nodeID-1" , "volumeID-1" ),
297
+ cr ("cr-2" , defaultTestNamespace , "nodeID-1" , "volumeID-1" ),
316
298
},
299
+ toBeDeleted : []string {"cr-2" , "cr-1" },
317
300
fields : fields {
318
- nodeNameHash : "nodeNameHash -1" ,
301
+ nodeID : "nodeID -1" ,
319
302
maxRequestsPerVolume : 1 ,
320
303
},
321
- volumeID : "volumeID-1" ,
322
- wantErr : false ,
304
+ wantErr : false ,
323
305
},
324
306
{
325
307
name : "maxRequestsPerVolume=2: 1 stale CSRs should be left" ,
326
- builder : & testpkg.Builder {
327
- T : t ,
328
-
329
- CertManagerObjects : []runtime.Object {
330
- cr ("cr-1" , "ns-1" , "nodeNameHash-1" , "volumeID-1" ),
331
- cr ("cr-2" , "ns-1" , "nodeNameHash-1" , "volumeID-1" ),
332
- },
333
- ExpectedActions : []testpkg.Action {
334
- testpkg .NewAction (coretesting .NewDeleteAction (
335
- cmapi .SchemeGroupVersion .WithResource ("certificaterequests" ),
336
- "ns-1" , "cr-2" )),
337
- },
308
+ objects : []* cmapi.CertificateRequest {
309
+ cr ("cr-1" , defaultTestNamespace , "nodeID-1" , "volumeID-1" ),
310
+ cr ("cr-2" , defaultTestNamespace , "nodeID-1" , "volumeID-1" ),
338
311
},
312
+ toBeDeleted : []string {"cr-2" },
339
313
fields : fields {
340
- nodeNameHash : "nodeNameHash -1" ,
314
+ nodeID : "nodeID -1" ,
341
315
maxRequestsPerVolume : 2 ,
342
316
},
343
- volumeID : "volumeID-1" ,
344
- wantErr : false ,
317
+ wantErr : false ,
345
318
},
346
319
{
347
320
name : "maxRequestsPerVolume=1: unrelated CSRs should NOT be deleted" ,
348
- builder : & testpkg.Builder {
349
- T : t ,
350
-
351
- CertManagerObjects : []runtime.Object {
352
- cr ("cr-1" , "ns-1" , "nodeNameHash-1" , "volumeID-2" ),
353
- cr ("cr-2" , "ns-1" , "nodeNameHash-1" , "volumeID-2" ),
354
- },
355
- ExpectedActions : []testpkg.Action {},
321
+ objects : []* cmapi.CertificateRequest {
322
+ cr ("cr-1" , defaultTestNamespace , "nodeID-1" , "volumeID-2" ),
323
+ cr ("cr-2" , defaultTestNamespace , "nodeID-1" , "volumeID-2" ),
356
324
},
357
325
fields : fields {
358
- nodeNameHash : "nodeNameHash -1" ,
326
+ nodeID : "nodeID -1" ,
359
327
maxRequestsPerVolume : 1 ,
360
328
},
361
- volumeID : "volumeID-1" ,
362
- wantErr : false ,
329
+ wantErr : false ,
363
330
},
364
331
}
365
- for _ , tt := range tests {
366
- t .Run (tt .name , func (t * testing.T ) {
367
- tt .builder .Init ()
368
- cmClient := tt .builder .CMClient
369
- crLister := tt .builder .SharedInformerFactory .Certmanager ().V1 ().CertificateRequests ().Lister ()
370
-
371
- tt .builder .Start ()
372
- defer tt .builder .CheckAndFinish ()
373
-
374
- m := & Manager {
375
- client : cmClient ,
376
- lister : crLister ,
377
- nodeNameHash : tt .fields .nodeNameHash ,
378
- maxRequestsPerVolume : tt .fields .maxRequestsPerVolume ,
332
+ for _ , test := range tests {
333
+ t .Run (test .name , func (t * testing.T ) {
334
+ ctx := context .Background ()
335
+ log := testr .New (t )
336
+
337
+ opts := newDefaultTestOptions (t )
338
+ opts .MaxRequestsPerVolume = test .fields .maxRequestsPerVolume
339
+ opts .NodeID = test .fields .nodeID
340
+ m , err := NewManager (opts )
341
+ if err != nil {
342
+ t .Fatal (err )
343
+ }
344
+ defer m .Stop ()
345
+
346
+ for _ , req := range test .objects {
347
+ if _ , err := m .client .CertmanagerV1 ().CertificateRequests (req .Namespace ).Create (ctx , req , metav1.CreateOptions {}); err != nil {
348
+ t .Fatal (err )
349
+ }
379
350
}
380
- if err := m .cleanupStaleRequests (ctx , log , tt .volumeID ); (err != nil ) != tt .wantErr {
381
- t .Errorf ("cleanupStaleRequests() error = %v, wantErr %v" , err , tt .wantErr )
351
+
352
+ if err := m .cleanupStaleRequests (ctx , log , "volumeID-1" ); (err != nil ) != test .wantErr {
353
+ t .Errorf ("cleanupStaleRequests() error = %v, wantErr %v" , err , test .wantErr )
354
+ }
355
+
356
+ for _ , req := range test .objects {
357
+ _ , err := m .client .CertmanagerV1 ().CertificateRequests (req .Namespace ).Get (ctx , req .Name , metav1.GetOptions {})
358
+ if err != nil && ! apierrors .IsNotFound (err ) {
359
+ t .Fatal (err )
360
+ }
361
+ exists := ! apierrors .IsNotFound (err )
362
+ shouldExist := ! slices .Contains (test .toBeDeleted , req .Name )
363
+ if exists && ! shouldExist {
364
+ t .Errorf ("expected %q to be deleted but it was not" , req .Name )
365
+ }
366
+ if ! exists && shouldExist {
367
+ t .Errorf ("expected %q to exist but it does not" , req .Name )
368
+ }
382
369
}
383
370
})
384
371
}
385
372
}
386
373
387
- func cr (crName , crNamespace , nodeNameHash , VolumeID string ) * cmapi.CertificateRequest {
374
+ func cr (crName , crNamespace , nodeID , volumeID string ) * cmapi.CertificateRequest {
388
375
return & cmapi.CertificateRequest {
389
376
ObjectMeta : metav1.ObjectMeta {
390
377
Name : crName ,
391
378
Namespace : crNamespace ,
392
379
Labels : map [string ]string {
393
- internalapi .NodeIDHashLabelKey : nodeNameHash ,
394
- internalapi .VolumeIDHashLabelKey : internalapiutil .HashIdentifier (VolumeID ),
380
+ internalapi .NodeIDHashLabelKey : internalapiutil . HashIdentifier ( nodeID ) ,
381
+ internalapi .VolumeIDHashLabelKey : internalapiutil .HashIdentifier (volumeID ),
395
382
},
396
383
}}
397
384
}
0 commit comments