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