diff --git a/ngcp/dlgcnt.lua b/ngcp/dlgcnt.lua index ac5a8f7..2ae8b87 100644 --- a/ngcp/dlgcnt.lua +++ b/ngcp/dlgcnt.lua @@ -66,6 +66,11 @@ end function NGCPDlgCounters._test_connection(client) if not client then return nil end local ok, _ = pcall(client.ping, client); + if not ok then + KSR.info(string.format("close redis server[%d]\n", + client.network.socket:getfd())) + client.network.socket:close() + end return ok end diff --git a/ngcp/dlglist.lua b/ngcp/dlglist.lua index 9b1ed55..fd9b44d 100644 --- a/ngcp/dlglist.lua +++ b/ngcp/dlglist.lua @@ -65,6 +65,11 @@ end local function _test_connection(client) if not client then return nil end local ok, _ = pcall(client.ping, client); + if not ok then + KSR.info(string.format("close redis server[%d]\n", + client.network.socket:getfd())) + client.network.socket:close() + end return ok end diff --git a/ngcp/push.lua b/ngcp/push.lua index def9329..90ec93c 100644 --- a/ngcp/push.lua +++ b/ngcp/push.lua @@ -59,6 +59,12 @@ end function NGCPPush:_test_connection() if not self.client then return nil end local ok, _ = pcall(self.client.ping, self.client); + if not ok then + KSR.info(string.format("close redis server[%d]\n", + self.client.network.socket:getfd())) + self.client.network.socket:close() + self.client = nil + end return ok end diff --git a/ngcp/recentcalls.lua b/ngcp/recentcalls.lua index 5723d0d..7502e44 100644 --- a/ngcp/recentcalls.lua +++ b/ngcp/recentcalls.lua @@ -58,6 +58,11 @@ end function NGCPRecentCalls._test_connection(client) if not client then return nil end local ok, _ = pcall(client.ping, client) + if not ok then + KSR.info(string.format("close redis server[%d]\n", + client.network.socket:getfd())) + client.network.socket:close() + end return ok end diff --git a/tests/ngcp_dlgcnt.lua b/tests/ngcp_dlgcnt.lua index fd6529a..55f0aab 100644 --- a/tests/ngcp_dlgcnt.lua +++ b/tests/ngcp_dlgcnt.lua @@ -19,6 +19,7 @@ -- local lemock = require('lemock') local lu = require('luaunit') +local utils = require 'ngcp.utils' local ksrMock = require 'mocks.ksr' KSR = ksrMock:new() @@ -30,7 +31,10 @@ TestNGCPDlgCnt = {} --class function TestNGCPDlgCnt:setUp() mc = lemock.controller() self.fake_redis = mc:mock() - self.central = mc:mock() + local fake_client = utils.inheritsFrom(mc:mock()) + self.socket = mc:mock() + fake_client.network = { socket = self.socket } + self.central = fake_client:create() self.pair = mc:mock() package.loaded.redis = self.fake_redis @@ -58,6 +62,8 @@ TestNGCPDlgCnt = {} --class function TestNGCPDlgCnt:test_connection_fail() local prev = self.central self.central:ping() ;mc :error("error") + self.socket:getfd() ;mc:returns(3) + self.socket:close() ;mc:returns(true) mc:replay() local res = self.dlg._test_connection(self.central) diff --git a/tests/ngcp_recentcalls.lua b/tests/ngcp_recentcalls.lua index be7a790..bf1407d 100644 --- a/tests/ngcp_recentcalls.lua +++ b/tests/ngcp_recentcalls.lua @@ -21,6 +21,7 @@ local lu = require('luaunit') local lemock = require('lemock') local ksrMock = require 'mocks.ksr' +local utils = require 'ngcp.utils' KSR = ksrMock:new() @@ -32,7 +33,10 @@ TestNGCPRecentCalls = {} --class function TestNGCPRecentCalls:setUp() mc = lemock.controller() self.fake_redis = mc:mock() - self.central = mc:mock() + local fake_client = utils.inheritsFrom(mc:mock()) + self.socket = mc:mock() + fake_client.network = { socket = self.socket } + self.central = fake_client:create() package.loaded.redis = self.fake_redis local NGCPRecentCalls = require 'ngcp.recentcalls' @@ -58,6 +62,8 @@ TestNGCPRecentCalls = {} --class function TestNGCPRecentCalls:test_connection_fail() local prev = self.central self.central:ping() ;mc :error("error") + self.socket:getfd() ;mc:returns(3) + self.socket:close() ;mc:returns(true) mc:replay() local res = self.rcalls._test_connection(self.central)