Skip to content

Commit a8f618c

Browse files
committed
test(TestPromClientControllerSync_ClientCreation): have prometheus client tests build an entire descheduler as well
1 parent 760baca commit a8f618c

File tree

1 file changed

+41
-10
lines changed

1 file changed

+41
-10
lines changed

pkg/descheduler/descheduler_test.go

Lines changed: 41 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1968,20 +1968,49 @@ func TestPromClientControllerSync_ClientCreation(t *testing.T) {
19681968

19691969
for _, tc := range testCases {
19701970
t.Run(tc.name, func(t *testing.T) {
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) {
19711999
ctx, cancel := context.WithCancel(context.TODO())
19722000
defer cancel()
1973-
setup := setupPromClientControllerTest(ctx, tc.objects, newPrometheusConfig())
2001+
2002+
ctrl := setupMode.setupFn(ctx, t, tc.objects)
19742003

19752004
// Set additional test-specific fields
1976-
setup.ctrl.currentPrometheusAuthToken = tc.currentAuthToken
2005+
ctrl.currentPrometheusAuthToken = tc.currentAuthToken
19772006
if tc.currentAuthToken != "" {
1978-
setup.ctrl.previousPrometheusClientTransport = &http.Transport{}
2007+
ctrl.previousPrometheusClientTransport = &http.Transport{}
19792008
}
19802009

19812010
// Mock createPrometheusClient
19822011
clientCreated := false
19832012
if tc.createPrometheusClientFunc != nil {
1984-
setup.ctrl.createPrometheusClient = func(url, token string) (promapi.Client, *http.Transport, error) {
2013+
ctrl.createPrometheusClient = func(url, token string) (promapi.Client, *http.Transport, error) {
19852014
client, transport, err := tc.createPrometheusClientFunc(url, token)
19862015
if err == nil {
19872016
clientCreated = true
@@ -1991,7 +2020,7 @@ func TestPromClientControllerSync_ClientCreation(t *testing.T) {
19912020
}
19922021

19932022
// Call sync
1994-
err := setup.ctrl.sync()
2023+
err := ctrl.sync()
19952024

19962025
// Verify error expectations
19972026
if tc.expectedErr != nil {
@@ -2015,29 +2044,31 @@ func TestPromClientControllerSync_ClientCreation(t *testing.T) {
20152044
}
20162045

20172046
// Verify token cleared expectations
2018-
if tc.expectCurrentTokenCleared && setup.ctrl.currentPrometheusAuthToken != "" {
2047+
if tc.expectCurrentTokenCleared && ctrl.currentPrometheusAuthToken != "" {
20192048
t.Errorf("Expected current auth token to be cleared but it wasn't")
20202049
}
20212050

20222051
// Verify previous transport cleared expectations
2023-
if tc.expectPreviousTransportCleared && setup.ctrl.previousPrometheusClientTransport != nil {
2052+
if tc.expectPreviousTransportCleared && ctrl.previousPrometheusClientTransport != nil {
20242053
t.Errorf("Expected previous transport to be cleared but it wasn't")
20252054
}
20262055

20272056
// Verify promClient cleared when secret not found
2028-
if tc.expectPreviousTransportCleared && setup.ctrl.promClient != nil {
2057+
if tc.expectPreviousTransportCleared && ctrl.promClient != nil {
20292058
t.Errorf("Expected promClient to be cleared but it wasn't")
20302059
}
20312060

20322061
// Verify token updated when client created
20332062
if tc.expectClientCreated && len(tc.objects) > 0 {
20342063
if secret, ok := tc.objects[0].(*v1.Secret); ok && secret.Data != nil {
20352064
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)
2065+
if ctrl.currentPrometheusAuthToken != expectedToken {
2066+
t.Errorf("Expected current auth token to be %q but got %q", expectedToken, ctrl.currentPrometheusAuthToken)
20382067
}
20392068
}
20402069
}
2070+
})
2071+
}
20412072
})
20422073
}
20432074
}

0 commit comments

Comments
 (0)