Skip to content

Commit c1212fd

Browse files
committed
test(TestPromClientControllerSync_ClientCreation): have prometheus client tests build an entire descheduler as well
1 parent 56953bd commit c1212fd

File tree

1 file changed

+89
-58
lines changed

1 file changed

+89
-58
lines changed

pkg/descheduler/descheduler_test.go

Lines changed: 89 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)