Skip to content

Commit ef93ee4

Browse files
committed
fix: Ensure feature gates are enabled for unit tests
Extra changes: * Ensure lateInitialize is not called for readOnly policy * Add mock call for PopulateResourceFromAnnotation in adopt tests * Ensure FilterSystemTags is called for `adopt` policy
1 parent dc7be0d commit ef93ee4

File tree

2 files changed

+31
-16
lines changed

2 files changed

+31
-16
lines changed

pkg/runtime/reconciler.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,7 @@ func (r *resourceReconciler) Sync(
461461
return resolved, err
462462
}
463463
}
464+
fmt.Println(adoptionPolicy, "\n\n\n\n", needAdoption)
464465

465466
rlog.Enter("rm.ReadOne")
466467
latest, err = rm.ReadOne(ctx, resolved)
@@ -488,7 +489,9 @@ func (r *resourceReconciler) Sync(
488489
if err != nil {
489490
return latest, err
490491
}
491-
} else if !isReadOnly {
492+
} else if isReadOnly {
493+
return latest, nil
494+
} else {
492495
if adoptionPolicy == AdoptionPolicy_AdoptOrCreate {
493496
// set adopt-or-create resource as managed before attempting
494497
// update

pkg/runtime/reconciler_test.go

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition"
3636
ackcfg "github.com/aws-controllers-k8s/runtime/pkg/config"
3737
ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors"
38+
"github.com/aws-controllers-k8s/runtime/pkg/featuregate"
3839
ackmetrics "github.com/aws-controllers-k8s/runtime/pkg/metrics"
3940
"github.com/aws-controllers-k8s/runtime/pkg/requeue"
4041
ackrt "github.com/aws-controllers-k8s/runtime/pkg/runtime"
@@ -92,7 +93,12 @@ func reconcilerMocks(
9293
Level: zapcore.InfoLevel,
9394
}
9495
fakeLogger := ctrlrtzap.New(ctrlrtzap.UseFlagOptions(&zapOptions))
95-
cfg := ackcfg.Config{}
96+
cfg := ackcfg.Config{
97+
FeatureGates: featuregate.FeatureGates{
98+
featuregate.ReadOnlyResources: {Enabled: true},
99+
featuregate.ResourceAdoption: {Enabled: true},
100+
},
101+
}
96102
metrics := ackmetrics.NewMetrics("bookstore")
97103

98104
sc := &ackmocks.ServiceController{}
@@ -241,12 +247,7 @@ func TestReconcilerReadOnlyResource(t *testing.T) {
241247
latest, nil,
242248
)
243249
rm.On("IsSynced", ctx, latest).Return(true, nil)
244-
rmf, rd := managedResourceManagerFactoryMocks(desired, latest)
245-
246-
rm.On("LateInitialize", ctx, latest).Return(latest, nil)
247-
rd.On("IsManaged", desired).Return(true)
248-
rd.On("Delta", desired, latest).Return(ackcompare.NewDelta())
249-
rd.On("Delta", latest, latest).Return(ackcompare.NewDelta())
250+
rmf, _ := managedResourceManagerFactoryMocks(desired, latest)
250251

251252
r, kc, scmd := reconcilerMocks(rmf)
252253
rm.On("EnsureTags", ctx, desired, scmd).Return(nil)
@@ -266,28 +267,32 @@ func TestReconcilerAdoptResource(t *testing.T) {
266267
require := require.New(t)
267268

268269
ctx := context.TODO()
270+
adoptionFieldsString := "{\"arn\": \"my-adopt-book-arn\"}"
271+
adoptionFields := map[string]string{
272+
"arn": "my-adopt-book-arn",
273+
}
269274

270275
desired, _, metaObj := resourceMocks()
271276
desired.On("ReplaceConditions", []*ackv1alpha1.Condition{}).Return()
272277
metaObj.SetAnnotations(map[string]string{
273278
ackv1alpha1.AnnotationAdoptionPolicy: "adopt",
274-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
279+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
275280
})
276281

277282
latest, latestRTObj, _ := resourceMocks()
278283
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
279284
latest.On("MetaObject").Return(metav1.ObjectMeta{
280285
Annotations: map[string]string{
281286
ackv1alpha1.AnnotationAdoptionPolicy: "adopt",
282-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
287+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
283288
},
284289
})
285290
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
286291
latest.On(
287292
"ReplaceConditions",
288293
mock.AnythingOfType("[]*v1alpha1.Condition"),
289294
).Return()
290-
295+
desired.On("PopulateResourceFromAnnotation", adoptionFields).Return(nil)
291296
rm := &ackmocks.AWSResourceManager{}
292297
rm.On("ResolveReferences", ctx, nil, desired).Return(
293298
desired, false, nil,
@@ -302,10 +307,11 @@ func TestReconcilerAdoptResource(t *testing.T) {
302307

303308
rm.On("LateInitialize", ctx, latest).Return(latest, nil)
304309
rd.On("IsManaged", desired).Return(false)
305-
rd.On("Delta", desired, latest).Return(ackcompare.NewDelta())
306310
rd.On("Delta", latest, latest).Return(ackcompare.NewDelta())
307311

308312
r, kc, scmd := reconcilerMocks(rmf)
313+
rm.On("FilterSystemTags", latest).Return()
314+
rd.On("MarkAdopted", latest).Return()
309315
rm.On("EnsureTags", ctx, desired, scmd).Return(nil)
310316
statusWriter := &ctrlrtclientmock.SubResourceWriter{}
311317
kc.On("Patch", ctx, latestRTObj, mock.AnythingOfType("*client.mergeFromPatch")).Return(nil)
@@ -324,13 +330,18 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
324330
require := require.New(t)
325331

326332
ctx := context.TODO()
333+
adoptionFieldsString := "{\"arn\": \"my-adopt-book-arn\"}"
334+
adoptionFields := map[string]string{
335+
"arn": "my-adopt-book-arn",
336+
}
327337

328338
desired, _, metaObj := resourceMocks()
329339
desired.On("ReplaceConditions", []*ackv1alpha1.Condition{}).Return()
330340
metaObj.SetAnnotations(map[string]string{
331341
ackv1alpha1.AnnotationAdoptionPolicy: "adopt-or-create",
332-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
342+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
333343
})
344+
desired.On("PopulateResourceFromAnnotation", adoptionFields).Return(nil)
334345

335346
ids := &ackmocks.AWSResourceIdentifiers{}
336347

@@ -339,8 +350,8 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
339350
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
340351
latest.On("MetaObject").Return(metav1.ObjectMeta{
341352
Annotations: map[string]string{
342-
ackv1alpha1.AnnotationAdoptionPolicy: "adopt",
343-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
353+
ackv1alpha1.AnnotationAdoptionPolicy: "adopt-or-create",
354+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
344355
},
345356
})
346357
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
@@ -366,6 +377,7 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
366377
).Once()
367378
rm.On("IsSynced", ctx, latest).Return(true, nil)
368379
rmf, rd := managedResourceManagerFactoryMocks(desired, latest)
380+
rd.On("MarkAdopted", latest).Return()
369381

370382
rm.On("LateInitialize", ctx, latest).Return(latest, nil)
371383
rd.On("IsManaged", desired).Return(false).Once()
@@ -409,7 +421,7 @@ func TestReconcilerAdoptOrCreateResource_Adopt(t *testing.T) {
409421
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
410422
latest.On("MetaObject").Return(metav1.ObjectMeta{
411423
Annotations: map[string]string{
412-
ackv1alpha1.AnnotationAdoptionPolicy: "adopt",
424+
ackv1alpha1.AnnotationAdoptionPolicy: "adopt-or-create",
413425
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
414426
},
415427
})

0 commit comments

Comments
 (0)