NGCPConfig: Added default

- use default to keep the vars/prefs defaults
NGCP: Added avp vars. Create the avp vars on load. Clean avp vars.
squeeze-backports
Victor Seva 12 years ago
parent b81560a634
commit c76e9aa378

@ -18,7 +18,15 @@ NGCPConfig_MT = { __index = NGCPConfig }
db_port = 3306,
db_username = "kamailio",
db_pass = "somepasswd",
db_database = "kamailio"
db_database = "kamailio",
default = {
sst_enable = "yes",
sst_expires = 300,
sst_min_timer = 90,
sst_max_timer = 7200,
sst_refresh_method = "UPDATE_FALLBACK_INVITE",
outbound_from_user = "npn",
}
}
setmetatable( t, NGCPConfig_MT )
return t
@ -54,12 +62,52 @@ NGCP_MT = { __index = NGCP }
peer = NGCPPeerPrefs:new(t.config),
real = NGCPRealPrefs:new(),
}
t.vars = {
caller_peer_load = {
caller_peer_prefs = {
{"peer_peer_caller_auth_user", "peer_auth_user"},
{"peer_peer_caller_auth_pass", "peer_auth_pass"},
{"peer_peer_caller_auth_realm", "peer_auth_realm"},
{"callee_use_rtpproxy", "use_rtpproxy"},
{"peer_callee_ipv46_for_rtpproxy", "ipv46_for_rtpproxy"},
{"peer_callee_concurrent_max", "concurrent_max"},
{"peer_callee_concurrent_max_out", "concurrent_max_out"},
{"peer_callee_outbound_socket", "outbound_socket"},
{"peer_callee_sst_enable", "sst_enable" },
{"peer_callee_sst_expires", "sst_expires"},
{"peer_callee_sst_min_timer", "sst_min_timer"},
{"peer_callee_sst_max_timer", "sst_max_timer"},
{"peer_callee_sst_refresh_refresh_method", "sst_refresh_method"},
{"callee_outbound_from_user", "outbound_from_user"},
{"callee_outbound_from_display", "outbound_from_display"},
{"callee_outbound_pai_user", "outbound_pai_user"},
{"callee_outbound_ppi_user", "outbound_ppi_user"},
{"callee_outbound_diversion", "outbound_diversion"},
{"pstn_dp_caller_out_id", "rewrite_caller_out_dpid"},
{"pstn_dp_callee_out_id", "rewrite_callee_out_dpid"},
{"rewrite_caller_in_dpid"},
{"rewrite_callee_in_dpid"}
}
}
}
return t
end
function NGCP:caller_peer_load(peer)
local _,v, default, xvap
local keys = self.prefs.peer:caller_load(peer)
local vars = self.vars.caller_peer_load
self.prefs.real:caller_usr_load(keys)
for _,v in pairs(vars.caller_peer_prefs) do
default = self.config.default[v[2]]
if v[2] then
xavp = "caller_peer_prefs=>" .. v[2]
else
xavp = nil
end
NGCPPrefs.set_avp(v[1], xavp, default)
end
return keys
end
@ -97,15 +145,40 @@ NGCP_MT = { __index = NGCP }
return unique_keys
end
function NGCP:clean_vars(vtype, group)
local _, v, var, vars_index, avp
vars_index = vtype .. "_" .. group .. "_load"
if self.vars[vars_index] then
for _,v in pairs(self.vars[vars_index]) do
for _,var in pairs(v) do
avp = NGCPAvp:new(var[1])
avp:clean()
end
end
end
end
function NGCP:clean(vtype, group)
local _,v
local _,k,v
if not group then
for _,v in pairs(self.prefs) do
for k,v in pairs(self.prefs) do
v:clean(vtype)
if not vtype then
self:clean_vars('caller', k)
self:clean_vars('callee', k)
else
self:clean_vars(vtype, k)
end
end
else
if self.prefs[group] then
self.prefs[group]:clean(vtype)
if not vtype then
self:clean_vars('caller', group)
self:clean_vars('callee', group)
else
self:clean_vars(vtype, group)
end
else
error(string.format("unknown group:%s", group))
end

@ -1,30 +1,47 @@
#!/usr/bin/env lua5.1
require('luaunit')
require 'mocks.sr'
require('lemock')
require 'ngcp.utils'
require 'tests_v.dp_vars'
require 'tests_v.pp_vars'
require 'tests_v.up_vars'
sr = srMock:new()
local mc = lemock.controller()
local mysql = mc:mock()
local env = mc:mock()
local con = mc:mock()
local cur = mc:mock()
package.loaded.luasql = nil
package.preload['luasql.mysql'] = function ()
luasql = {}
luasql.mysql = mysql
return mysql
if not sr then
require 'mocks.sr'
sr = srMock:new()
else
argv = {}
end
require 'ngcp.ngcp'
local mc,env
TestNGCP = {} --class
function TestNGCP:setUp()
sr.log("dbg", "TestNGCP:setUp")
mc = lemock.controller()
env = mc:mock()
self.con = mc:mock()
self.cur = mc:mock()
package.loaded.luasql = nil
package.preload['luasql.mysql'] = function ()
luasql = {}
luasql.mysql = mc:mock()
return luasql.mysql
end
require 'ngcp.ngcp'
luasql.mysql = function ()
luasql.mysql = env
return env
end
self.ngcp = NGCP:new()
self.dp_vars = DPFetch:new()
self.pp_vars = PPFetch:new()
self.up_vars = UPFetch:new()
end
function TestNGCP:tearDown()
@ -44,18 +61,6 @@ TestNGCP = {} --class
assertTrue(self.ngcp.config)
end
function TestNGCP:test_connection()
assertTrue(self.ngcp.config)
local c = self.ngcp.config
luasql.mysql() ;mc :returns(env)
env:connect(c.db_database, c.db_username, c.db_pass, c.db_host, c.db_port) ;mc :returns(con)
mc:replay()
c:getDBConnection()
mc:verify()
assertTrue(self.ngcp.config)
end
function TestNGCP:test_prefs_init()
sr.log("dbg", "TestNGCP:test_prefs_init")
assertTrue(self.ngcp)
@ -86,6 +91,28 @@ TestNGCP = {} --class
assertEquals(self.ngcp:caller_peer_load(), {})
end
function TestNGCP:test_caller_peer_load()
--self.ngcp.config:getDBConnection() ;mc :returns(self.con)
local c = self.ngcp.config
env:connect(c.db_database, c.db_username, c.db_pass, c.db_host, c.db_port) ;mc :returns(self.con)
self.con:execute(mc.ANYARGS) ;mc :returns(self.cur)
self.cur:fetch(mc.ANYARGS) ;mc :returns(self.pp_vars:val("p_2")) --sst_enable: "no"
self.cur:fetch(mc.ANYARGS) ;mc :returns(self.pp_vars:val("p_2")) --sst_refresh_method: "UPDATE_FALLBACK_INVITE"
self.cur:fetch(mc.ANYARGS) ;mc :returns(nil)
self.cur:close()
self.con:close()
mc:replay()
local keys = self.ngcp:caller_peer_load("2")
mc:verify()
assertEquals(sr.pv.get("$xavp(caller_peer_prefs=>dummy)"), "caller")
assertEquals(sr.pv.get("$xavp(caller_peer_prefs=>sst_enable)"), "no")
assertEquals(sr.pv.get("$avp(peer_callee_sst_enable)"), "no")
assertEquals(sr.pv.get("$xavp(caller_peer_prefs=>sst_refresh_method)"), "UPDATE_FALLBACK_INVITE")
assertEquals(sr.pv.get("$avp(peer_callee_sst_refresh_refresh_method)"), "UPDATE_FALLBACK_INVITE")
end
function TestNGCP:test_callee_peer_load_empty()
assertEquals(self.ngcp:callee_peer_load(), {})
end
@ -98,11 +125,20 @@ TestNGCP = {} --class
assertEquals(sr.pv.get("$xavp(callee_usr_prefs=>foo)"),"foo")
assertEquals(sr.pv.get("$xavp(caller_usr_prefs=>dummy)"), "caller")
self.ngcp:clean()
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),nil)
assertEquals(sr.pv.get("$xavp(caller_usr_prefs=>dummy)"),"caller")
assertEquals(sr.pv.get("$xavp(callee_usr_prefs=>dummy)"),"callee")
assertFalse(sr.pv.get("$xavp(user)"))
end
function TestNGCP:test_clean_vars()
local avp = NGCPAvp:new('callee_outbound_from_display')
avp("foofighters")
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),"foofighters")
self.ngcp:clean()
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),nil)
end
function TestNGCP:test_clean_caller_groups()
local groups = {"peer", "usr", "dom", "real"}
local _,v
@ -118,6 +154,25 @@ TestNGCP = {} --class
assertError(self.ngcp.clean, self.ngcp, "caller", "whatever")
end
function TestNGCP:test_clean_caller_groups_vars()
local groups = {"peer", "usr", "dom", "real"}
local _,v
local avp = NGCPAvp:new('callee_outbound_from_display')
avp("foofighters")
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),"foofighters")
for _,v in pairs(groups) do
xavp = self.ngcp.prefs[v]:xavp("caller")
xavp(string.format("test_%s", v), v)
assertEquals(sr.pv.get(string.format("$xavp(caller_%s_prefs=>test_%s)", v, v)), v)
assertEquals(sr.pv.get(string.format("$xavp(caller_%s_prefs=>dummy)", v)), "caller")
self.ngcp:clean("caller", v)
assertEquals(sr.pv.get(string.format("$xavp(caller_%s_prefs=>dummy)", v)), "caller")
end
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),nil)
assertError(self.ngcp.clean, self.ngcp, "caller", "whatever")
end
function TestNGCP:test_clean_callee_groups()
local groups = {"peer", "usr", "dom", "real"}
local _,v, xavp
@ -133,6 +188,25 @@ TestNGCP = {} --class
assertError(self.ngcp.clean, self.ngcp, "callee", "whatever")
end
function TestNGCP:test_clean_callee_groups_vars()
local groups = {"peer", "usr", "dom", "real"}
local _,v, xavp
local avp = NGCPAvp:new('callee_outbound_from_display')
avp("foofighters")
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),"foofighters")
for _,v in pairs(groups) do
xavp = self.ngcp.prefs[v]:xavp("callee")
xavp(string.format("test_%s", v), v)
assertEquals(sr.pv.get(string.format("$xavp(callee_%s_prefs=>test_%s)", v, v)), v)
assertEquals(sr.pv.get(string.format("$xavp(callee_%s_prefs=>dummy)", v)), "callee")
self.ngcp:clean("callee", v)
assertEquals(sr.pv.get(string.format("$xavp(callee_%s_prefs=>dummy)", v)), "callee")
end
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),'foofighters')
assertError(self.ngcp.clean, self.ngcp, "callee", "whatever")
end
function TestNGCP:test_callee_clean()
local callee_xavp = NGCPDomainPrefs:xavp('callee')
assertEquals(sr.pv.get("$xavp(callee_dom_prefs=>dummy)"),"callee")
@ -156,6 +230,9 @@ TestNGCP = {} --class
end
function TestNGCP:test_caller_clean()
local avp = NGCPAvp:new('callee_outbound_from_display')
avp("foofighters")
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),"foofighters")
local callee_xavp = NGCPXAvp:new('callee','peer_prefs')
callee_xavp("testid",1)
callee_xavp("foo","foo")
@ -175,6 +252,7 @@ TestNGCP = {} --class
assertEquals(sr.pv.get("$xavp(callee_peer_prefs=>testid)"),1)
assertEquals(sr.pv.get("$xavp(callee_peer_prefs=>foo)"),"foo")
assertEquals(sr.pv.get("$xavp(callee_peer_prefs=>dummy)"),"callee")
assertEquals(sr.pv.get("$avp(s:callee_outbound_from_display)"),nil)
end
-- class TestNGCP

Loading…
Cancel
Save