mock sr: xavp seconf key is a stack.

mr3.2.1
Victor Seva 12 years ago
parent aaa7bbb1c8
commit aea1c657ca
Notes: Jenkins User 10 years ago
jenkins_trigger: false

@ -132,20 +132,29 @@ pvMock = {
function t._is_xavp(id)
local _id, indx, key
local patterns = {
'%$xavp%(([%w_]+)%)$',
'%$xavp%(([%w_^%[]+)%)$',
'%$xavp%(([%w_^%[]+)%[(%d+)%]%)$',
'%$xavp%(([%w_]+)=>([%w_]+)%)$',
'%$xavp%(([%w_^%[]+)%[(%d+)%]=>([%w_]+)%)$'
'%$xavp%(([%w_^%[]+)=>([%w_^%[]+)%)$',
'%$xavp%(([%w_^%[]+)%[(%d+)%]=>([%w_^%[]+)%)$',
'%$xavp%(([%w_^%[]+)=>([%w_^%[]+)%[(%d+)%]%)$',
'%$xavp%(([%w_^%[]+)%[(%d+)%]=>([%w_^%[]+)%[(%d+)%]%)$'
}
local logger = logging.file('reports/sr_pv_%s.log', '%Y-%m-%d')
for _,v in pairs(patterns) do
for _id, indx, key in string.gmatch(id, v) do
if not key and tonumber(indx) == nil then
for _id, indx, key, kindx in string.gmatch(id, v) do
logger:log(logging.DEBUG, string.format("_:%d id:%s v:%s _id:%s indx:%s key:%s kindx:%s", _, id, v, tostring(_id), tostring(indx), tostring(key), tostring(kindx)))
if _ == 5 or _ == 3 then
kindx = key
key = indx
indx = nil
else
indx = tonumber(indx)
end
return { id=_id, key=key, indx=indx, type='xavp' }
if kindx then
kindx = tonumber(kindx)
end
return { id=_id, key=key,
indx=indx, kindx=kindx, type='xavp' }
end
end
end
@ -250,20 +259,23 @@ pvMock = {
if not t.vars[result.private_id] then
return
end
if not result.kindx then
result.kindx = 0
end
if not result.key then
if not result.indx then
return t.vars[result.private_id]
else
result.real_indx = #t.vars[result.private_id]._et - result.indx
return t.vars[result.private_id]._et[result.real_indx]
end
end
if not result.indx then
result.indx = 0
end
result.real_indx = #t.vars[result.private_id]._et - result.indx
if t.vars[result.private_id]._et[result.real_indx] then
return t.vars[result.private_id]._et[result.real_indx][result.key]
if t.vars[result.private_id][result.indx] then
if t.vars[result.private_id][result.indx][result.key] then
if t.vars[result.private_id][result.indx][result.key][result.kindx] then
return t.vars[result.private_id][result.indx][result.key][result.kindx]
end
end
end
elseif result.type == 'avp' then
if t.vars[result.private_id] then
@ -291,12 +303,16 @@ pvMock = {
if not result.indx then
result.indx = 0
end
if result.indx ~= 0 then
if not result.kindx then
result.kindx = 0
end
if result.indx ~= 0 or result.kindx ~= 0 then
error(string.format("xavp(%s) has not been initilizated", result.id))
end
t.vars[result.private_id] = Stack:new()
temp = {}
temp[result.key] = value
temp[result.key] = Stack:new()
temp[result.key]:push(value)
t.vars[result.private_id]:push(temp)
elseif result.type == 'avp' then
t.vars[result.private_id] = Stack:new()
@ -312,17 +328,27 @@ pvMock = {
t.vars[result.private_id] = value
elseif result.type == 'xavp' then
if not result.indx then
if result.kindx and result.kindx ~= 0 then
error(string.format("kindx:%d must be 0", result.kindx))
end
temp = {}
temp[result.key] = value
temp[result.key] = Stack:new()
temp[result.key]:push(value)
t.vars[result.private_id]:push(temp)
else
result.real_indx = #t.vars[result.private_id]._et - result.indx
if t.vars[result.private_id]._et[result.real_indx] == nil then
if t.vars[result.private_id][result.indx] == nil then
error(string.format("xavp(%s[%d]) does not exist", result.id, result.indx))
elseif t.vars[result.private_id]._et[result.real_indx] == false then
t.vars[result.private_id]._et[result.real_indx] = {}
elseif t.vars[result.private_id][result.indx] == false then
t.vars[result.private_id][result.indx] = {}
end
t.vars[result.private_id]._et[result.real_indx][result.key] = value
if not result.kindx then
result.kindx = 0
end
if not t.vars[result.private_id][result.indx][result.key] then
t.vars[result.private_id][result.indx][result.key] = Stack:new()
--error(string.format("t:%s result:%s", table.tostring(t.vars[result.private_id]), table.tostring(result)))
end
t.vars[result.private_id][result.indx][result.key]:push(value)
end
elseif result.type == 'avp' then
t.vars[result.private_id]:push(value)
@ -371,8 +397,7 @@ pvMock = {
return
else
-- xavp(g[0])
result.real_indx = #t.vars[result.private_id]._et - result.indx
t.vars[result.private_id]._et[result.real_indx] = false
t.vars[result.private_id][result.indx] = false
return
end
else
@ -381,8 +406,7 @@ pvMock = {
end
end
-- xavp(g[1]=>k)
result.real_indx = #t.vars[result.private_id]._et - result.indx
t.vars[result.private_id]._et[result.real_indx][result.key] = nil
t.vars[result.private_id][result.indx][result.key] = nil
end
elseif result.type == 'avp' then
t.vars[result.private_id] = nil
@ -434,31 +458,40 @@ xavpMock = {
t.__class__ = 'hdrMock'
t.pv = pv
function t._get_xavp(xavp_name, index)
function t._get_xavp(xavp_name, index, mode)
local private_id = "xavp:" .. xavp_name
local real_indx = #t.pv.vars[private_id]._et - index
local k,v
local temp = {}
if not t.pv.vars[private_id] then
error(string.format("%s not found", xavp_name))
elseif not t.pv.vars[private_id]._et[real_indx] then
error(string.format("%s[%d] not found", xavp_name, indx))
elseif not t.pv.vars[private_id][index] then
error(string.format("%s[%d] not found", xavp_name, index))
end
if mode == 0 then
for k,v in pairs(t.pv.vars[private_id][index]) do
temp[k] = v:list()
end
else
for k,v in pairs(t.pv.vars[private_id][index]) do
temp[k] = v[0]
end
end
return t.pv.vars[private_id]._et[real_indx]
return temp
end
function t.get_keys(xavp_name, index)
local k,_
local output = {}
xavp = t._get_xavp(xavp_name, index)
xavp = t._get_xavp(xavp_name, index, 1)
for k,_ in pairs(xavp) do
table.insert(output, k)
end
return output
end
function t.get(xavp_name, index)
xavp = t._get_xavp(xavp_name, index)
function t.get(xavp_name, index, mode)
xavp = t._get_xavp(xavp_name, index, mode)
return xavp
end

@ -138,6 +138,8 @@ TestSRMock = {}
assertEquals(result.type, 'xavp')
assertEquals(result.id, 'id')
assertEquals(result.key, 'key')
assertIsNil(result.indx)
assertIsNil(result.kindx)
assertFalse(result.clean)
end
@ -149,6 +151,7 @@ TestSRMock = {}
assertEquals(result.id, 'id1')
assertEquals(result.key, 'key3g2')
assertEquals(result.indx, 8)
assertIsNil(result.kindx)
assertFalse(result.clean)
result = self.sr.pv._is_xavp("$xavp(id2g1f[9]=>keygg33_f)")
assertTrue(result)
@ -156,6 +159,27 @@ TestSRMock = {}
assertEquals(result.id, 'id2g1f')
assertEquals(result.key, 'keygg33_f')
assertEquals(result.indx, 9)
assertIsNil(result.kindx)
assertFalse(result.clean)
end
function TestSRMock:test_is_xavp_complex_indx()
local result
result = self.sr.pv._is_xavp("$xavp(id1[8]=>key3g2)")
assertTrue(result)
assertEquals(result.type, 'xavp')
assertEquals(result.id, 'id1')
assertEquals(result.key, 'key3g2')
assertEquals(result.indx, 8)
assertIsNil(result.kindx)
assertFalse(result.clean)
result = self.sr.pv._is_xavp("$xavp(id2g1f[9]=>keygg33_f[2])")
assertTrue(result)
assertEquals(result.type, 'xavp')
assertEquals(result.id, 'id2g1f')
assertEquals(result.key, 'keygg33_f')
assertEquals(result.indx, 9)
assertEquals(result.kindx, 2)
assertFalse(result.clean)
end
@ -177,7 +201,8 @@ TestSRMock = {}
assertEquals(result.type, 'xavp')
assertEquals(result.id, 'id1')
assertFalse(result.key)
assertFalse(result.indx)
assertIsNil(result.indx)
assertIsNil(result.kindx)
assertFalse(result.clean)
end
@ -293,6 +318,14 @@ TestSRMock = {}
assertEquals(self.sr.pv.get("$xavp(g=>bythere)"), "value_bye")
end
function TestSRMock:test_xavp_sets_multi()
self.sr.pv.sets("$xavp(g=>hithere)", "value1")
assertEquals(self.sr.pv.get("$xavp(g=>hithere)"), "value1")
self.sr.pv.sets("$xavp(g[0]=>hithere)", "value0")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere)"), "value0")
assertEquals(self.sr.pv.get("$xavp(g=>hithere[1])"), "value1")
end
function TestSRMock:test_xavp_sets1()
self.sr.pv.sets("$xavp(g=>hithere)", "value")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere)"), "value")
@ -301,6 +334,17 @@ TestSRMock = {}
assertEquals(self.sr.pv.get("$xavp(g[1]=>hithere)"), "value")
end
function TestSRMock:test_xavp_sets1_multi()
self.sr.pv.sets("$xavp(g=>hithere)", "value1")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere)"), "value1")
self.sr.pv.sets("$xavp(g[0]=>hithere)", "value0")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere)"), "value0")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere[1])"), "value1")
self.sr.pv.sets("$xavp(g=>hithere)", "value_bye")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere)"), "value_bye")
assertEquals(self.sr.pv.get("$xavp(g[1]=>hithere)"), "value0")
end
function TestSRMock:test_xavp_seti()
self.sr.pv.seti("$xavp(t=>hithere)", 0)
assertEquals(self.sr.pv.get("$xavp(t[0]=>hithere)"), 0)
@ -314,6 +358,13 @@ TestSRMock = {}
assertTrue(self.sr.pv.get, "$xavp(g)")
end
function TestSRMock:test_xavp_get_multi()
self.sr.pv.sets("$xavp(g=>hithere)", "value1")
self.sr.pv.sets("$xavp(g[0]=>hithere)", "value2")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere[0])"), "value2")
assertEquals(self.sr.pv.get("$xavp(g[0]=>hithere[1])"), "value1")
end
function TestSRMock:test_avp_get_simple()
self.sr.pv.sets("$avp(s:hithere)", "value")
assertEquals(self.sr.pv.get("$avp(s:hithere)"), "value")
@ -394,7 +445,6 @@ TestSRMock = {}
self.sr.pv.unset("$xavp(g[0]=>t)")
assertEquals(self.sr.pv.get("$xavp(g[0]=>t)"), nil)
assertEquals(self.sr.pv.get("$xavp(g[1]=>t)"), "value")
assertTrue(self.sr.pv.get("$xavp(g[0])"))
--
self.sr.pv.unset("$xavp(g[1])")
assertFalse(self.sr.pv.get("$xavp(g[1])"))
@ -456,9 +506,11 @@ TestXAVPMock = {}
self.pv.sets("$xavp(test=>uno)", "uno")
assertEquals(self.pv.get("$xavp(test[0]=>uno)"), "uno")
self.pv.seti("$xavp(test[0]=>dos)", 4)
self.pv.seti("$xavp(test[0]=>dos)", 2)
assertEquals(self.pv.get("$xavp(test[0]=>dos)"), 2)
self.pv.seti("$xavp(test=>uno)", 1)
self.pv.seti("$xavp(test=>uno)", 3)
self.pv.seti("$xavp(test[0]=>uno)", 1)
assertEquals(self.pv.get("$xavp(test[0]=>uno)"), 1)
self.pv.sets("$xavp(test[0]=>dos)", "dos")
assertEquals(self.pv.get("$xavp(test[0]=>dos)"), "dos")
@ -485,15 +537,27 @@ TestXAVPMock = {}
assertItemsEquals(l, {"uno", "dos"})
end
function TestXAVPMock:test_get()
local l = self.xavp.get("test", 0)
function TestXAVPMock:test_get_simple()
local l = self.xavp.get("test", 0, 1)
assertTrue(l)
assertItemsEquals(l, {uno=1, dos="dos", tres=3})
end
function TestXAVPMock:test_get()
local l = self.xavp.get("test", 1)
function TestXAVPMock:test_get_simple_1()
local l = self.xavp.get("test", 1, 1)
assertTrue(l)
assertItemsEquals(l, {uno="uno", dos=2})
end
function TestXAVPMock:test_get()
local l = self.xavp.get("test", 0, 0)
assertTrue(l)
assertItemsEquals(l, {uno={1,3}, dos={"dos"}, tres={3}})
end
function TestXAVPMock:test_get_1()
local l = self.xavp.get("test", 1, 0)
assertTrue(l)
assertItemsEquals(l, {uno={"uno"}, dos={2,4}})
end
--EOF
Loading…
Cancel
Save