mirror of
https://github.com/lukaszraczylo/traefikoidc.git
synced 2026-10-12 04:04:26 +00:00
32 lines
1.1 KiB
Go
32 lines
1.1 KiB
Go
package traefikoidc
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// TestRefreshCoordinatorShutdownIdempotent guards against a panic when the
|
|
// coordinator is shut down more than once. Close() on the same
|
|
// Authenticator can be reached via both the plugin-context cancellation hook
|
|
// (main.go) and the resource-manager teardown path, so RefreshCoordinator
|
|
// Shutdown must tolerate repeated calls — the previous close(rc.stopChan)
|
|
// panicked with 'close of closed channel' on the second call.
|
|
func TestRefreshCoordinatorShutdownIdempotent(t *testing.T) {
|
|
rc := NewRefreshCoordinator(DefaultRefreshCoordinatorConfig(), NewLogger(DefaultLogLevel))
|
|
defer func() {
|
|
if r := recover(); r != nil {
|
|
t.Fatalf("second Shutdown panicked: %v", r)
|
|
}
|
|
}()
|
|
rc.Shutdown()
|
|
rc.Shutdown()
|
|
}
|
|
|
|
// Ensure cleanup goroutine is running before shutdown completes so the
|
|
// shutdown path is actually exercised (stopChan close) and wg drained.
|
|
func TestRefreshCoordinatorShutdownStopsCleanup(t *testing.T) {
|
|
rc := NewRefreshCoordinator(DefaultRefreshCoordinatorConfig(), NewLogger(DefaultLogLevel))
|
|
time.Sleep(50 * time.Millisecond)
|
|
rc.Shutdown()
|
|
}
|