Skip to content

Commit

Permalink
tests(cluster) add tests for the new strings in details struct
Browse files Browse the repository at this point in the history
  • Loading branch information
thibaultcha committed Sep 28, 2016
1 parent 34f5f11 commit 367406e
Show file tree
Hide file tree
Showing 2 changed files with 144 additions and 49 deletions.
11 changes: 6 additions & 5 deletions lib/resty/cassandra/cluster.lua
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ local function set_peer(self, host, up, reconn_delay, unhealthy_at,
-- status
local ok, err = self.shm:set(host, up)
if not ok then
return nil, 'could not set host status in shm: '..err
return nil, 'could not set host details in shm: '..err
end

-- host health and info
Expand Down Expand Up @@ -94,12 +94,14 @@ local function get_peer(self, host, status)
end

local peer = ffi_cast(rec_peer_const, rec_v)
local data_center = ffi_str(peer.data_center, C.strlen(peer.data_center))
local release_version = ffi_str(peer.release_version, C.strlen(peer.release_version))

return {
up = status,
host = host,
data_center = ffi_str(peer.data_center, C.strlen(peer.data_center)),
release_version = ffi_str(peer.release_version, C.strlen(peer.release_version)),
data_center = data_center ~= '' and data_center or nil,
release_version = release_version ~= '' and release_version or nil,
reconn_delay = tonumber(peer.reconn_delay),
unhealthy_at = tonumber(peer.unhealthy_at)
}
Expand Down Expand Up @@ -404,7 +406,6 @@ end
-- called if further updates are required.
-- @treturn boolean `ok`: `true` if success, `nil` if failure.
-- @treturn string `err`: String describing the error if failure.
-- @treturn table `peers`: A list of peers retrieved from the cluster
function _Cluster:refresh()
local old_peers, err = get_peers(self)
if err then return nil, err
Expand Down Expand Up @@ -477,7 +478,7 @@ function _Cluster:refresh()

self.lb_policy:init(peers)
self.init = true
return true, nil, peers
return true
end

--------------------
Expand Down
182 changes: 138 additions & 44 deletions t/06-cluster.t
Original file line number Diff line number Diff line change
Expand Up @@ -419,41 +419,7 @@ info: no host details for 127.0.0.254
=== TEST 12: cluster.refresh() peers in 3rd return value
--- http_config eval: $::HttpConfig
--- config
location /t {
content_by_lua_block {
local Cluster = require 'resty.cassandra.cluster'
local cluster, err = Cluster.new()
if not cluster then
ngx.log(ngx.ERR, err)
end
local ok, err, peers = cluster:refresh()
if not ok then
ngx.log(ngx.ERR, err)
return
end
for i = 1, #peers do
local p = peers[i]
ngx.say(p.host, ' ', p.up)
end
}
}
--- request
GET /t
--- response_body
127.0.0.3 true
127.0.0.2 true
127.0.0.1 true
--- no_error_log
[error]
=== TEST 13: cluster.refresh() does not alter existing peers records and status
=== TEST 12: cluster.refresh() does not alter existing peers records and status
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -506,7 +472,7 @@ up: false
=== TEST 14: get_peers() corrupted shm
=== TEST 13: get_peers() corrupted shm
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -534,7 +500,7 @@ corrupted shm
=== TEST 15: set_peer_down()/set_peer_up()/can_try_peer() set shm booleans for nodes status
=== TEST 14: set_peer_down()/set_peer_up()/can_try_peer() set shm booleans for nodes status
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -596,7 +562,135 @@ GET /t
=== TEST 16: set_peer_down()/set_peer_up() use reconnection policy (update peer_rec delays)
=== TEST 15: set_peer_down()/set_peer_up() use existing host details if exists
--- http_config eval: $::HttpConfig
--- config
location /t {
content_by_lua_block {
local Cluster = require 'resty.cassandra.cluster'
local cluster, err = Cluster.new()
if not cluster then
ngx.log(ngx.ERR, err)
return
end
local ok, err = cluster:refresh()
if not ok then
ngx.log(ngx.ERR, err)
return
end
local peers, err = cluster:get_peers()
if not peers then
ngx.log(ngx.ERR, err)
return
end
for i = 1, #peers do
ok, err = cluster:set_peer_down(peers[i].host)
if not ok then
ngx.log(ngx.ERR, err)
return
end
local peer, err = cluster:get_peer(peers[i].host)
if not peer then
ngx.log(ngx.ERR, err)
return
end
ngx.say(peer.host, ' after down: ', peer.data_center, ' ', peer.release_version)
ok, err = cluster:set_peer_up(peers[i].host)
if not ok then
ngx.log(ngx.ERR, err)
return
end
peer, err = cluster:get_peer(peers[i].host)
if not peer then
ngx.log(ngx.ERR, err)
return
end
ngx.say(peer.host, ' after up: ', peer.data_center, ' ', peer.release_version)
end
}
}
--- request
GET /t
--- response_body_like
127\.0\.0\.3 after down: datacenter1 \d+\.\d+\.?\d?
127\.0\.0\.3 after up: datacenter1 \d+\.\d+\.?\d?
127\.0\.0\.2 after down: datacenter1 \d+\.\d+\.?\d?
127\.0\.0\.2 after up: datacenter1 \d+\.\d+\.?\d?
127\.0\.0\.1 after down: datacenter1 \d+\.\d+\.?\d?
127\.0\.0\.1 after up: datacenter1 \d+\.\d+\.?\d?
--- no_error_log
[error]
=== TEST 16: set_peer_down()/set_peer_up() defaults hosts details if not exists
--- http_config eval: $::HttpConfig
--- config
location /t {
content_by_lua_block {
local Cluster = require 'resty.cassandra.cluster'
local cluster, err = Cluster.new()
if not cluster then
ngx.log(ngx.ERR, err)
return
end
local fixtures = {'127.0.0.253', '127.0.0.254'}
for i = 1, #fixtures do
ok, err = cluster:set_peer_down(fixtures[i])
if not ok then
ngx.log(ngx.ERR, err)
return
end
local peer, err = cluster:get_peer(fixtures[i])
if not peer then
ngx.log(ngx.ERR, err)
return
end
ngx.say(peer.host, ' after down: ', peer.up, ' ', peer.data_center,
' ', peer.release_version)
ok, err = cluster:set_peer_up(fixtures[i])
if not ok then
ngx.log(ngx.ERR, err)
return
end
peer, err = cluster:get_peer(fixtures[i])
if not peer then
ngx.log(ngx.ERR, err)
return
end
ngx.say(peer.host, ' after up: ', peer.up, ' ', peer.data_center,
' ', peer.release_version)
end
}
}
--- request
GET /t
--- response_body
127.0.0.253 after down: false nil nil
127.0.0.253 after up: true nil nil
127.0.0.254 after down: false nil nil
127.0.0.254 after up: true nil nil
--- no_error_log
[error]
=== TEST 17: set_peer_down()/set_peer_up() use reconnection policy (update peer_rec delays)
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -682,7 +776,7 @@ reconn_delay: true
=== TEST 17: can_try_peer() use reconnection policy to decide when node is down
=== TEST 18: can_try_peer() use reconnection policy to decide when node is down
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -746,7 +840,7 @@ after delay: true true
=== TEST 18: next_coordinator() uses load balancing policy
=== TEST 19: next_coordinator() uses load balancing policy
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -783,7 +877,7 @@ coordinator 3: 127.0.0.1
=== TEST 19: next_coordinator() returns no host available errors
=== TEST 20: next_coordinator() returns no host available errors
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -827,7 +921,7 @@ all hosts tried for query failed. 127.0.0.2: host still considered down. 127.0.0
=== TEST 20: next_coordinator() avoids down hosts
=== TEST 21: next_coordinator() avoids down hosts
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -871,7 +965,7 @@ GET /t
=== TEST 21: next_coordinator() marks nodes as down
=== TEST 22: next_coordinator() marks nodes as down
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down Expand Up @@ -935,7 +1029,7 @@ can try peer 255.255.255.253: false
=== TEST 22: next_coordinator() retries down host as per reconnection policy and ups them back
=== TEST 23: next_coordinator() retries down host as per reconnection policy and ups them back
--- http_config eval: $::HttpConfig
--- config
location /t {
Expand Down

0 comments on commit 367406e

Please sign in to comment.