diff --git a/test/e2e/conformance/base/manifests.yaml b/test/e2e/conformance/base/manifests.yaml index 1fc59515c..00d3d29d2 100644 --- a/test/e2e/conformance/base/manifests.yaml +++ b/test/e2e/conformance/base/manifests.yaml @@ -224,6 +224,52 @@ spec: cpu: 10m --- apiVersion: v1 +kind: Service +metadata: + name: infra-backend-echo-body-v2 + namespace: higress-conformance-infra +spec: + selector: + app: infra-backend-echo-body-v2 + ports: + - protocol: TCP + port: 8080 + targetPort: 3000 +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: infra-backend-echo-body-v2 + namespace: higress-conformance-infra + labels: + app: infra-backend-echo-body-v2 +spec: + replicas: 2 + selector: + matchLabels: + app: infra-backend-echo-body-v2 + template: + metadata: + labels: + app: infra-backend-echo-body-v2 + spec: + containers: + - name: infra-backend-echo-body-v2 + image: higress-registry.cn-hangzhou.cr.aliyuncs.com/higress/echo-server:v1.0 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + resources: + requests: + cpu: 10m +--- +apiVersion: v1 kind: Namespace metadata: name: higress-conformance-app-backend diff --git a/test/e2e/conformance/tests/httproute-limit.go b/test/e2e/conformance/tests/httproute-limit.go index 714b06688..51983c1e6 100644 --- a/test/e2e/conformance/tests/httproute-limit.go +++ b/test/e2e/conformance/tests/httproute-limit.go @@ -69,7 +69,7 @@ func TestRps10(t *testing.T, gwAddr string, client *http.Client) { }, } - result, err := ParallelRunner(10, 2000, req, client) + result, err := ParallelRunner(10, 3000, req, client) if err != nil { t.Fatal(err) } @@ -88,7 +88,7 @@ func TestRps50(t *testing.T, gwAddr string, client *http.Client) { }, } - result, err := ParallelRunner(10, 2000, req, client) + result, err := ParallelRunner(10, 5000, req, client) if err != nil { t.Fatal(err) } diff --git a/test/e2e/conformance/tests/httproute-timeout.go b/test/e2e/conformance/tests/httproute-timeout.go new file mode 100644 index 000000000..8086e0067 --- /dev/null +++ b/test/e2e/conformance/tests/httproute-timeout.go @@ -0,0 +1,79 @@ +// Copyright (c) 2022 Alibaba Group Holding Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package tests + +import ( + "github.com/alibaba/higress/test/e2e/conformance/utils/http" + "github.com/alibaba/higress/test/e2e/conformance/utils/suite" + "testing" +) + +func init() { + Register(HttpTimeout) +} + +var HttpTimeout = suite.ConformanceTest{ + ShortName: "HttpTimeout", + Description: "The Ingress in the higress-conformance-infra namespace uses timeout annotation", + Manifests: []string{"tests/httproute-timeout.yaml"}, + Features: []suite.SupportedFeature{suite.HTTPConformanceFeature}, + Test: func(t *testing.T, suite *suite.ConformanceTestSuite) { + testcases := []http.Assertion{ + { + Meta: http.AssertionMeta{ + TestCaseName: "case 1: backend response is delayed for 5s", + CompareTarget: http.CompareTargetResponse, + }, + Request: http.AssertionRequest{ + ActualRequest: http.Request{ + Host: "timeout.higress.io", + Path: "/timeout", + Headers: map[string]string{"X-Delay": "6000", "content-type": "application/json"}, + }, + }, + Response: http.AssertionResponse{ + ExpectedResponse: http.Response{ + StatusCode: 504, + }, + }, + }, + { + Meta: http.AssertionMeta{ + TestCaseName: "case 2: backend response is delayed for 1s", + CompareTarget: http.CompareTargetResponse, + }, + Request: http.AssertionRequest{ + ActualRequest: http.Request{ + Host: "timeout.higress.io", + Path: "/timeout", + Headers: map[string]string{"X-Delay": "1000", "content-type": "application/json"}, + }, + }, + Response: http.AssertionResponse{ + ExpectedResponse: http.Response{ + StatusCode: 200, + }, + }, + }, + } + + t.Run("HttpRedirectAsHttps", func(t *testing.T) { + for _, testcase := range testcases { + http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, suite.GatewayAddress, testcase) + } + }) + + }, +} diff --git a/test/e2e/conformance/tests/httproute-timeout.yaml b/test/e2e/conformance/tests/httproute-timeout.yaml new file mode 100644 index 000000000..303720ba6 --- /dev/null +++ b/test/e2e/conformance/tests/httproute-timeout.yaml @@ -0,0 +1,34 @@ +# Copyright (c) 2022 Alibaba Group Holding Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + higress.io/timeout: "5" + name: higress-http-timeout-5s + namespace: higress-conformance-infra +spec: + ingressClassName: higress + rules: + - host: timeout.higress.io + http: + paths: + - path: /timeout + pathType: Exact + backend: + service: + name: infra-backend-echo-body-v2 + port: + number: 8080 \ No newline at end of file