Add test cases for http2rpc (#662)

This commit is contained in:
Hinsteny Hisoka
2023-12-09 18:05:38 +08:00
committed by GitHub
parent 17794cef2a
commit 4426f18a84
8 changed files with 314 additions and 10 deletions

View File

@@ -22,13 +22,15 @@ import (
)
func init() {
Register(HTTPRouteHttp2Rpc)
Register(HTTPRouteHttp2RpcCreate)
Register(HTTPRouteHttp2RpcUpdate)
Register(HTTPRouteHttp2RpcDelete)
}
var HTTPRouteHttp2Rpc = suite.ConformanceTest{
ShortName: "HTTPRouteHttp2Rpc",
Description: "The Ingress in the higress-conformance-infra namespace uses the http2rpc.",
Manifests: []string{"tests/httproute-http2rpc.yaml"},
var HTTPRouteHttp2RpcCreate = suite.ConformanceTest{
ShortName: "HTTPRouteHttp2RpcCreate",
Description: "The Ingress in the higress-conformance-infra namespace test create the http2rpc.",
Manifests: []string{"tests/httproute-http2rpc-0-create.yaml"},
Features: []suite.SupportedFeature{suite.DubboConformanceFeature, suite.NacosConformanceFeature},
Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
testcases := []http.Assertion{
@@ -55,3 +57,141 @@ var HTTPRouteHttp2Rpc = suite.ConformanceTest{
})
},
}
var HTTPRouteHttp2RpcUpdate = suite.ConformanceTest{
ShortName: "HTTPRouteHttp2RpcUpdate",
Description: "The Ingress in the higress-conformance-infra namespace test delete the http2rpc.",
Manifests: []string{"tests/httproute-http2rpc-1-update.yaml"},
Features: []suite.SupportedFeature{suite.DubboConformanceFeature, suite.NacosConformanceFeature},
NotCleanup: true,
Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
testcases := []http.Assertion{
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/dubbo/hello?name=higress",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 200,
},
},
},
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/dubbo/hello_update?name=higress",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 404,
},
},
},
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/dubbo/health/readiness?type=readiness",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 200,
},
},
},
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/dubbo/health/liveness?type=liveness",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 200,
},
},
},
}
t.Run("HTTPRoute uses HTTP to RPC", func(t *testing.T) {
for _, testcase := range testcases {
http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, suite.GatewayAddress, testcase)
}
})
},
}
var HTTPRouteHttp2RpcDelete = suite.ConformanceTest{
ShortName: "HTTPRouteHttp2RpcDelete",
Description: "The Ingress in the higress-conformance-infra namespace test delete the http2rpc.",
PreDeleteRs: []string{"tests/httproute-http2rpc-2-delete.yaml"},
Features: []suite.SupportedFeature{suite.DubboConformanceFeature, suite.NacosConformanceFeature},
Test: func(t *testing.T, suite *suite.ConformanceTestSuite) {
testcases := []http.Assertion{
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/dubbo/hello_update?name=higress",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 404,
},
},
},
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/dubbo/health/readiness?type=readiness",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 200,
},
},
},
{
Request: http.AssertionRequest{
ActualRequest: http.Request{
Host: "foo.com",
Path: "/dubbo/health/liveness?type=liveness",
Method: "GET",
},
},
Response: http.AssertionResponse{
ExpectedResponseNoRequest: true,
ExpectedResponse: http.Response{
StatusCode: 200,
},
},
},
}
t.Run("HTTPRoute uses HTTP to RPC", func(t *testing.T) {
for _, testcase := range testcases {
http.MakeRequestAndExpectEventuallyConsistentResponse(t, suite.RoundTripper, suite.TimeoutConfig, suite.GatewayAddress, testcase)
}
})
},
}