From 8f5fa78e1aa57daa5a0e4392fb37160c5da1e8e3 Mon Sep 17 00:00:00 2001 From: Elvin Efendi Date: Fri, 26 Jul 2019 10:18:31 -0400 Subject: [PATCH] regression test --- rootfs/etc/nginx/lua/balancer.lua | 3 +- rootfs/etc/nginx/lua/test/balancer_test.lua | 38 +++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/rootfs/etc/nginx/lua/balancer.lua b/rootfs/etc/nginx/lua/balancer.lua index 4388d4e89..28312c344 100644 --- a/rootfs/etc/nginx/lua/balancer.lua +++ b/rootfs/etc/nginx/lua/balancer.lua @@ -207,7 +207,7 @@ local function get_balancer() balancer = balancers[alternative_backend_name] end - + ngx.ctx.balancer = balancer return balancer @@ -266,6 +266,7 @@ if _TEST then _M.get_implementation = get_implementation _M.sync_backend = sync_backend _M.route_to_alternative_balancer = route_to_alternative_balancer + _M.get_balancer = get_balancer end return _M diff --git a/rootfs/etc/nginx/lua/test/balancer_test.lua b/rootfs/etc/nginx/lua/test/balancer_test.lua index 379e6fcf6..0bd1cddcf 100644 --- a/rootfs/etc/nginx/lua/test/balancer_test.lua +++ b/rootfs/etc/nginx/lua/test/balancer_test.lua @@ -86,6 +86,44 @@ describe("Balancer", function() end) end) + describe("get_balancer()", function() + it("always returns the same balancer for given request context", function() + local backend = { + name = "my-dummy-app-6", ["load-balance"] = "ewma", + alternativeBackends = { "my-dummy-canary-app-6" }, + endpoints = { { address = "10.184.7.40", port = "8080", maxFails = 0, failTimeout = 0 } }, + trafficShapingPolicy = { + weight = 0, + header = "", + headerValue = "", + cookie = "" + }, + } + local canary_backend = { + name = "my-dummy-canary-app-6", ["load-balance"] = "ewma", + alternativeBackends = { "my-dummy-canary-app-6" }, + endpoints = { { address = "11.184.7.40", port = "8080", maxFails = 0, failTimeout = 0 } }, + trafficShapingPolicy = { + weight = 5, + header = "", + headerValue = "", + cookie = "" + }, + } + + balancer.sync_backend(backend) + balancer.sync_backend(canary_backend) + + mock_ngx({ var = { proxy_upstream_name = backend.name } }) + + local expected = balancer.get_balancer() + + for i = 1,50,1 do + assert.are.same(expected, balancer.get_balancer()) + end + end) + end) + describe("route_to_alternative_balancer()", function() local backend, _balancer