@@ -1969,75 +1969,106 @@ func TestPromClientControllerSync_ClientCreation(t *testing.T) {
19691969
19701970 for _ , tc := range testCases {
19711971 t .Run (tc .name , func (t * testing.T ) {
1972- ctx , cancel := context .WithCancel (context .TODO ())
1973- defer cancel ()
1974- setup := setupPromClientControllerTest (ctx , tc .objects , newPrometheusConfig ())
1972+ for _ , setupMode := range []struct {
1973+ name string
1974+ setupFn func (context.Context , * testing.T , []runtime.Object ) * promClientController
1975+ }{
1976+ {
1977+ name : "running with prom reconciler directly" ,
1978+ setupFn : func (ctx context.Context , t * testing.T , objects []runtime.Object ) * promClientController {
1979+ setup := setupPromClientControllerTest (ctx , objects , newPrometheusConfig ())
1980+ return setup .ctrl
1981+ },
1982+ },
1983+ {
1984+ name : "running with full descheduler" ,
1985+ setupFn : func (ctx context.Context , t * testing.T , objects []runtime.Object ) * promClientController {
1986+ deschedulerPolicy := & api.DeschedulerPolicy {
1987+ MetricsProviders : []api.MetricsProvider {
1988+ {
1989+ Source : api .PrometheusMetrics ,
1990+ Prometheus : newPrometheusConfig (),
1991+ },
1992+ },
1993+ }
1994+ _ , descheduler , _ , _ := initDescheduler (t , ctx , initFeatureGates (), deschedulerPolicy , nil , false , objects ... )
1995+ return descheduler .promClientCtrl
1996+ },
1997+ },
1998+ } {
1999+ t .Run (setupMode .name , func (t * testing.T ) {
2000+ ctx , cancel := context .WithCancel (context .TODO ())
2001+ defer cancel ()
19752002
1976- // Set additional test-specific fields
1977- setup .ctrl .currentPrometheusAuthToken = tc .currentAuthToken
1978- if tc .currentAuthToken != "" {
1979- setup .ctrl .previousPrometheusClientTransport = & http.Transport {}
1980- }
2003+ ctrl := setupMode .setupFn (ctx , t , tc .objects )
19812004
1982- // Mock createPrometheusClient
1983- clientCreated := false
1984- if tc .createPrometheusClientFunc != nil {
1985- setup .ctrl .createPrometheusClient = func (url , token string ) (promapi.Client , * http.Transport , error ) {
1986- client , transport , err := tc .createPrometheusClientFunc (url , token )
1987- if err == nil {
1988- clientCreated = true
2005+ // Set additional test-specific fields
2006+ ctrl .currentPrometheusAuthToken = tc .currentAuthToken
2007+ if tc .currentAuthToken != "" {
2008+ ctrl .previousPrometheusClientTransport = & http.Transport {}
19892009 }
1990- return client , transport , err
1991- }
1992- }
19932010
1994- // Call sync
1995- err := setup .ctrl .sync ()
2011+ // Mock createPrometheusClient
2012+ clientCreated := false
2013+ if tc .createPrometheusClientFunc != nil {
2014+ ctrl .createPrometheusClient = func (url , token string ) (promapi.Client , * http.Transport , error ) {
2015+ client , transport , err := tc .createPrometheusClientFunc (url , token )
2016+ if err == nil {
2017+ clientCreated = true
2018+ }
2019+ return client , transport , err
2020+ }
2021+ }
19962022
1997- // Verify error expectations
1998- if tc .expectedErr != nil {
1999- if err == nil {
2000- t .Errorf ("Expected error %q but got none" , tc .expectedErr )
2001- } else if err .Error () != tc .expectedErr .Error () {
2002- t .Errorf ("Expected error %q but got %q" , tc .expectedErr , err .Error ())
2003- }
2004- } else {
2005- if err != nil {
2006- t .Errorf ("Expected no error but got: %v" , err )
2007- }
2008- }
2023+ // Call sync
2024+ err := ctrl .sync ()
20092025
2010- // Verify client creation expectations
2011- if tc .expectClientCreated && ! clientCreated {
2012- t .Errorf ("Expected prometheus client to be created but it wasn't" )
2013- }
2014- if ! tc .expectClientCreated && clientCreated {
2015- t .Errorf ("Expected prometheus client not to be created but it was" )
2016- }
2026+ // Verify error expectations
2027+ if tc .expectedErr != nil {
2028+ if err == nil {
2029+ t .Errorf ("Expected error %q but got none" , tc .expectedErr )
2030+ } else if err .Error () != tc .expectedErr .Error () {
2031+ t .Errorf ("Expected error %q but got %q" , tc .expectedErr , err .Error ())
2032+ }
2033+ } else {
2034+ if err != nil {
2035+ t .Errorf ("Expected no error but got: %v" , err )
2036+ }
2037+ }
20172038
2018- // Verify token cleared expectations
2019- if tc .expectCurrentTokenCleared && setup .ctrl .currentPrometheusAuthToken != "" {
2020- t .Errorf ("Expected current auth token to be cleared but it wasn't" )
2021- }
2039+ // Verify client creation expectations
2040+ if tc .expectClientCreated && ! clientCreated {
2041+ t .Errorf ("Expected prometheus client to be created but it wasn't" )
2042+ }
2043+ if ! tc .expectClientCreated && clientCreated {
2044+ t .Errorf ("Expected prometheus client not to be created but it was" )
2045+ }
20222046
2023- // Verify previous transport cleared expectations
2024- if tc .expectPreviousTransportCleared && setup . ctrl .previousPrometheusClientTransport != nil {
2025- t .Errorf ("Expected previous transport to be cleared but it wasn't" )
2026- }
2047+ // Verify token cleared expectations
2048+ if tc .expectCurrentTokenCleared && ctrl .currentPrometheusAuthToken != "" {
2049+ t .Errorf ("Expected current auth token to be cleared but it wasn't" )
2050+ }
20272051
2028- // Verify promClient cleared when secret not found
2029- if tc .expectPreviousTransportCleared && setup . ctrl .promClient != nil {
2030- t .Errorf ("Expected promClient to be cleared but it wasn't" )
2031- }
2052+ // Verify previous transport cleared expectations
2053+ if tc .expectPreviousTransportCleared && ctrl .previousPrometheusClientTransport != nil {
2054+ t .Errorf ("Expected previous transport to be cleared but it wasn't" )
2055+ }
20322056
2033- // Verify token updated when client created
2034- if tc .expectClientCreated && len (tc .objects ) > 0 {
2035- if secret , ok := tc .objects [0 ].(* v1.Secret ); ok && secret .Data != nil {
2036- expectedToken := string (secret .Data [prometheusAuthTokenSecretKey ])
2037- if setup .ctrl .currentPrometheusAuthToken != expectedToken {
2038- t .Errorf ("Expected current auth token to be %q but got %q" , expectedToken , setup .ctrl .currentPrometheusAuthToken )
2057+ // Verify promClient cleared when secret not found
2058+ if tc .expectPreviousTransportCleared && ctrl .promClient != nil {
2059+ t .Errorf ("Expected promClient to be cleared but it wasn't" )
20392060 }
2040- }
2061+
2062+ // Verify token updated when client created
2063+ if tc .expectClientCreated && len (tc .objects ) > 0 {
2064+ if secret , ok := tc .objects [0 ].(* v1.Secret ); ok && secret .Data != nil {
2065+ expectedToken := string (secret .Data [prometheusAuthTokenSecretKey ])
2066+ if ctrl .currentPrometheusAuthToken != expectedToken {
2067+ t .Errorf ("Expected current auth token to be %q but got %q" , expectedToken , ctrl .currentPrometheusAuthToken )
2068+ }
2069+ }
2070+ }
2071+ })
20412072 }
20422073 })
20432074 }
0 commit comments