...
1
16
17 package tests
18
19 import (
20 "testing"
21
22 "k8s.io/apimachinery/pkg/types"
23
24 "sigs.k8s.io/gateway-api/conformance/utils/http"
25 "sigs.k8s.io/gateway-api/conformance/utils/kubernetes"
26 "sigs.k8s.io/gateway-api/conformance/utils/suite"
27 )
28
29 func init() {
30 ConformanceTests = append(ConformanceTests, HTTPRouteTimeoutBackendRequest)
31 }
32
33
34
35
36
37 var HTTPRouteTimeoutBackendRequest = suite.ConformanceTest{
38 ShortName: "HTTPRouteTimeoutBackendRequest",
39 Description: "An HTTPRoute with backend request timeout",
40 Manifests: []string{"tests/httproute-timeout-backend-request.yaml"},
41 Features: []suite.SupportedFeature{
42 suite.SupportGateway,
43 suite.SupportHTTPRoute,
44 suite.SupportHTTPRouteBackendTimeout,
45 },
46 Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
47 ns := "gateway-conformance-infra"
48 routeNN := types.NamespacedName{Name: "backend-request-timeout", Namespace: ns}
49 gwNN := types.NamespacedName{Name: "same-namespace", Namespace: ns}
50 gwAddr := kubernetes.GatewayAndHTTPRoutesMustBeAccepted(t, suite.Client, suite.TimeoutConfig, suite.ControllerName, kubernetes.NewGatewayRef(gwNN), routeNN)
51 kubernetes.HTTPRouteMustHaveResolvedRefsConditionsTrue(t, suite.Client, suite.TimeoutConfig, routeNN, gwNN)
52
53 testCases := []http.ExpectedResponse{
54 {
55 Request: http.Request{Path: "/backend-timeout"},
56 Response: http.Response{StatusCode: 200},
57 Namespace: ns,
58 }, {
59 Request: http.Request{Path: "/backend-timeout?delay=1s"},
60 Response: http.Response{StatusCode: 504},
61 Namespace: ns,
62 },
63 }
64
65 for i := range testCases {
66
67
68 tc := testCases[i]
69 t.Run(tc.GetTestCaseName(i), func(t *testing.T) {
70 t.Parallel()
71 http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, gwAddr, tc)
72 })
73 }
74 },
75 }
76
View as plain text