diff --git a/mocks/sr.lua b/mocks/sr.lua index 47d91b6..6c1d7e6 100644 --- a/mocks/sr.lua +++ b/mocks/sr.lua @@ -3,11 +3,17 @@ require ('logging.file') require 'lemock' require 'ngcp.utils' -mc = lemock.controller() - pvMock = { __class__ = 'pvMock', - vars = {} + vars = {}, + _logger = logging.file("reports/sr_pv_%s.log", "%Y-%m-%d"), + _logger_levels = { + dbg = logging.DEBUG, + info = logging.INFO, + warn = logging.WARN, + err = logging.ERROR, + crit = logging.FATAL + } } function pvMock:new() local t = {} @@ -31,15 +37,25 @@ pvMock = { id = l[1] .. "[0]=>" .. l[2] end end + if string.ends(id,"[*]") then + -- clean var + id = string.sub(id,1,-4) + t.log("dbg",string.format("sr.pv erase [%s]", id)) + t.vars[id] = nil + end if not t.vars[id] then t.vars[id] = value + t.log("dbg", string.format("sr.pv added [%s]:%s", id, value)) elseif type(t.vars[id]) == 'table' then t.vars[id]:push(value) + t.log("dbg", string.format("sr.pv push [%s]:%s", id, value)) else local old = t.vars[id] t.vars[id] = Stack:new() t.vars[id]:push(old, value) + t.log("dbg", string.format("sr.pv push [%s]:%s", id, value)) end + t.log("dbg", string.format("sr.pv [%s]:%s", id, tostring(t.vars[id]))) end function t.seti(id, value) @@ -82,6 +98,14 @@ pvMock = { end return false end + + function t.log(level, message) + if not t._logger_levels[level] then + error(string.format("level %s unknown", level)) + end + t._logger:log(t._logger_levels[level], message) + end + pvMock_MT = { __index = pvMock } setmetatable(t, pvMock_MT) return t @@ -101,7 +125,7 @@ srMock = { crit = logging.FATAL } } -srMock_MT = { __index = srMock, __newindex = mc:mock() } +srMock_MT = { __index = srMock, __newindex = lemock.controller():mock() } function srMock:new() --print("srMock:new") local t = {} diff --git a/ngcp/kam_utils.lua b/ngcp/kam_utils.lua index d8cde0a..4b70b95 100644 --- a/ngcp/kam_utils.lua +++ b/ngcp/kam_utils.lua @@ -5,7 +5,7 @@ require 'ngcp.utils' -- kamailio log for a table function table.log(t, msg, level) if not level then - level = "debug" + level = "dbg" end if msg then sr.log(level, msg) @@ -26,7 +26,7 @@ function sets_avps(list) local i, v for i,v in pairs(list) do - -- sr.log("debug","i:" .. i .. " v:" .. v) + -- sr.log("dbg","i:" .. i .. " v:" .. v) sr.pv.unset('$avp(' .. i ..')[*]') sr.pv.sets('$avp(' .. i .. ')', v) end diff --git a/tests/mocks.lua b/tests/mocks.lua index 7f83966..1181cf8 100644 --- a/tests/mocks.lua +++ b/tests/mocks.lua @@ -4,6 +4,7 @@ require 'mocks.sr' TestMock = {} function TestMock:testMock() + mc = lemock.controller() m = mc:mock() m.pv = mc:mock() m.titi( 42 ) @@ -52,7 +53,7 @@ TestSRMock = {} for i=#vals,1,-1 do assertEquals(l[i],vals[v]) v = v + 1 - end + end end function TestSRMock:test_unset() @@ -92,6 +93,17 @@ TestSRMock = {} self.sr.log("dbg", "Hi dude!") assertError(self.sr.log, "debug", "Hi dude!") end + + function TestSRMock:test_set_clean() + self.sr.pv.seti("$avp(s:hithere)[*]", 0) + assertEquals(self.sr.pv.vars["$avp(s:hithere)"], 0) + assertFalse(self.sr.pv.vars["$avp(s:hithere)[*]"]) + self.sr.pv.seti("$avp(s:hithere)[*]", 1) + assertEquals(self.sr.pv.vars["$avp(s:hithere)"], 1) + assertFalse(self.sr.pv.vars["$avp(s:hithere)[*]"]) + self.sr.pv.seti("$avp(s:hithere)", 0) + assertEquals(table.tostring(self.sr.pv.get("$avp(s:hithere)")), "{0,1}") + end ---- Control test output: lu = LuaUnit lu:setOutputType( "TAP" )