路由表检查工具
注意:下面的配置仅用于路由表检查工具,而不是 Envoy 二进制文件的一部分。路由表检查工具是一个独立的二进制文件,它可以用来验证 Envoy 对给定配置文件的路由。
下面指定了路由表检查工具的输入。路由表检查工具检查路由器返回的路由信息是否符合预期。该工具可用于检查集群名称、虚拟集群名称、虚拟主机名、手动路径重写、手动主机重写、路径重定向和头字段匹配。 可以添加其它测试用例的扩展。安装工具和示例工具输入/输出的详细信息可以在这里找到。
路由表检查工具配置由一系列 json 测试对象组成。每个测试对象由三个部分组成。
- Test name
该字段指定每个测试对象的名称。
Input values
输入值字段指定要传递给路由器的参数。例如输入字段包括
:authority、:path、:method header fields。权限:path字段指定发送到路由器的url并是必须要添加的。所有其他输入字段都是可选的。Validate
validate 字段指定要检查的期望值和测试用例。至少需要一个测试用例。
看下面的一个简单的json工具配置参数,其包含有一个测试用例。测试期望与 “instant-server” 的集群名称匹配。:
[
{
"test_name: "Cluster_name_test",
"input": {
":authority": "api.lyft.com",
":path": "/api/locations"
},
"validate": {
"cluster_name": "instant-server"
}
}
]
[
{
"test_name": "...",
"input": {
":authority": "...",
":path": "...",
":method": "...",
"internal": "...",
"random_value": "...",
"ssl": "...",
"additional_headers": [
{
"field": "...",
"value": "..."
},
{
"..."
}
]
},
"validate": {
"cluster_name": "...",
"virtual_cluster_name": "...",
"virtual_host_name": "...",
"host_rewrite": "...",
"path_rewrite": "...",
"path_redirect": "...",
"header_fields": [
{
"field": "...",
"value": "..."
},
{
"..."
}
]
}
},
{
"..."
}
]
test_name
(required, string) 测试对象的名称.
input路径法
(required, object) 输入值发送到路由器,以确定返回的路由信息:
:authority (required, string) : url权限。这个值与path参数一起定义要匹配的url。例如权限的值是“api.lyft.com”。
:path (required, string) : url的路径。例如路径的值是 “/foo”。
:method (optional, string) : 请求的方法。如果没有指定,默认采用get方法。这里可以选择GET方法, PUT方法或者POST方法。
internal (optional, boolean) : 它是是否将x-envoy-internal设置为“true”的一个标志。如果没有指定或者指定为“false”。
x-envoy-internal就没有配置。random_value(optional, integer) 用于确定加权集群选择目标的整数。默认值是0。
ssl (optional, boolean) : 决定将 x-forwarded-proto设置为http或者https。通过给定的协议设置x-forwarded-proto,该工具能够模拟客户机通过http或https发出请求的行为。 默认情况下ssl是false,相当于将x-forwarded-proto设置为http。
additional_headers(optional, array) : Additional headers将作为路径确定的输入添加。
“:authority”, “:path”, “:method”, “x-forwarded-proto”以及 “x-envoy-internal” 字段应该有其他配置选项指定,而不应该在这里配置。field (required, string) 要添加的头字段的名称。value (required, string) 要添加的投字段的值。
validate
(required, object)
validate对象指定要匹配的返回路由参数。至少需要指定一个参数, 使用“” (空字符串)来表示没有返回值。 例如, 测试没有集群能够匹配 {“cluster_name”: “”}。
cluster_name (optional, string) :匹配集群的名称。
virtual_cluster_name (optional, string) : 匹配虚拟集群的名称。
virtual_host_name (optional, string) : 匹配虚拟机的名称。
host_rewrite (optional, string) : 匹配重写后的主机字段头。
path_rewrite (optional, string) :匹配重写后的路径字段头。
path_redirect (optional, string) :匹配返回的重定向路径。
header_fields (optional, array) : 匹配列出的头字段。
例如头字段包括 “:path”, “cookie”,以及 “date” 字段。在其它测试用例之后检查头字段。因此, 所检查的头字段将是重定向或重写路由信息。field (required, string) 要匹配的头字段的名称。value (required, string) 要匹配的头字段的值。