Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions test/e2e/controller-manager/test_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,28 @@ func setupControllerManagerE2ETest(t *testing.T) (context.Context, *clientset.Cl
require.NoError(t, err, "Failed to create Kubernetes client")
return ctx, kthenaClient, kubeClient
}

func waitForWebhookReady(t *testing.T, kubeClient *kubernetes.Clientset, kthenaNamespace string) {
t.Helper()
t.Log("Waiting for webhook server to be ready")

ctx, cancel := context.WithTimeout(context.Background(), 1*time.Minute)
defer cancel()

err := wait.PollUntilContextCancel(ctx, 2*time.Second, true, func(ctx context.Context) (bool, error) {
ep, err := kubeClient.CoreV1().Endpoints(kthenaNamespace).Get(ctx, "kthena-controller-manager-webhook", metav1.GetOptions{})

if err != nil {
t.Logf("Webhook endpoint not ready yet: %v", err)
return false, nil
}
for _, subset := range ep.Subsets {
if len(subset.Addresses) > 0 {
return true, nil
}
}
Comment on lines +139 to +147
t.Log("Webhook has no ready addresses yet")
return false, nil
})
require.NoError(t, err, "Webhook did not become ready in time")
}
5 changes: 4 additions & 1 deletion test/e2e/controller-manager/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@ import (

// TestWebhook tests that the webhooks (validation and mutation) work as expected.
func TestWebhook(t *testing.T) {
ctx, kthenaClient, _ := setupControllerManagerE2ETest(t)
ctx, kthenaClient, kubeClient := setupControllerManagerE2ETest(t)

// waiting for webhook to be ready before running tests
waitForWebhookReady(t, kubeClient, kthenaNamespace)

testCases := []struct {
name string
Expand Down
Loading