路由表检查工具

注意:下面的配置仅用于路由表检查工具,而不是 Envoy 二进制文件的一部分。路由表检查工具是一个独立的二进制文件,它可以用来验证 Envoy 对给定配置文件的路由。

下面指定了路由表检查工具的输入。路由表检查工具检查路由器返回的路由信息是否符合预期。该工具可用于检查集群名称、虚拟集群名称、虚拟主机名、手动路径重写、手动主机重写、路径重定向和头字段匹配。 可以添加其它测试用例的扩展。安装工具和示例工具输入/输出的详细信息可以在这里找到。

路由表检查工具配置由一系列 json 测试对象组成。每个测试对象由三个部分组成。

  • Test name

该字段指定每个测试对象的名称。

  • Input values

    输入值字段指定要传递给路由器的参数。例如输入字段包括 :authority:path:method header fields。权限:path字段指定发送到路由器的 url 并是必须要添加的。所有其他输入字段都是可选的。

  • Validate

    validate 字段指定要检查的期望值和测试用例。至少需要一个测试用例。

    看下面的一个简单的json工具配置参数,其包含有一个测试用例。测试期望与 “instant-server” 的集群名称匹配。:

  1. [
  2. {
  3. "test_name: "Cluster_name_test",
  4. "input": {
  5. ":authority": "api.lyft.com",
  6. ":path": "/api/locations"
  7. },
  8. "validate": {
  9. "cluster_name": "instant-server"
  10. }
  11. }
  12. ]
  1. [
  2. {
  3. "test_name": "...",
  4. "input": {
  5. ":authority": "...",
  6. ":path": "...",
  7. ":method": "...",
  8. "internal": "...",
  9. "random_value": "...",
  10. "ssl": "...",
  11. "additional_headers": [
  12. {
  13. "field": "...",
  14. "value": "..."
  15. },
  16. {
  17. "..."
  18. }
  19. ]
  20. },
  21. "validate": {
  22. "cluster_name": "...",
  23. "virtual_cluster_name": "...",
  24. "virtual_host_name": "...",
  25. "host_rewrite": "...",
  26. "path_rewrite": "...",
  27. "path_redirect": "...",
  28. "header_fields": [
  29. {
  30. "field": "...",
  31. "value": "..."
  32. },
  33. {
  34. "..."
  35. }
  36. ]
  37. }
  38. },
  39. {
  40. "..."
  41. }
  42. ]
  • 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,该工具能够模拟客户机通过httphttps发出请求的行为。 默认情况下sslfalse,相当于将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) 要匹配的头字段的值。