diff --git a/ngcp/pp.lua b/ngcp/pp.lua index a655cab..fd4663b 100644 --- a/ngcp/pp.lua +++ b/ngcp/pp.lua @@ -43,8 +43,17 @@ NGCPPeerPrefs_MT = { __index = NGCPPeerPrefs } con:close() end - function NGCPPeerPrefs:clean() - sr.pv.unset("$xavp(peer)") + function NGCPPeerPrefs:clean(vtype) + local xavp + if not vtype then + sr.pv.unset("$xavp(peer)") + elseif vtype == 'callee' then + xavp = NGCPXAvp:new('callee','peer',{}) + xavp:clean() + elseif vtype == 'caller' then + xavp = NGCPXAvp:new('caller','peer',{}) + xavp:clean() + end end -- class --EOF \ No newline at end of file diff --git a/ngcp/up.lua b/ngcp/up.lua index 15088c1..32e2faf 100644 --- a/ngcp/up.lua +++ b/ngcp/up.lua @@ -48,8 +48,17 @@ NGCPUserPrefs_MT = { __index = NGCPUserPrefs } return keys end - function NGCPUserPrefs:clean(...) - sr.pv.unset("$xavp(user)") + function NGCPUserPrefs:clean(vtype) + local xavp + if not vtype then + sr.pv.unset("$xavp(user)") + elseif vtype == 'callee' then + xavp = NGCPXAvp:new('callee','user',{}) + xavp:clean() + elseif vtype == 'caller' then + xavp = NGCPXAvp:new('caller','user',{}) + xavp:clean() + end end -- class --EOF \ No newline at end of file diff --git a/tests/ngcp_pp.lua b/tests/ngcp_pp.lua index 22aa3ff..869184d 100644 --- a/tests/ngcp_pp.lua +++ b/tests/ngcp_pp.lua @@ -102,6 +102,63 @@ TestNGCPPeerPrefs = {} --class assertEquals(sr.pv.get("$xavp(domain[1]=>sst_refresh_method)"), "UPDATE_FALLBACK_INVITE") assertIsNil(self.d.xavp("error_key")) end + + function TestNGCPPeerPrefs:test_clean() + local xavp = NGCPXAvp:new('callee','peer',{}) + xavp("testid",1) + xavp("foo","foo") + assertEquals(sr.pv.get("$xavp(peer[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(peer[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(peer[0]=>dummy)"),"caller") + self.d:clean() + assertFalse(sr.pv.get("$xavp(peer[0]=>dummy)")) + assertFalse(sr.pv.get("$xavp(peer[1]=>dummy)")) + assertFalse(sr.pv.get("$xavp(peer)")) + end + + function TestNGCPPeerPrefs:test_callee_clean() + local callee_xavp = NGCPXAvp:new('callee','peer',{}) + callee_xavp("testid",1) + callee_xavp("foo","foo") + local caller_xavp = NGCPXAvp:new('caller','peer',{}) + caller_xavp("other",1) + caller_xavp("otherfoo","foo") + assertEquals(sr.pv.get("$xavp(peer[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(peer[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(peer[0]=>dummy)"),"caller") + assertEquals(sr.pv.get("$xavp(peer[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(peer[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(peer[1]=>dummy)"),"callee") + self.d:clean('callee') + assertEquals(sr.pv.get("$xavp(peer[0]=>dummy)"),'caller') + assertFalse(sr.pv.get("$xavp(peer[1]=>testid)")) + assertFalse(sr.pv.get("$xavp(peer[1]=>foo)")) + assertEquals(sr.pv.get("$xavp(peer[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(peer[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(peer[1]=>dummy)"),"callee") + end + + function TestNGCPPeerPrefs:test_caller_clean() + local callee_xavp = NGCPXAvp:new('callee','peer',{}) + callee_xavp("testid",1) + callee_xavp("foo","foo") + local caller_xavp = NGCPXAvp:new('caller','peer',{}) + caller_xavp("other",1) + caller_xavp("otherfoo","foo") + assertEquals(sr.pv.get("$xavp(peer[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(peer[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(peer[0]=>dummy)"),"caller") + assertEquals(sr.pv.get("$xavp(peer[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(peer[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(peer[1]=>dummy)"),"callee") + self.d:clean('caller') + assertEquals(sr.pv.get("$xavp(peer[0]=>dummy)"),'caller') + assertFalse(sr.pv.get("$xavp(peer[0]=>other)")) + assertFalse(sr.pv.get("$xavp(peer[0]=>otherfoo)")) + assertEquals(sr.pv.get("$xavp(peer[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(peer[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(peer[1]=>dummy)"),"callee") + end -- class TestNGCPPeerPrefs ---- Control test output: diff --git a/tests/ngcp_up.lua b/tests/ngcp_up.lua index 2697165..9ac8bf9 100644 --- a/tests/ngcp_up.lua +++ b/tests/ngcp_up.lua @@ -102,6 +102,63 @@ TestNGCPUserPrefs = {} --class assertEquals(sr.pv.get("$xavp(user[1]=>ac)"),"1") assertItemsEquals(keys, {"account_id", "cli", "cc", "ac"}) end + + function TestNGCPUserPrefs:test_clean() + local xavp = NGCPXAvp:new('callee','user',{}) + xavp("testid",1) + xavp("foo","foo") + assertEquals(sr.pv.get("$xavp(user[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(user[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(user[0]=>dummy)"),"caller") + self.d:clean() + assertFalse(sr.pv.get("$xavp(user[0]=>dummy)")) + assertFalse(sr.pv.get("$xavp(user[1]=>dummy)")) + assertFalse(sr.pv.get("$xavp(user)")) + end + + function TestNGCPUserPrefs:test_callee_clean() + local callee_xavp = NGCPXAvp:new('callee','user',{}) + callee_xavp("testid",1) + callee_xavp("foo","foo") + local caller_xavp = NGCPXAvp:new('caller','user',{}) + caller_xavp("other",1) + caller_xavp("otherfoo","foo") + assertEquals(sr.pv.get("$xavp(user[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(user[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(user[0]=>dummy)"),"caller") + assertEquals(sr.pv.get("$xavp(user[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(user[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(user[1]=>dummy)"),"callee") + self.d:clean('callee') + assertEquals(sr.pv.get("$xavp(user[0]=>dummy)"),'caller') + assertFalse(sr.pv.get("$xavp(user[1]=>testid)")) + assertFalse(sr.pv.get("$xavp(user[1]=>foo)")) + assertEquals(sr.pv.get("$xavp(user[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(user[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(user[1]=>dummy)"),"callee") + end + + function TestNGCPUserPrefs:test_caller_clean() + local callee_xavp = NGCPXAvp:new('callee','user',{}) + callee_xavp("testid",1) + callee_xavp("foo","foo") + local caller_xavp = NGCPXAvp:new('caller','user',{}) + caller_xavp("other",1) + caller_xavp("otherfoo","foo") + assertEquals(sr.pv.get("$xavp(user[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(user[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(user[0]=>dummy)"),"caller") + assertEquals(sr.pv.get("$xavp(user[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(user[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(user[1]=>dummy)"),"callee") + self.d:clean('caller') + assertEquals(sr.pv.get("$xavp(user[0]=>dummy)"),'caller') + assertFalse(sr.pv.get("$xavp(user[0]=>other)")) + assertFalse(sr.pv.get("$xavp(user[0]=>otherfoo)")) + assertEquals(sr.pv.get("$xavp(user[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(user[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(user[1]=>dummy)"),"callee") + end -- class TestNGCPUserPrefs ---- Control test output: