Skip to content

Commit 232308d

Browse files
committed
fake reconciler for catalog sync tests
Signed-off-by: Ankita Thomas <[email protected]>
1 parent 54b6ab2 commit 232308d

File tree

3 files changed

+30
-43
lines changed

3 files changed

+30
-43
lines changed

cmd/manager/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ func main() {
9393
os.Exit(1)
9494
}
9595

96-
if err = (&controllers.OperatorReconciler{
96+
if err = controllers.SetupWithManager(&controllers.OperatorReconciler{
9797
Client: mgr.GetClient(),
9898
Scheme: mgr.GetScheme(),
9999
Resolver: resolution.NewOperatorResolver(mgr.GetClient(), entitysources.NewCatalogdEntitySource(mgr.GetClient())),
100-
}).SetupWithManager(mgr); err != nil {
100+
}, mgr); err != nil {
101101
setupLog.Error(err, "unable to create controller", "controller", "Operator")
102102
os.Exit(1)
103103
}

internal/controllers/operator_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func (r *OperatorReconciler) generateExpectedBundleDeployment(o operatorsv1alpha
289289
}
290290

291291
// SetupWithManager sets up the controller with the Manager.
292-
func (r *OperatorReconciler) SetupWithManager(mgr ctrl.Manager) error {
292+
func SetupWithManager(r reconcile.Reconciler, mgr ctrl.Manager) error {
293293
err := ctrl.NewControllerManagedBy(mgr).
294294
For(&operatorsv1alpha1.Operator{}).
295295
Watches(source.NewKindWithCache(&catalogd.Catalog{}, mgr.GetCache()),

internal/controllers/operator_controller_test.go

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ package controllers_test
33
import (
44
"context"
55
"fmt"
6-
"strings"
7-
"time"
86

9-
"github.com/go-logr/logr/funcr"
107
. "github.com/onsi/ginkgo/v2"
118
. "github.com/onsi/gomega"
129
catalogd "github.com/operator-framework/catalogd/pkg/apis/core/v1beta1"
@@ -25,7 +22,7 @@ import (
2522
ctrl "sigs.k8s.io/controller-runtime"
2623
"sigs.k8s.io/controller-runtime/pkg/client"
2724
"sigs.k8s.io/controller-runtime/pkg/client/fake"
28-
"sigs.k8s.io/controller-runtime/pkg/log"
25+
"sigs.k8s.io/controller-runtime/pkg/reconcile"
2926
)
3027

3128
var _ = Describe("Operator Controller Test", func() {
@@ -1023,25 +1020,24 @@ var _ = Describe("Operator Controller Test", func() {
10231020
})
10241021
})
10251022
When("a catalog changes on cluster", func() {
1026-
var testLogs, opNames []string
1023+
var reconcileReqs, opNames []string
10271024
var cancel context.CancelFunc
10281025
var logCount int
10291026
BeforeEach(func() {
1030-
l := funcr.New(func(prefix, args string) {
1031-
if prefix == "operator-controller" &&
1032-
strings.Contains(args, `"controller"="operator"`) &&
1033-
strings.Contains(args, `"msg"="ending"`) {
1034-
// filter for only relevant logs
1035-
testLogs = append(testLogs, fmt.Sprintf("%s", args))
1036-
}
1037-
}, funcr.Options{Verbosity: 1})
1038-
mgr, err := ctrl.NewManager(cfg, ctrl.Options{Scheme: sch, Logger: l})
1027+
mgr, err := ctrl.NewManager(cfg, ctrl.Options{Scheme: sch})
10391028
Expect(err).To(BeNil())
10401029

1041-
err = reconciler.SetupWithManager(mgr)
1030+
var fakeReconciler reconcile.Func = func(_ context.Context, request ctrl.Request) (ctrl.Result, error) {
1031+
reconcileReqs = append(reconcileReqs, request.Name)
1032+
fmt.Println("RECONCILE", request.Name)
1033+
return ctrl.Result{}, nil
1034+
}
1035+
1036+
err = controllers.SetupWithManager(fakeReconciler, mgr)
10421037
Expect(err).To(BeNil())
1038+
10431039
var mgrCtx context.Context
1044-
mgrCtx, cancel = context.WithCancel(log.IntoContext(ctx, l))
1040+
mgrCtx, cancel = context.WithCancel(ctx)
10451041

10461042
go func() {
10471043
err := mgr.Start(mgrCtx)
@@ -1056,51 +1052,42 @@ var _ = Describe("Operator Controller Test", func() {
10561052
}
10571053
Eventually(func(g Gomega) {
10581054
By("verifying initial reconcile logs for operator creation")
1059-
g.Expect(len(testLogs) >= len(opNames)).To(BeTrue())
1060-
for _, p := range opNames {
1061-
g.Expect(testLogs[len(testLogs)-len(opNames):]).To(ContainElement(ContainSubstring(fmt.Sprintf("\"Operator\"={\"name\":\"%s\"}", p))))
1062-
}
1063-
logCount = len(testLogs)
1064-
}).WithTimeout(2 * time.Second).WithPolling(1 * time.Second).Should(Succeed())
1055+
g.Expect(len(reconcileReqs) >= len(opNames)).To(BeTrue())
1056+
g.Expect(reconcileReqs).To(ContainElements(opNames))
1057+
logCount = len(reconcileReqs)
1058+
}).Should(Succeed())
10651059
})
1066-
10671060
It("reconciles all affected operators on cluster", func() {
10681061
By("creating a new catalog")
10691062
catalog := &catalogd.Catalog{ObjectMeta: metav1.ObjectMeta{Name: "t"}, Spec: catalogd.CatalogSpec{Source: catalogd.CatalogSource{Type: catalogd.SourceTypeImage, Image: &catalogd.ImageSource{}}}}
10701063
err := cl.Create(ctx, catalog)
10711064
Expect(err).To(BeNil())
10721065
Eventually(func(g Gomega) {
10731066
By("verifying operator reconcile logs on catalog create")
1074-
g.Expect(testLogs).To(HaveLen(logCount + len(opNames)))
1075-
for _, p := range opNames {
1076-
g.Expect(testLogs[len(testLogs)-len(opNames):]).To(ContainElement(ContainSubstring(fmt.Sprintf("\"Operator\"={\"name\":\"%s\"}", p))))
1077-
}
1078-
logCount = len(testLogs)
1079-
}).WithTimeout(2 * time.Second).WithPolling(1 * time.Second).Should(Succeed())
1067+
g.Expect(reconcileReqs).To(HaveLen(logCount + len(opNames)))
1068+
g.Expect(reconcileReqs[len(reconcileReqs)-len(opNames):]).To(ConsistOf(opNames))
1069+
logCount = len(reconcileReqs)
1070+
}).Should(Succeed())
10801071

10811072
By("updating a catalog")
10821073
catalog.Spec.Source.Image.Ref = "s"
10831074
err = cl.Update(ctx, catalog)
10841075
Expect(err).To(BeNil())
10851076
Eventually(func(g Gomega) {
10861077
By("verifying operator reconcile logs on catalog update")
1087-
g.Expect(testLogs).To(HaveLen(logCount + len(opNames)))
1088-
for _, p := range opNames {
1089-
g.Expect(testLogs[len(testLogs)-len(opNames):]).To(ContainElement(ContainSubstring(fmt.Sprintf("\"Operator\"={\"name\":\"%s\"}", p))))
1090-
}
1091-
logCount = len(testLogs)
1092-
}).WithTimeout(2 * time.Second).WithPolling(1 * time.Second).Should(Succeed())
1078+
g.Expect(reconcileReqs).To(HaveLen(logCount + len(opNames)))
1079+
g.Expect(reconcileReqs[len(reconcileReqs)-len(opNames):]).To(ConsistOf(opNames))
1080+
logCount = len(reconcileReqs)
1081+
}).Should(Succeed())
10931082

10941083
By("deleting a catalog")
10951084
err = cl.Delete(ctx, catalog)
10961085
Expect(err).To(BeNil())
10971086
Eventually(func(g Gomega) {
10981087
By("verifying operator reconcile logs on catalog delete")
1099-
g.Expect(testLogs).To(HaveLen(logCount + len(opNames)))
1100-
for _, p := range opNames {
1101-
g.Expect(testLogs[len(testLogs)-len(opNames):]).To(ContainElement(ContainSubstring(fmt.Sprintf("\"Operator\"={\"name\":\"%s\"}", p))))
1102-
}
1103-
}).WithTimeout(2 * time.Second).WithPolling(1 * time.Second).Should(Succeed())
1088+
g.Expect(reconcileReqs).To(HaveLen(logCount + len(opNames)))
1089+
g.Expect(reconcileReqs[len(reconcileReqs)-len(opNames):]).To(ConsistOf(opNames))
1090+
}).Should(Succeed())
11041091
})
11051092
AfterEach(func() {
11061093
for _, p := range opNames {

0 commit comments

Comments
 (0)