Skip to content

Commit a3078a6

Browse files
committed
add webhook readiness checks
1 parent fed67d7 commit a3078a6

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

test/conversion_test.go

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,58 @@ func TestTaskRunCRDConversion(t *testing.T) {
785785
knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf)
786786
defer tearDown(ctx, t, c, namespace)
787787

788+
// Wait for webhooks to be ready after controller startup with cache injection overhead
789+
t.Logf("Waiting for CRD webhook conversion to be ready...")
790+
for _, kind := range []schema.GroupKind{v1.Kind("taskruns")} {
791+
err := wait.PollUntilContextTimeout(ctx, 500*time.Millisecond, 10*time.Second, true, func(ctx context.Context) (bool, error) {
792+
gotCRD, err := c.ApixClient.ApiextensionsV1().CustomResourceDefinitions().Get(ctx, kind.String(), metav1.GetOptions{})
793+
if err != nil {
794+
t.Logf("CRD %s not ready yet: %v", kind, err)
795+
return false, nil
796+
}
797+
798+
if gotCRD.Spec.Conversion == nil {
799+
t.Logf("CRD %s conversion not configured yet", kind)
800+
return false, nil
801+
}
802+
if gotCRD.Spec.Conversion.Strategy != apixv1.WebhookConverter {
803+
t.Logf("CRD %s conversion strategy not ready: got %s, want %s", kind, gotCRD.Spec.Conversion.Strategy, apixv1.WebhookConverter)
804+
return false, nil
805+
}
806+
return true, nil
807+
})
808+
if err != nil {
809+
t.Fatalf("Timed out waiting for CRD %s webhook conversion to be ready: %v", kind, err)
810+
}
811+
t.Logf("CRD %s webhook conversion is ready", kind)
812+
}
813+
814+
// Wait for webhooks to be ready after controller startup with cache injection overhead
815+
t.Logf("Waiting for CRD webhook conversion to be ready...")
816+
for _, kind := range []schema.GroupKind{v1.Kind("taskruns")} {
817+
err := wait.PollUntilContextTimeout(ctx, 500*time.Millisecond, 10*time.Second, true, func(ctx context.Context) (bool, error) {
818+
gotCRD, err := c.ApixClient.ApiextensionsV1().CustomResourceDefinitions().Get(ctx, kind.String(), metav1.GetOptions{})
819+
if err != nil {
820+
t.Logf("CRD %s not ready yet: %v", kind, err)
821+
return false, nil
822+
}
823+
824+
if gotCRD.Spec.Conversion == nil {
825+
t.Logf("CRD %s conversion not configured yet", kind)
826+
return false, nil
827+
}
828+
if gotCRD.Spec.Conversion.Strategy != apixv1.WebhookConverter {
829+
t.Logf("CRD %s conversion strategy not ready: got %s, want %s", kind, gotCRD.Spec.Conversion.Strategy, apixv1.WebhookConverter)
830+
return false, nil
831+
}
832+
return true, nil
833+
})
834+
if err != nil {
835+
t.Fatalf("Timed out waiting for CRD %s webhook conversion to be ready: %v", kind, err)
836+
}
837+
t.Logf("CRD %s webhook conversion is ready", kind)
838+
}
839+
788840
v1beta1TaskRunName := helpers.ObjectNameForTest(t)
789841
v1beta1TaskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(v1beta1TaskRunYaml, v1beta1TaskRunName, namespace))
790842
v1TaskRunExpected := parse.MustParseV1TaskRun(t, fmt.Sprintf(v1TaskRunExpectedYaml, v1beta1TaskRunName, namespace, v1beta1TaskRunName))
@@ -932,6 +984,58 @@ func TestPipelineRunCRDConversion(t *testing.T) {
932984
knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf)
933985
defer tearDown(ctx, t, c, namespace)
934986

987+
// Wait for webhooks to be ready after controller startup with cache injection overhead
988+
t.Logf("Waiting for CRD webhook conversion to be ready...")
989+
for _, kind := range []schema.GroupKind{v1.Kind("pipelineruns")} {
990+
err := wait.PollUntilContextTimeout(ctx, 500*time.Millisecond, 10*time.Second, true, func(ctx context.Context) (bool, error) {
991+
gotCRD, err := c.ApixClient.ApiextensionsV1().CustomResourceDefinitions().Get(ctx, kind.String(), metav1.GetOptions{})
992+
if err != nil {
993+
t.Logf("CRD %s not ready yet: %v", kind, err)
994+
return false, nil
995+
}
996+
997+
if gotCRD.Spec.Conversion == nil {
998+
t.Logf("CRD %s conversion not configured yet", kind)
999+
return false, nil
1000+
}
1001+
if gotCRD.Spec.Conversion.Strategy != apixv1.WebhookConverter {
1002+
t.Logf("CRD %s conversion strategy not ready: got %s, want %s", kind, gotCRD.Spec.Conversion.Strategy, apixv1.WebhookConverter)
1003+
return false, nil
1004+
}
1005+
return true, nil
1006+
})
1007+
if err != nil {
1008+
t.Fatalf("Timed out waiting for CRD %s webhook conversion to be ready: %v", kind, err)
1009+
}
1010+
t.Logf("CRD %s webhook conversion is ready", kind)
1011+
}
1012+
1013+
// Wait for webhooks to be ready after controller startup with cache injection overhead
1014+
t.Logf("Waiting for CRD webhook conversion to be ready...")
1015+
for _, kind := range []schema.GroupKind{v1.Kind("pipelineruns")} {
1016+
err := wait.PollUntilContextTimeout(ctx, 500*time.Millisecond, 10*time.Second, true, func(ctx context.Context) (bool, error) {
1017+
gotCRD, err := c.ApixClient.ApiextensionsV1().CustomResourceDefinitions().Get(ctx, kind.String(), metav1.GetOptions{})
1018+
if err != nil {
1019+
t.Logf("CRD %s not ready yet: %v", kind, err)
1020+
return false, nil
1021+
}
1022+
1023+
if gotCRD.Spec.Conversion == nil {
1024+
t.Logf("CRD %s conversion not configured yet", kind)
1025+
return false, nil
1026+
}
1027+
if gotCRD.Spec.Conversion.Strategy != apixv1.WebhookConverter {
1028+
t.Logf("CRD %s conversion strategy not ready: got %s, want %s", kind, gotCRD.Spec.Conversion.Strategy, apixv1.WebhookConverter)
1029+
return false, nil
1030+
}
1031+
return true, nil
1032+
})
1033+
if err != nil {
1034+
t.Fatalf("Timed out waiting for CRD %s webhook conversion to be ready: %v", kind, err)
1035+
}
1036+
t.Logf("CRD %s webhook conversion is ready", kind)
1037+
}
1038+
9351039
v1beta1ToV1PipelineRunName := helpers.ObjectNameForTest(t)
9361040
v1beta1PipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(v1beta1PipelineRunYaml, v1beta1ToV1PipelineRunName, namespace))
9371041
v1PipelineRunExpected := parse.MustParseV1PipelineRun(t, fmt.Sprintf(v1PipelineRunExpectedYaml, v1beta1ToV1PipelineRunName, namespace, v1beta1ToV1PipelineRunName))

0 commit comments

Comments
 (0)