local c_mctp_eid_table = require('mctp_eid_table')
local lu = require('luaunit')
local mctp_def = require('mctp_def')
TestMctpEidTable = {}
function TestMctpEidTable:setupClass()
local system_id = 1
self.eid_table = c_mctp_eid_table.new(system_id)
end
function TestMctpEidTable:teardown()
self.eid_table:reset()
end
local reg_info =
{ module_name = 'MctpTest', phy_addr = 8, msg_src_eid = 9, msg_type = 2, pid = 1, process_tag = 3224632059 }
local reg_info2 =
{ module_name = 'MctpTest', phy_addr = 8, msg_src_eid = 9, msg_type = 2, pid = 2, process_tag = 3224632059 }
function TestMctpEidTable:test_add_reg_info()
local updated = false
local add_reg = {}
local del_reg = {}
local update_reg = {}
self.eid_table.on_update_reg:on(function(reg)
updated = true
update_reg = reg
end)
self.eid_table.on_add_reg:on(function(reg)
add_reg = reg
end)
self.eid_table.on_del_reg:on(function(reg)
del_reg = reg
end)
self.eid_table:add_reg_info(
reg_info.process_tag,
reg_info.pid,
reg_info.msg_src_eid,
reg_info.phy_addr,
reg_info.msg_type,
reg_info.module_name
)
local expert = {
module_name = 'MctpTest',
phy_addr = 8,
msg_src_eid = 9,
msg_type = 2,
pid = 1,
process_tag = 3224632059,
medium_type = mctp_def.PHY_MEDIUM_PCI,
ep_status = mctp_def.ENDPOINT_IS_DISCOVERY,
}
lu.assertEquals(updated, false)
lu.assertEquals(add_reg, expert)
lu.assertEquals(self.eid_table.reg_table[1], expert)
updated = false
self.eid_table:add_reg_info(
reg_info2.process_tag,
reg_info2.pid,
reg_info2.msg_src_eid,
reg_info2.phy_addr,
reg_info2.msg_type,
reg_info2.module_name
)
local expert2 = {
module_name = 'MctpTest',
phy_addr = 8,
msg_src_eid = 9,
msg_type = 2,
pid = 2,
process_tag = 3224632059,
medium_type = mctp_def.PHY_MEDIUM_PCI,
ep_status = mctp_def.ENDPOINT_IS_DISCOVERY,
}
lu.assertEquals(updated, false)
lu.assertEquals(add_reg, expert2)
lu.assertEquals(self.eid_table.reg_table[2], expert2)
expert.module_name = 'MctpTest2'
self.eid_table:add_reg_info(
reg_info.process_tag,
reg_info.pid,
reg_info.msg_src_eid,
reg_info.phy_addr,
reg_info.msg_type,
'MctpTest2'
)
lu.assertEquals(updated, true)
lu.assertEquals(update_reg, expert)
lu.assertEquals(self.eid_table.reg_table[1], expert)
self.eid_table:reset()
lu.assertEquals(del_reg, expert)
lu.assertEquals(self.eid_table.reg_table, {})
end
function TestMctpEidTable:test_dump_eid_table()
self.eid_table:add_reg_info(
reg_info.process_tag,
reg_info.pid,
reg_info.msg_src_eid,
reg_info.phy_addr,
reg_info.msg_type,
reg_info.module_name
)
local res = self.eid_table:dump_eid_table()
local expert = {
'[MCTP Registry Info]\n',
'idx:0, module_name = MctpTest, phy_addr = 8, msg_src_eid = 9, msg_type = 2, pid = 1, process_tag = 3224632059\n',
}
lu.assertEquals(res, expert)
end
function TestMctpEidTable:test_find_reg_info()
self.eid_table:add_reg_info(
reg_info.process_tag,
reg_info.pid,
reg_info.msg_src_eid,
reg_info.phy_addr,
reg_info.msg_type,
reg_info.module_name
)
local res = self.eid_table:find_reg_info(reg_info.pid, reg_info.msg_src_eid, reg_info.phy_addr, reg_info.msg_type)
local expert = {
module_name = 'MctpTest',
phy_addr = 8,
msg_src_eid = 9,
msg_type = 2,
pid = 1,
process_tag = 3224632059,
medium_type = mctp_def.PHY_MEDIUM_PCI,
ep_status = mctp_def.ENDPOINT_IS_DISCOVERY,
}
lu.assertEquals(res, expert)
self.eid_table:reset()
res = self.eid_table:find_reg_info(reg_info.pid, reg_info.msg_src_eid, reg_info.phy_addr, reg_info.msg_type)
lu.assertEquals(res, nil)
end