@@ -37,7 +37,7 @@ import (
3737 opv1a1 "github.com/l7mp/dcontroller/pkg/api/operator/v1alpha1"
3838 viewv1a1 "github.com/l7mp/dcontroller/pkg/api/view/v1alpha1"
3939 "github.com/l7mp/dcontroller/pkg/apiserver"
40- "github.com/l7mp/dcontroller/pkg/manager "
40+ "github.com/l7mp/dcontroller/pkg/composite "
4141 "github.com/l7mp/dcontroller/pkg/object"
4242 doperator "github.com/l7mp/dcontroller/pkg/operator"
4343 dreconciler "github.com/l7mp/dcontroller/pkg/reconciler"
4848 suite * testsuite.Suite
4949 // loglevel = 1
5050 // loglevel = -10
51- loglevel int8 = - 5
51+ loglevel int8 = - 10
5252 port int
5353 epCtrl * testEpCtrl
5454 errorCh chan error
@@ -86,7 +86,7 @@ func (r *testEpCtrl) Reconcile(ctx context.Context, req dreconciler.Request) (re
8686
8787var _ = Describe ("EndpointSlice controller test:" , Ordered , func () {
8888 Context ("When creating an endpointslice controller w/o gather" , Ordered , Label ("operator" ), func () {
89- var mgr manager. Manager
89+ var api * composite. API
9090 var svc1 , es1 object.Object
9191 var specs []map [string ]any
9292 var epNames []string
@@ -124,17 +124,18 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
124124 AfterAll (func () { cancel () })
125125
126126 It ("should create and start the API server" , func () {
127- suite .Log .Info ("creating a manager " )
127+ suite .Log .Info ("creating an API server " )
128128 var err error
129- mgr , err = manager .New (suite .Cfg , ctrl.Options {
130- Scheme : scheme ,
131- Logger : suite .Log ,
129+ api , err = composite .NewAPI (suite .Cfg , composite.Options {
130+ CacheOptions : composite.CacheOptions {Logger : suite .Log },
132131 })
133132 Expect (err ).NotTo (HaveOccurred ())
133+ Expect (api .Client ).NotTo (BeNil ())
134+ Expect (api .Client .(* composite.CompositeClient ).GetCache ()).NotTo (BeNil ())
134135
135136 suite .Log .Info ("creating the API server" )
136137 port = rand .IntN (5000 ) + (32768 ) //nolint:gosec
137- config , err := apiserver .NewDefaultConfig ("" , port , mgr . GetClient () , true , false , suite .Log )
138+ config , err := apiserver .NewDefaultConfig ("" , port , api . Client , true , false , suite .Log )
138139 Expect (err ).NotTo (HaveOccurred ())
139140 server , err = apiserver .NewAPIServer (config )
140141 Expect (err ).NotTo (HaveOccurred ())
@@ -154,6 +155,7 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
154155 eventCh = make (chan testutils.ReconcileRequest , 16 )
155156 errorCh = make (chan error , 16 )
156157 opts := doperator.Options {
158+ Cache : api .GetCache (),
157159 ErrorChannel : errorCh ,
158160 APIServer : server ,
159161 Logger : suite .Log ,
@@ -162,10 +164,11 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
162164 if _ , err := os .Stat (specFile ); errors .Is (err , os .ErrNotExist ) {
163165 specFile = filepath .Base (specFile )
164166 }
165- _ , err := doperator .NewFromFile (OperatorName , mgr , specFile , opts )
167+ op , err := doperator .NewFromFile (OperatorName , suite . Cfg , specFile , opts )
166168 Expect (err ).NotTo (HaveOccurred ())
167169
168170 suite .Log .Info ("creating the endpointslice controller" )
171+ mgr := op .GetManager ()
169172 epCtrl = & testEpCtrl {Client : mgr .GetClient (), log : suite .Log .WithName ("test-ep-ctrl" )}
170173 on := true
171174 c , err := controller .NewTyped ("test-ep-ctrl" , mgr , controller.TypedOptions [dreconciler.Request ]{
@@ -204,7 +207,7 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
204207 suite .Log .Info ("starting operator controller" )
205208 go func () {
206209 defer GinkgoRecover ()
207- err := mgr .Start (ctx )
210+ err := op .Start (ctx )
208211 Expect (err ).ToNot (HaveOccurred (), "failed to run controller" )
209212 }()
210213 })
@@ -311,14 +314,13 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
311314 Group : viewv1a1 .Group (OperatorName ),
312315 Version : viewv1a1 .Version ,
313316 Resource : "endpointview" ,
314- }).Namespace ("default" ).List (context . TODO () , metav1.ListOptions {})
317+ }).Namespace ("default" ).List (ctx , metav1.ListOptions {})
315318 Expect (err ).NotTo (HaveOccurred ())
316319 Expect (list .Items ).To (BeEmpty ())
317320 })
318321
319322 It ("should allow a watcher to be created" , func () {
320323 suite .Log .Info ("creating a watch" )
321-
322324 var err error
323325 watcher , err = dynamicClient .Resource (schema.GroupVersionResource {
324326 Group : viewv1a1 .Group (OperatorName ),
@@ -337,7 +339,7 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
337339 }
338340 specs = []map [string ]any {}
339341
340- for i := 0 ; i < 4 ; i ++ {
342+ for i := range 4 {
341343 obj , err := dynamicClient .Resource (gvr ).Namespace ("testnamespace" ).
342344 Get (ctx , epNames [i ], metav1.GetOptions {})
343345 Expect (err ).NotTo (HaveOccurred ())
@@ -489,6 +491,7 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
489491 })
490492
491493 Context ("When creating an endpointslice controller w/ gather" , Ordered , Label ("operator" ), func () {
494+ var api * composite.API
492495 var svc1 , es1 object.Object
493496 var specs []map [string ]any
494497 var ctx context.Context // context for the endpointslice controller
@@ -524,28 +527,47 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
524527 AfterAll (func () { cancel () })
525528
526529 It ("should create and start the controller" , func () {
527- // Create a manager
528- mgr , err := manager . New (suite .Cfg , ctrl .Options {
529- Scheme : scheme ,
530+ var err error
531+ api , err = composite . NewAPI (suite .Cfg , composite .Options {
532+ CacheOptions : composite. CacheOptions { Logger : suite . Log } ,
530533 })
531534 Expect (err ).NotTo (HaveOccurred ())
532535
533536 // Load the operator from file
534537 eventCh = make (chan testutils.ReconcileRequest , 16 )
535538 errorCh = make (chan error , 16 )
536539 opts := doperator.Options {
540+ Cache : api .GetCache (),
537541 ErrorChannel : errorCh ,
538542 Logger : suite .Log ,
539543 }
544+
545+ suite .Log .Info ("creating the API server" )
546+ port = rand .IntN (5000 ) + (32768 ) //nolint:gosec
547+ config , err := apiserver .NewDefaultConfig ("" , port , api .Client , true , false , suite .Log )
548+ Expect (err ).NotTo (HaveOccurred ())
549+ server , err = apiserver .NewAPIServer (config )
550+ Expect (err ).NotTo (HaveOccurred ())
551+
552+ go func () {
553+ defer GinkgoRecover ()
554+ err := server .Start (ctx )
555+ Expect (err ).NotTo (HaveOccurred ())
556+ }()
557+
558+ // Give server a moment to start
559+ time .Sleep (20 * time .Millisecond )
560+
540561 specFile := OperatorGatherSpec
541562 if _ , err := os .Stat (specFile ); errors .Is (err , os .ErrNotExist ) {
542563 specFile = filepath .Base (specFile )
543564 }
544- _ , err = doperator .NewFromFile (OperatorName , mgr , specFile , opts )
565+ op , err : = doperator .NewFromFile (OperatorName , suite . Cfg , specFile , opts )
545566 Expect (err ).NotTo (HaveOccurred ())
546567
547568 // Create the endpointslice controller
548- epCtrl = & testEpCtrl {Client : mgr .GetClient (), log : suite .Log .WithName ("test-endpointslice-ctrl" )}
569+ mgr := op .GetManager ()
570+ epCtrl = & testEpCtrl {Client : api .GetClient (), log : suite .Log .WithName ("test-endpointslice-ctrl" )}
549571 on := true
550572 c , err := controller .NewTyped ("test-ep-controller" , mgr , controller.TypedOptions [dreconciler.Request ]{
551573 SkipNameValidation : & on ,
@@ -575,10 +597,17 @@ var _ = Describe("EndpointSlice controller test:", Ordered, func() {
575597 }
576598 }()
577599
600+ suite .Log .Info ("starting API server cache (shared view storage)" )
601+ go func () {
602+ defer GinkgoRecover ()
603+ err := api .Cache .Start (ctx )
604+ Expect (err ).NotTo (HaveOccurred (), "failed to start API server cache" )
605+ }()
606+
578607 suite .Log .Info ("starting operator controller" )
579608 go func () {
580609 defer GinkgoRecover ()
581- err := mgr .Start (ctx )
610+ err := op .Start (ctx )
582611 Expect (err ).ToNot (HaveOccurred (), "failed to run controller" )
583612 }()
584613 })
0 commit comments