Skip to content

Commit 0121d63

Browse files
committed
test: enable feature gates for unit tests
Extra changes: * ensure updated = latest in update resource (if no delta) * changes to unit tests to ensure correct mocks
1 parent 2772651 commit 0121d63

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

pkg/runtime/reconciler.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,9 @@ func (r *resourceReconciler) Sync(
488488
if err != nil {
489489
return latest, err
490490
}
491-
} else if !isReadOnly {
491+
} else if isReadOnly {
492+
return latest, nil
493+
} else {
492494
if adoptionPolicy == AdoptionPolicy_AdoptOrCreate {
493495
// set adopt-or-create resource as managed before attempting
494496
// update
@@ -738,6 +740,7 @@ func (r *resourceReconciler) updateResource(
738740
defer func() {
739741
exit(err)
740742
}()
743+
updated = latest
741744

742745
// Ensure the resource is managed
743746
if err = r.failOnResourceUnmanaged(ctx, latest); err != nil {

pkg/runtime/reconciler_test.go

Lines changed: 29 additions & 8 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{}
@@ -243,7 +249,7 @@ func TestReconcilerReadOnlyResource(t *testing.T) {
243249
rm.On("IsSynced", ctx, latest).Return(true, nil)
244250
rmf, rd := managedResourceManagerFactoryMocks(desired, latest)
245251

246-
rm.On("LateInitialize", ctx, latest).Return(latest, nil)
252+
// rm.On("LateInitialize", ctx, latest).Return(latest, nil)
247253
rd.On("IsManaged", desired).Return(true)
248254
rd.On("Delta", desired, latest).Return(ackcompare.NewDelta())
249255
rd.On("Delta", latest, latest).Return(ackcompare.NewDelta())
@@ -266,28 +272,34 @@ func TestReconcilerAdoptResource(t *testing.T) {
266272
require := require.New(t)
267273

268274
ctx := context.TODO()
275+
adoptionFieldsString := "{\"arn\": \"my-adopt-book-arn\"}"
276+
adoptionFields := map[string]string{
277+
"arn": "my-adopt-book-arn",
278+
}
269279

270280
desired, _, metaObj := resourceMocks()
271281
desired.On("ReplaceConditions", []*ackv1alpha1.Condition{}).Return()
272282
metaObj.SetAnnotations(map[string]string{
273283
ackv1alpha1.AnnotationAdoptionPolicy: "adopt",
274-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
284+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
275285
})
276286

277287
latest, latestRTObj, _ := resourceMocks()
278288
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
279289
latest.On("MetaObject").Return(metav1.ObjectMeta{
280290
Annotations: map[string]string{
281291
ackv1alpha1.AnnotationAdoptionPolicy: "adopt",
282-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
292+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
283293
},
284294
})
295+
285296
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
286297
latest.On(
287298
"ReplaceConditions",
288299
mock.AnythingOfType("[]*v1alpha1.Condition"),
289300
).Return()
290301

302+
desired.On("PopulateResourceFromAnnotation", adoptionFields).Return(nil)
291303
rm := &ackmocks.AWSResourceManager{}
292304
rm.On("ResolveReferences", ctx, nil, desired).Return(
293305
desired, false, nil,
@@ -304,8 +316,10 @@ func TestReconcilerAdoptResource(t *testing.T) {
304316
rd.On("IsManaged", desired).Return(false)
305317
rd.On("Delta", desired, latest).Return(ackcompare.NewDelta())
306318
rd.On("Delta", latest, latest).Return(ackcompare.NewDelta())
307-
319+
308320
r, kc, scmd := reconcilerMocks(rmf)
321+
rm.On("FilterSystemTags", latest).Return()
322+
rd.On("MarkAdopted", latest).Return()
309323
rm.On("EnsureTags", ctx, desired, scmd).Return(nil)
310324
statusWriter := &ctrlrtclientmock.SubResourceWriter{}
311325
kc.On("Patch", ctx, latestRTObj, mock.AnythingOfType("*client.mergeFromPatch")).Return(nil)
@@ -325,12 +339,17 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
325339

326340
ctx := context.TODO()
327341

342+
adoptionFieldsString := "{\"arn\": \"my-adopt-book-arn\"}"
343+
adoptionFields := map[string]string{
344+
"arn": "my-adopt-book-arn",
345+
}
328346
desired, _, metaObj := resourceMocks()
329347
desired.On("ReplaceConditions", []*ackv1alpha1.Condition{}).Return()
330348
metaObj.SetAnnotations(map[string]string{
331349
ackv1alpha1.AnnotationAdoptionPolicy: "adopt-or-create",
332-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
350+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
333351
})
352+
desired.On("PopulateResourceFromAnnotation", adoptionFields).Return(nil)
334353

335354
ids := &ackmocks.AWSResourceIdentifiers{}
336355

@@ -339,8 +358,8 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
339358
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
340359
latest.On("MetaObject").Return(metav1.ObjectMeta{
341360
Annotations: map[string]string{
342-
ackv1alpha1.AnnotationAdoptionPolicy: "adopt",
343-
ackv1alpha1.AnnotationAdoptionFields: "{\"arn\": \"my-adopt-book-arn\"}",
361+
ackv1alpha1.AnnotationAdoptionPolicy: "adopt-or-create",
362+
ackv1alpha1.AnnotationAdoptionFields: adoptionFieldsString,
344363
},
345364
})
346365
latest.On("Conditions").Return([]*ackv1alpha1.Condition{})
@@ -366,6 +385,8 @@ func TestReconcilerAdoptOrCreateResource_Create(t *testing.T) {
366385
).Once()
367386
rm.On("IsSynced", ctx, latest).Return(true, nil)
368387
rmf, rd := managedResourceManagerFactoryMocks(desired, latest)
388+
rm.On("FilterSystemTags", latest).Return()
389+
rd.On("MarkAdopted", latest).Return()
369390

370391
rm.On("LateInitialize", ctx, latest).Return(latest, nil)
371392
rd.On("IsManaged", desired).Return(false).Once()

0 commit comments

Comments
 (0)