From 68ee236da4539a2a5c27cd5c370da9f2b740a215 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Tue, 19 May 2020 13:11:15 +0200 Subject: [PATCH] TT#81207 [caller|callee]_prefs from usr and peer loads Change-Id: I2f25147100297cb99a98b1f6186daaf7da16ef44 --- ngcp/rp.lua | 22 ++++++++++++++++++++-- tests/ngcp_rp.lua | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) diff --git a/ngcp/rp.lua b/ngcp/rp.lua index 07780ce..3d3bb70 100644 --- a/ngcp/rp.lua +++ b/ngcp/rp.lua @@ -19,6 +19,7 @@ -- local utils = require 'ngcp.utils' local utable = utils.table +local NGCPXAvp = require 'ngcp.xavp' local NGCPPrefs = require 'ngcp.pref' local NGCPDomainPrefs = require 'ngcp.dp' local NGCPPeerPrefs = require 'ngcp.pp' @@ -39,11 +40,11 @@ function NGCPRealPrefs:new(config) return instance end -function NGCPRealPrefs:caller_load(uuid) +function NGCPRealPrefs:caller_load(_) error("Not implemented") end -function NGCPRealPrefs:callee_load(uuid) +function NGCPRealPrefs:callee_load(_) error("Not implemented") end @@ -90,12 +91,14 @@ function NGCPRealPrefs:_peer_load(level, keys) local xavp = { peer = NGCPPeerPrefs:xavp(level), } + xavp[level] = NGCPXAvp:new(level, 'prefs') local peer_keys = {} local values = KSR.pvx.xavp_getd_p1(xavp.peer.name, 0) for _,v in pairs(keys) do local value = values[v] if value then utable.add(peer_keys, v) + xavp[level](v, value) end end return peer_keys @@ -108,6 +111,7 @@ function NGCPRealPrefs:_usr_load(level, keys) prof = NGCPProfilePrefs:xavp(level), usr = NGCPUserPrefs:xavp(level) } + xavp[level] = NGCPXAvp:new(level, 'prefs') local real_values = {} local dom_values = KSR.pvx.xavp_getd_p1(xavp.dom.name, 0) local prof_values = KSR.pvx.xavp_getd_p1(xavp.prof.name, 0) @@ -122,6 +126,7 @@ function NGCPRealPrefs:_usr_load(level, keys) end if value then real_values[v] = value + xavp[level](v, value) else KSR.err(string.format("key:%s not in user, profile or domain\n", v)) end @@ -134,5 +139,18 @@ function NGCPRealPrefs:_usr_load(level, keys) return real_keys end +function NGCPRealPrefs:clean(vtype) + NGCPPrefs.clean(self, vtype) + if not vtype then + self:xavp('callee'):clean() + self:xavp('caller'):clean() + NGCPXAvp:new('callee', 'prefs'):clean() + NGCPXAvp:new('caller', 'prefs'):clean() + else + self:xavp(vtype):clean() + NGCPXAvp:new(vtype, 'prefs'):clean() + end +end + -- class return NGCPRealPrefs diff --git a/tests/ngcp_rp.lua b/tests/ngcp_rp.lua index 9a41ef8..2f780e0 100644 --- a/tests/ngcp_rp.lua +++ b/tests/ngcp_rp.lua @@ -45,6 +45,26 @@ TestNGCPRealPrefs = {} --class lu.assertError(self.real.callee_load, nil) end + function TestNGCPRealPrefs:test_caller_mix_load() + local keys = {"uno"} + local xavp = { + domain = NGCPDomainPrefs:xavp("caller"), + user = NGCPUserPrefs:xavp("caller"), + peer = NGCPPeerPrefs:xavp("caller"), + real = NGCPRealPrefs:xavp("caller") + } + xavp.user("uno",1) + local real_keys = self.real:caller_usr_load(keys) + lu.assertEquals(KSR.pv.get("$xavp(caller_usr_prefs=>uno)"),1) + lu.assertEquals(KSR.pv.get("$xavp(caller_prefs=>uno)"),1) + + xavp.peer("uno",3) + real_keys = self.real:caller_peer_load(keys) + lu.assertEquals(KSR.pv.get("$xavp(caller_usr_prefs=>uno)"),1) + lu.assertEquals(KSR.pv.get("$xavp(caller_peer_prefs=>uno)"),3) + lu.assertEquals(KSR.pv.get("$xavp(caller_prefs=>uno)"),3) + end + function TestNGCPRealPrefs:test_caller_peer_load() local keys = {"uno"} local xavp = { @@ -58,10 +78,15 @@ TestNGCPRealPrefs = {} --class xavp.user("uno",2) lu.assertEquals(KSR.pv.get("$xavp(caller_usr_prefs=>uno)"),2) xavp.peer("uno",3) + + lu.assertIsNil(KSR.pv.get("$xavp(caller_prefs=>dummy)")) + local real_keys = self.real:caller_peer_load(keys) lu.assertEquals(real_keys, keys) lu.assertEquals(xavp.real("uno"),nil) lu.assertEquals(xavp.peer("uno"),3) + + lu.assertEquals(KSR.pv.get("$xavp(caller_prefs=>uno)"),3) end function TestNGCPRealPrefs:test_caller_usr_load() @@ -75,9 +100,13 @@ TestNGCPRealPrefs = {} --class lu.assertEquals(KSR.pv.get("$xavp(caller_dom_prefs=>uno)"),1) xavp.user("uno",2) lu.assertEquals(KSR.pv.get("$xavp(caller_usr_prefs=>uno)"),2) + + lu.assertIsNil(KSR.pv.get("$xavp(caller_prefs=>dummy)")) + local real_keys = self.real:caller_usr_load(keys) lu.assertEquals(real_keys, keys) lu.assertEquals(xavp.real("uno"),2) + lu.assertEquals(KSR.pv.get("$xavp(caller_prefs=>uno)"),2) end function TestNGCPRealPrefs:test_caller_usr_load1() @@ -91,10 +120,15 @@ TestNGCPRealPrefs = {} --class lu.assertEquals(KSR.pv.get("$xavp(caller_dom_prefs=>uno)"),1) xavp.user("dos",2) lu.assertEquals(KSR.pv.get("$xavp(caller_usr_prefs=>dos)"),2) + + lu.assertIsNil(KSR.pv.get("$xavp(caller_prefs=>dummy)")) + local real_keys = self.real:caller_usr_load(keys) lu.assertItemsEquals(real_keys, keys) lu.assertEquals(xavp.real("uno"),1) lu.assertEquals(xavp.real("dos"),2) + lu.assertEquals(KSR.pv.get("$xavp(caller_prefs=>uno)"),1) + lu.assertEquals(KSR.pv.get("$xavp(caller_prefs=>dos)"),2) end function TestNGCPRealPrefs:test_callee_usr_load() @@ -108,9 +142,13 @@ TestNGCPRealPrefs = {} --class lu.assertEquals(KSR.pv.get("$xavp(callee_dom_prefs=>uno)"),1) xavp.user("uno",2) lu.assertEquals(KSR.pv.get("$xavp(callee_usr_prefs=>uno)"),2) + + lu.assertIsNil(KSR.pv.get("$xavp(callee_prefs=>dummy)")) + local real_keys = self.real:callee_usr_load(keys) lu.assertEquals(real_keys, keys) lu.assertEquals(xavp.real("uno"),2) + lu.assertEquals(KSR.pv.get("$xavp(callee_prefs=>uno)"),2) end function TestNGCPRealPrefs:test_callee_usr_load1() @@ -124,10 +162,15 @@ TestNGCPRealPrefs = {} --class lu.assertEquals(KSR.pv.get("$xavp(callee_dom_prefs=>uno)"),1) xavp.user("dos",2) lu.assertEquals(KSR.pv.get("$xavp(callee_usr_prefs=>dos)"),2) + + lu.assertIsNil(KSR.pv.get("$xavp(callee_prefs=>dummy)")) + local real_keys = self.real:callee_usr_load(keys) lu.assertItemsEquals(real_keys, keys) lu.assertEquals(xavp.real("uno"),1) lu.assertEquals(xavp.real("dos"),2) + lu.assertEquals(KSR.pv.get("$xavp(callee_prefs=>uno)"),1) + lu.assertEquals(KSR.pv.get("$xavp(callee_prefs=>dos)"),2) end function TestNGCPRealPrefs:test_set()