diff --git a/ngcp/rp.lua b/ngcp/rp.lua index 8c102f0..4698eca 100644 --- a/ngcp/rp.lua +++ b/ngcp/rp.lua @@ -1,4 +1,5 @@ #!/usr/bin/env lua5.1 +require 'ngcp.utils' require 'ngcp.xavp' -- class NGCPRealPrefs @@ -45,7 +46,16 @@ NGCPRealPrefs_MT = { __index = NGCPRealPrefs } end function NGCPRealPrefs:clean() - sr.pv.unset("$xavp(real)") + local xavp + if not vtype then + sr.pv.unset("$xavp(real)") + elseif vtype == 'callee' then + xavp = NGCPXAvp:new('callee','real',{}) + xavp:clean() + elseif vtype == 'caller' then + xavp = NGCPXAvp:new('caller','real',{}) + xavp:clean() + end end -- class --EOF \ No newline at end of file diff --git a/tests/ngcp_rp.lua b/tests/ngcp_rp.lua index 047784e..67e964e 100644 --- a/tests/ngcp_rp.lua +++ b/tests/ngcp_rp.lua @@ -114,6 +114,63 @@ TestNGCPRealPrefs = {} --class assertEquals(xavp.real("uno"),1) assertEquals(xavp.real("dos"),2) end + + function TestNGCPRealPrefs:test_clean() + local xavp = NGCPXAvp:new('callee','real',{}) + xavp("testid",1) + xavp("foo","foo") + assertEquals(sr.pv.get("$xavp(real[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(real[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(real[0]=>dummy)"),"caller") + self.real:clean() + assertFalse(sr.pv.get("$xavp(real[0]=>dummy)")) + assertFalse(sr.pv.get("$xavp(real[1]=>dummy)")) + assertFalse(sr.pv.get("$xavp(real)")) + end + + function TestNGCPRealPrefs:test_callee_clean() + local callee_xavp = NGCPXAvp:new('callee','real',{}) + callee_xavp("testid",1) + callee_xavp("foo","foo") + local caller_xavp = NGCPXAvp:new('caller','real',{}) + caller_xavp("other",1) + caller_xavp("otherfoo","foo") + assertEquals(sr.pv.get("$xavp(real[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(real[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(real[0]=>dummy)"),"caller") + assertEquals(sr.pv.get("$xavp(real[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(real[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(real[1]=>dummy)"),"callee") + self.real:clean('callee') + assertEquals(sr.pv.get("$xavp(real[0]=>dummy)"),'caller') + assertFalse(sr.pv.get("$xavp(real[1]=>testid)")) + assertFalse(sr.pv.get("$xavp(real[1]=>foo)")) + assertEquals(sr.pv.get("$xavp(real[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(real[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(real[1]=>dummy)"),"callee") + end + + function TestNGCPRealPrefs:test_caller_clean() + local callee_xavp = NGCPXAvp:new('callee','real',{}) + callee_xavp("testid",1) + callee_xavp("foo","foo") + local caller_xavp = NGCPXAvp:new('caller','real',{}) + caller_xavp("other",1) + caller_xavp("otherfoo","foo") + assertEquals(sr.pv.get("$xavp(real[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(real[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(real[0]=>dummy)"),"caller") + assertEquals(sr.pv.get("$xavp(real[0]=>other)"),1) + assertEquals(sr.pv.get("$xavp(real[0]=>otherfoo)"),"foo") + assertEquals(sr.pv.get("$xavp(real[1]=>dummy)"),"callee") + self.real:clean('caller') + assertEquals(sr.pv.get("$xavp(real[0]=>dummy)"),'caller') + assertFalse(sr.pv.get("$xavp(real[0]=>other)")) + assertFalse(sr.pv.get("$xavp(real[0]=>otherfoo)")) + assertEquals(sr.pv.get("$xavp(real[1]=>testid)"),1) + assertEquals(sr.pv.get("$xavp(real[1]=>foo)"),"foo") + assertEquals(sr.pv.get("$xavp(real[1]=>dummy)"),"callee") + end -- class TestNGCPRealPrefs ---- Control test output: