Add unit test case for canary by header
This commit is contained in:
parent
0ff679baa7
commit
6f0d6b38b8
1 changed files with 79 additions and 0 deletions
|
@ -173,6 +173,85 @@ describe("Balancer", function()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
context("canary by header", function()
|
||||||
|
it("returns correct result for given headers", function()
|
||||||
|
local test_patterns = {
|
||||||
|
-- with no header value setting
|
||||||
|
{
|
||||||
|
case_title = "no custom header value and header value is 'always'",
|
||||||
|
header_name = "canaryHeader",
|
||||||
|
header_value = "",
|
||||||
|
request_header_name = "canaryHeader",
|
||||||
|
request_header_value = "always",
|
||||||
|
expected_result = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
case_title = "no custom header value and header value is 'never'",
|
||||||
|
header_name = "canaryHeader",
|
||||||
|
header_value = "",
|
||||||
|
request_header_name = "canaryHeader",
|
||||||
|
request_header_value = "never",
|
||||||
|
expected_result = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
case_title = "no custom header value and header value is undefined",
|
||||||
|
header_name = "canaryHeader",
|
||||||
|
header_value = "",
|
||||||
|
request_header_name = "canaryHeader",
|
||||||
|
request_header_value = "foo",
|
||||||
|
expected_result = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
case_title = "no custom header value and header name is undefined",
|
||||||
|
header_name = "canaryHeader",
|
||||||
|
header_value = "",
|
||||||
|
request_header_name = "foo",
|
||||||
|
request_header_value = "always",
|
||||||
|
expected_result = false,
|
||||||
|
},
|
||||||
|
-- with header value setting
|
||||||
|
{
|
||||||
|
case_title = "custom header value is set and header value is 'always'",
|
||||||
|
header_name = "canaryHeader",
|
||||||
|
header_value = "foo",
|
||||||
|
request_header_name = "canaryHeader",
|
||||||
|
request_header_value = "always",
|
||||||
|
expected_result = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
case_title = "custom header value is set and header value match custom header value",
|
||||||
|
header_name = "canaryHeader",
|
||||||
|
header_value = "foo",
|
||||||
|
request_header_name = "canaryHeader",
|
||||||
|
request_header_value = "foo",
|
||||||
|
expected_result = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
case_title = "custom header value is set and header name is undefined",
|
||||||
|
header_name = "canaryHeader",
|
||||||
|
header_value = "foo",
|
||||||
|
request_header_name = "bar",
|
||||||
|
request_header_value = "foo",
|
||||||
|
expected_result = false
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test_pattern in pairs(test_patterns) do
|
||||||
|
reset_balancer()
|
||||||
|
backend.trafficShapingPolicy.header = test_pattern.header_name
|
||||||
|
backend.trafficShapingPolicy.headerValue = test_pattern.header_value
|
||||||
|
balancer.sync_backend(backend)
|
||||||
|
mock_ngx({ var = {
|
||||||
|
["http_" .. test_pattern.request_header_name] = test_pattern.request_header_value,
|
||||||
|
request_uri = "/"
|
||||||
|
}})
|
||||||
|
assert.message("\nTest data pattern: " .. test_pattern.case_title)
|
||||||
|
.equal(test_pattern.expected_result, balancer.route_to_alternative_balancer(_balancer))
|
||||||
|
reset_ngx()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
describe("sync_backend()", function()
|
describe("sync_backend()", function()
|
||||||
|
|
Loading…
Reference in a new issue