@@ -2074,28 +2074,9 @@ func TestPromClientControllerSync_ClientCreation(t *testing.T) {
20742074}
20752075
20762076func TestPromClientControllerSync_EventHandler (t * testing.T ) {
2077- ctx , cancel := context .WithCancel (context .Background ())
2078- defer cancel ()
2079-
2080- setup := setupPromClientControllerTest (ctx , nil , newPrometheusConfig ())
2081-
2082- // Track created clients to verify different instances
2083- var createdClients []promapi.Client
2084- var createdClientsMu sync.Mutex
2085- setup .ctrl .createPrometheusClient = func (url , token string ) (promapi.Client , * http.Transport , error ) {
2086- client := & mockPrometheusClient {name : "client-" + token }
2087- createdClientsMu .Lock ()
2088- createdClients = append (createdClients , client )
2089- createdClientsMu .Unlock ()
2090- return client , & http.Transport {}, nil
2091- }
2092-
2093- // Start the reconciler to process queue items
2094- go setup .ctrl .runAuthenticationSecretReconciler (ctx )
2095-
20962077 testCases := []struct {
20972078 name string
2098- operation func () error
2079+ operation func (ctx context. Context , fakeClient * fakeclientset. Clientset ) error
20992080 processItem bool
21002081 expectedPromClientSet bool
21012082 expectedCreatedClientsCount int
@@ -2106,7 +2087,7 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
21062087 // Check initial conditions
21072088 {
21082089 name : "no secret initially" ,
2109- operation : func () error { return nil },
2090+ operation : func (ctx context. Context , fakeClient * fakeclientset. Clientset ) error { return nil },
21102091 processItem : false ,
21112092 expectedPromClientSet : false ,
21122093 expectedCreatedClientsCount : 0 ,
@@ -2115,9 +2096,9 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
21152096 // Change conditions
21162097 {
21172098 name : "add secret" ,
2118- operation : func () error {
2099+ operation : func (ctx context. Context , fakeClient * fakeclientset. Clientset ) error {
21192100 secret := newPrometheusAuthSecret (withToken ("token-1" ))
2120- _ , err := setup . fakeClient .CoreV1 ().Secrets (secret .Namespace ).Create (ctx , secret , metav1.CreateOptions {})
2101+ _ , err := fakeClient .CoreV1 ().Secrets (secret .Namespace ).Create (ctx , secret , metav1.CreateOptions {})
21212102 return err
21222103 },
21232104 processItem : true ,
@@ -2127,9 +2108,9 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
21272108 },
21282109 {
21292110 name : "update secret" ,
2130- operation : func () error {
2111+ operation : func (ctx context. Context , fakeClient * fakeclientset. Clientset ) error {
21312112 secret := newPrometheusAuthSecret (withToken ("token-2" ))
2132- _ , err := setup . fakeClient .CoreV1 ().Secrets (secret .Namespace ).Update (ctx , secret , metav1.UpdateOptions {})
2113+ _ , err := fakeClient .CoreV1 ().Secrets (secret .Namespace ).Update (ctx , secret , metav1.UpdateOptions {})
21332114 return err
21342115 },
21352116 processItem : true ,
@@ -2140,9 +2121,9 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
21402121 },
21412122 {
21422123 name : "delete secret" ,
2143- operation : func () error {
2124+ operation : func (ctx context. Context , fakeClient * fakeclientset. Clientset ) error {
21442125 secret := newPrometheusAuthSecret (withToken ("token-2" ))
2145- return setup . fakeClient .CoreV1 ().Secrets (secret .Namespace ).Delete (ctx , secret .Name , metav1.DeleteOptions {})
2126+ return fakeClient .CoreV1 ().Secrets (secret .Namespace ).Delete (ctx , secret .Name , metav1.DeleteOptions {})
21462127 },
21472128 processItem : true ,
21482129 expectedPromClientSet : false ,
@@ -2152,9 +2133,61 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
21522133 },
21532134 }
21542135
2136+ for _ , setupMode := range []struct {
2137+ name string
2138+ init func (t * testing.T , ctx context.Context ) (ctrl * promClientController , fakeClient * fakeclientset.Clientset )
2139+ }{
2140+ {
2141+ name : "running with prom reconciler directly" ,
2142+ init : func (t * testing.T , ctx context.Context ) (ctrl * promClientController , fakeClient * fakeclientset.Clientset ) {
2143+ setup := setupPromClientControllerTest (ctx , nil , newPrometheusConfig ())
2144+
2145+ // Start the reconciler to process queue items
2146+ go setup .ctrl .runAuthenticationSecretReconciler (ctx )
2147+
2148+ return setup .ctrl , setup .fakeClient
2149+ },
2150+ },
2151+ {
2152+ name : "running with full descheduler" ,
2153+ init : func (t * testing.T , ctx context.Context ) (ctrl * promClientController , fakeClient * fakeclientset.Clientset ) {
2154+ prometheusConfig := newPrometheusConfig ()
2155+ deschedulerPolicy := & api.DeschedulerPolicy {
2156+ MetricsProviders : []api.MetricsProvider {
2157+ {
2158+ Source : api .PrometheusMetrics ,
2159+ Prometheus : prometheusConfig ,
2160+ },
2161+ },
2162+ }
2163+
2164+ _ , descheduler , _ , client := initDescheduler (t , ctx , initFeatureGates (), deschedulerPolicy , nil , false )
2165+ // The reconciler is already started by initDescheduler via bootstrapDescheduler
2166+
2167+ return descheduler .promClientCtrl , client
2168+ },
2169+ },
2170+ } {
2171+ t .Run (setupMode .name , func (t * testing.T ) {
2172+ ctx , cancel := context .WithCancel (context .Background ())
2173+ defer cancel ()
2174+
2175+ ctrl , fakeClient := setupMode .init (t , ctx )
2176+
2177+ // Track created clients to verify different instances
2178+ var createdClients []promapi.Client
2179+ var createdClientsMu sync.Mutex
2180+ ctrl .createPrometheusClient = func (url , token string ) (promapi.Client , * http.Transport , error ) {
2181+ client := & mockPrometheusClient {name : "client-" + token }
2182+ createdClientsMu .Lock ()
2183+ createdClients = append (createdClients , client )
2184+ createdClientsMu .Unlock ()
2185+ return client , & http.Transport {}, nil
2186+ }
2187+
21552188 for _ , tc := range testCases {
21562189 t .Run (tc .name , func (t * testing.T ) {
2157- if err := tc .operation (); err != nil {
2190+ if err := tc .operation (ctx , fakeClient ); err != nil {
21582191 t .Fatalf ("Failed to execute operation: %v" , err )
21592192 }
21602193
@@ -2163,11 +2196,11 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
21632196 err := wait .PollUntilContextTimeout (ctx , 10 * time .Millisecond , 2 * time .Second , true , func (ctx context.Context ) (bool , error ) {
21642197 // Check if all expected conditions are met
21652198 if tc .expectedPromClientSet {
2166- if setup . ctrl .promClient == nil {
2199+ if ctrl .promClient == nil {
21672200 return false , nil
21682201 }
21692202 } else {
2170- if setup . ctrl .promClient != nil {
2203+ if ctrl .promClient != nil {
21712204 return false , nil
21722205 }
21732206 }
@@ -2179,12 +2212,12 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
21792212 return false , nil
21802213 }
21812214
2182- if setup . ctrl .currentPrometheusAuthToken != tc .expectedCurrentToken {
2215+ if ctrl .currentPrometheusAuthToken != tc .expectedCurrentToken {
21832216 return false , nil
21842217 }
21852218
21862219 if tc .expectedPreviousTransportCleared {
2187- if setup . ctrl .previousPrometheusClientTransport != nil {
2220+ if ctrl .previousPrometheusClientTransport != nil {
21882221 return false , nil
21892222 }
21902223 }
@@ -2202,12 +2235,12 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
22022235
22032236 // Validate post-conditions
22042237 if tc .expectedPromClientSet {
2205- if setup . ctrl .promClient == nil {
2238+ if ctrl .promClient == nil {
22062239 t .Error ("Expected prometheus client to be set, but it was nil" )
22072240 }
22082241 } else {
2209- if setup . ctrl .promClient != nil {
2210- t .Errorf ("Expected prometheus client to be nil, but got: %v" , setup . ctrl .promClient )
2242+ if ctrl .promClient != nil {
2243+ t .Errorf ("Expected prometheus client to be nil, but got: %v" , ctrl .promClient )
22112244 }
22122245 }
22132246
@@ -2218,12 +2251,12 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
22182251 t .Errorf ("Expected %d clients created, but got %d" , tc .expectedCreatedClientsCount , len (createdClients ))
22192252 }
22202253
2221- if setup . ctrl .currentPrometheusAuthToken != tc .expectedCurrentToken {
2222- t .Errorf ("Expected current token to be %q, got %q" , tc .expectedCurrentToken , setup . ctrl .currentPrometheusAuthToken )
2254+ if ctrl .currentPrometheusAuthToken != tc .expectedCurrentToken {
2255+ t .Errorf ("Expected current token to be %q, got %q" , tc .expectedCurrentToken , ctrl .currentPrometheusAuthToken )
22232256 }
22242257
22252258 if tc .expectedPreviousTransportCleared {
2226- if setup . ctrl .previousPrometheusClientTransport != nil {
2259+ if ctrl .previousPrometheusClientTransport != nil {
22272260 t .Error ("Expected previous transport to be cleared, but it was set" )
22282261 }
22292262 }
@@ -2237,6 +2270,8 @@ func TestPromClientControllerSync_EventHandler(t *testing.T) {
22372270 }
22382271 })
22392272 }
2273+ })
2274+ }
22402275}
22412276
22422277func TestReconcileInClusterSAToken (t * testing.T ) {
0 commit comments