aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorHadriel Kaplan <hadrielk@yahoo.com>2014-02-20 10:12:33 -0500
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2014-02-20 18:42:13 +0000
commitfe769e73501b5b1e324df3352266de77a8af456e (patch)
tree4dd459d18b04675e8afc3f3b95ff24c7ae6cd22d /test
parentd574fd89f4f5698a5b14014efe0830eecce7a991 (diff)
Add 4 more test scripts for Lua, and its own testsuite menu
This adds test scripts for verifying Pinfo, Address, Field, FieldInfo, NSTime and Listener classes/functions. It also moves Lua test scripts out of unittests and into its own new testsuite. Change-Id: I65c238fd459efb96db3f8f9145842cd038dea7c7 Reviewed-on: https://code.wireshark.org/review/270 Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/lua/field.lua140
-rw-r--r--test/lua/listener.lua233
-rw-r--r--test/lua/nstime.lua190
-rw-r--r--test/lua/pinfo.lua301
-rwxr-xr-xtest/suite-unittests.sh104
-rw-r--r--test/suite-wslua.sh216
-rwxr-xr-xtest/test.sh6
7 files changed, 1086 insertions, 104 deletions
diff --git a/test/lua/field.lua b/test/lua/field.lua
new file mode 100644
index 0000000000..b77528729e
--- /dev/null
+++ b/test/lua/field.lua
@@ -0,0 +1,140 @@
+-- test script for wslua Field/FieldInfo functions
+-- use with dhcp.pcap in test/captures directory
+
+
+------------- helper funcs ------------
+local packet_count = 0
+local function incPktCount(name)
+ packet_count = packet_count + 1
+end
+
+local function testing(...)
+ print("---- Testing "..tostring(...).." for packet #"..packet_count.." ----")
+end
+
+local function test(name, ...)
+ io.stdout:write("test "..name.."-"..packet_count.."...")
+ if (...) == true then
+ io.stdout:write("passed\n")
+ else
+ io.stdout:write("failed!\n")
+ error(name.." test failed!")
+ end
+end
+
+local function toMacAddr(addrhex)
+ return addrhex:gsub("..","%0:"):sub(1,-2)
+end
+
+-- the following are so we can use pcall (which needs a function to call)
+local function makeField(name)
+ local foo = Field.new(name)
+ return true
+end
+
+local function makeFieldInfo(field)
+ local foo = field()
+ return true
+end
+
+local function setFieldInfo(finfo,name,value)
+ finfo[name] = value
+ return true
+end
+
+local function getFieldInfo(finfo,name)
+ local foo = finfo[name]
+ return true
+end
+
+--------------------------
+
+testing("Field")
+
+
+test("Field.new-0",pcall(makeField,"ip.src"))
+test("Field.new-1",not pcall(makeField,"FooBARhowdy"))
+test("Field.new-2",not pcall(makeField))
+test("Field.new-3",not pcall(makeField,""))
+test("Field.new-4",not pcall(makeField,"IP.SRC"))
+
+-- declare some field extractors
+local f_frame_proto = Field.new("frame.protocols")
+local f_eth_src = Field.new("eth.src")
+local f_eth_dst = Field.new("eth.dst")
+local f_eth_mac = Field.new("eth.addr")
+local f_ip_src = Field.new("ip.src")
+local f_ip_dst = Field.new("ip.dst")
+local f_udp_srcport = Field.new("udp.srcport")
+local f_udp_dstport = Field.new("udp.dstport")
+local f_bootp_hw = Field.new("bootp.hw.mac_addr")
+local f_bootp_opt = Field.new("bootp.option.type")
+
+test("Field__tostring-1", tostring(f_frame_proto) == "frame.protocols")
+
+-- make sure can't create a FieldInfo outside tap
+test("Field__call-1",not pcall(makeFieldInfo,f_eth_src))
+
+local tap = Listener.new()
+
+--------------------------
+
+function tap.packet(pinfo,tvb)
+ incPktCount()
+
+ testing("Field")
+ test("Field__tostring-2", tostring(f_frame_proto) == "frame.protocols")
+
+ -- make sure can't create a Field inside tap
+ test("Field.new-5",not pcall(makeField,"ip.src"))
+
+ test("Field__call-2",pcall(makeFieldInfo,f_eth_src))
+
+
+ testing("FieldInfo")
+
+ -- check ether addr
+ local fi_eth_src = f_eth_src()
+ test("FieldInfo.range-0",pcall(getFieldInfo,fi_eth_src,"range"))
+ local eth_macs = { f_eth_mac() }
+ local eth_src1 = tostring(f_eth_src().range)
+ local eth_src2 = tostring(tvb:range(6,6))
+ local eth_src3 = tostring(eth_macs[2].tvb)
+
+ test("FieldInfo.range-1", eth_src1 == eth_src2)
+ test("FieldInfo.range-2", eth_src1 == eth_src3)
+ test("FieldInfo.range-3",not pcall(setFieldInfo,fi_eth_src,"range",3))
+
+ test("FieldInfo.generated-1", f_frame_proto().generated == true)
+ test("FieldInfo.generated-2", eth_macs[2].generated == false)
+ test("FieldInfo.generated-3",not pcall(setFieldInfo,fi_eth_src,"generated",3))
+
+ test("FieldInfo.name-1", fi_eth_src.name == "eth.src")
+ test("FieldInfo.name-2",not pcall(setFieldInfo,fi_eth_src,"name","3"))
+
+ test("FieldInfo.label-1", fi_eth_src.label == tostring(fi_eth_src))
+ test("FieldInfo.label-2", fi_eth_src.label == toMacAddr(eth_src1))
+ test("FieldInfo.label-3",not pcall(setFieldInfo,fi_eth_src,"label","3"))
+
+ test("FieldInfo.display-1", select(1, string.find(fi_eth_src.display, toMacAddr(eth_src1))) ~= nil)
+ test("FieldInfo.display-2",not pcall(setFieldInfo,fi_eth_src,"display","3"))
+
+ test("FieldInfo.eq-1", eth_macs[2] == select(2, f_eth_mac()))
+ test("FieldInfo.eq-2", eth_macs[1] ~= fi_eth_src)
+ test("FieldInfo.eq-3", eth_macs[1] == f_eth_dst())
+
+ test("FieldInfo.offset-1", eth_macs[1].offset == 0)
+ test("FieldInfo.offset-2", -fi_eth_src == 6)
+ test("FieldInfo.offset-3",not pcall(setFieldInfo,fi_eth_src,"offset","3"))
+
+ test("FieldInfo.len-1", fi_eth_src.len == 6)
+ test("FieldInfo.len-2",not pcall(setFieldInfo,fi_eth_src,"len",6))
+
+ if packet_count == 4 then
+ print("\n-----------------------------\n")
+ print("All tests passed!\n\n")
+ end
+
+end
+
+
diff --git a/test/lua/listener.lua b/test/lua/listener.lua
new file mode 100644
index 0000000000..ecb1a52a3f
--- /dev/null
+++ b/test/lua/listener.lua
@@ -0,0 +1,233 @@
+-- test script for various Lua functions
+-- use with dhcp.pcap in test/captures directory
+
+
+------------- general test helper funcs ------------
+local FRAME = "frame"
+local ETH = "eth"
+local IP = "ip"
+local BOOTP = "bootp"
+local OTHER = "other"
+
+local packet_counts = {}
+local function incPktCount(name)
+ if not packet_counts[name] then
+ packet_counts[name] = 1
+ else
+ packet_counts[name] = packet_counts[name] + 1
+ end
+end
+local function getPktCount(name)
+ return packet_counts[name] or 0
+end
+
+local passed = {}
+local function setPassed(name)
+ if not passed[name] then
+ passed[name] = 1
+ else
+ passed[name] = passed[name] + 1
+ end
+end
+
+-- expected number of runs per type
+-- note ip only runs 3 times because it gets removed
+-- and bootp only runs twice because the filter makes it run
+-- once and then it gets replaced with a different one for the second time
+local taptests = { [FRAME]=4, [ETH]=4, [IP]=3, [BOOTP]=2, [OTHER]=15 }
+local function getResults()
+ print("\n-----------------------------\n")
+ for k,v in pairs(taptests) do
+ if passed[k] ~= v then
+ print("Something didn't run or ran too much... tests failed!")
+ print("Listener type "..k.." expected: "..v..", but got: "..tostring(passed[k]))
+ return false
+ end
+ end
+ print("All tests passed!\n\n")
+ return true
+end
+
+
+local function testing(type,...)
+ print("---- Testing "..type.." ---- "..tostring(...).." for packet # "..getPktCount(type).." ----")
+end
+
+local function test(type,name, ...)
+ io.stdout:write("test "..type.."-->"..name.."-"..getPktCount(type).."...")
+ if (...) == true then
+ io.stdout:write("passed\n")
+ return true
+ else
+ io.stdout:write("failed!\n")
+ error(name.." test failed!")
+ end
+end
+
+---------
+-- the following are so we can use pcall (which needs a function to call)
+local function makeListener(...)
+ local foo = Listener.new(...)
+end
+
+local function setListener(tap,name,value)
+ tap[name] = value
+end
+
+local function getListener(tap,name)
+ local foo = tap[name]
+end
+
+------------- test script ------------
+testing(OTHER,"negative tests")
+local orig_test = test
+test = function (...)
+ if orig_test(OTHER,...) then
+ setPassed(OTHER)
+ end
+end
+test("Listener.new-1",not pcall(makeListener,"FooBARhowdy"))
+test("Listener.new-2",not pcall(makeListener,"ip","FooBARhowdy"))
+local tmptap = Listener.new()
+local func = function(...)
+ passed[OTHER] = 0
+ error("This shouldn't be called!")
+end
+test("Listener.set-3",pcall(setListener,tmptap,"packet",func))
+test("Listener.set-4",pcall(setListener,tmptap,"reset",func))
+test("Listener.set-5",pcall(setListener,tmptap,"draw",func))
+test("Listener.set-6",not pcall(setListener,Listener,"packet",func))
+test("Listener.set-7",not pcall(setListener,Listener,"reset",func))
+test("Listener.set-8",not pcall(setListener,Listener,"draw",func))
+test("Listener.set-9",not pcall(setListener,Listener,"foobar",func))
+
+test("Listener.get-10",not pcall(getListener,tmptap,"packet",func))
+test("Listener.get-11",not pcall(getListener,tmptap,"reset",func))
+test("Listener.get-12",not pcall(getListener,tmptap,"draw",func))
+
+print("removing tmptap twice")
+test("Listener.remove-13",pcall(tmptap.remove,tmptap))
+test("Listener.remove-14",pcall(tmptap.remove,tmptap))
+
+test("typeof-15", typeof(tmptap) == "Listener")
+
+-- revert to original test function
+test = orig_test
+
+
+-- declare some field extractors
+local f_eth_src = Field.new("eth.src")
+local f_eth_dst = Field.new("eth.dst")
+local f_eth_mac = Field.new("eth.addr")
+local f_ip_src = Field.new("ip.src")
+local f_ip_dst = Field.new("ip.dst")
+local f_bootp_hw = Field.new("bootp.hw.mac_addr")
+local f_bootp_opt = Field.new("bootp.option.type")
+
+local tap_frame = Listener.new()
+local tap_eth = Listener.new("eth")
+local tap_ip = Listener.new("ip","bootp")
+local tap_bootp = Listener.new("bootp","bootp.option.dhcp == 1")
+
+local second_time = false
+
+function tap_frame.packet(pinfo,tvb,frame)
+ incPktCount(FRAME)
+ testing(FRAME,"Frame")
+
+ test(FRAME,"arg-1", typeof(pinfo) == "Pinfo")
+ test(FRAME,"arg-2", typeof(tvb) == "Tvb")
+ test(FRAME,"arg-3", frame == nil)
+
+ test(FRAME,"pinfo.number-1",pinfo.number == getPktCount(FRAME))
+
+ -- check ether addr
+ local eth_src1 = tostring(f_eth_src().range)
+ local eth_src2 = tostring(tvb:range(6,6))
+ test(FRAME,"FieldInfo.range-1", eth_src1 == eth_src2)
+
+ setPassed(FRAME)
+end
+
+function tap_eth.packet(pinfo,tvb,eth)
+ incPktCount(ETH)
+
+ -- on the 4th run of eth, remove the ip one and add a new bootp one
+ if getPktCount(ETH) == 4 then
+ testing(ETH,"removing ip tap, replacing bootp tap")
+ tap_ip:remove()
+ tap_bootp:remove()
+ tap_bootp = Listener.new("bootp")
+ tap_bootp.packet = bootp_packet
+ second_time = true
+ end
+
+ testing(ETH,"Eth")
+
+ test(ETH,"arg-1", typeof(pinfo) == "Pinfo")
+ test(ETH,"arg-2", typeof(tvb) == "Tvb")
+ test(ETH,"arg-3", type(eth) == "table")
+
+ test(ETH,"pinfo.number-1",pinfo.number == getPktCount(ETH))
+
+ -- check ether addr
+ local eth_src1 = tostring(f_eth_src().range)
+ local eth_src2 = tostring(tvb:range(6,6))
+ test(ETH,"FieldInfo.range-1", eth_src1 == eth_src2)
+
+ setPassed(ETH)
+end
+
+function tap_ip.packet(pinfo,tvb,ip)
+ incPktCount(IP)
+ testing(IP,"IP")
+
+ test(IP,"arg-1", typeof(pinfo) == "Pinfo")
+ test(IP,"arg-2", typeof(tvb) == "Tvb")
+ test(IP,"arg-3", type(ip) == "table")
+
+ test(IP,"pinfo.number-1",pinfo.number == getPktCount(IP))
+
+ -- check ether addr
+ local eth_src1 = tostring(f_eth_src().range)
+ local eth_src2 = tostring(tvb:range(6,6))
+ test(IP,"FieldInfo.range-1", eth_src1 == eth_src2)
+
+ setPassed(IP)
+end
+
+bootp_packet = function (pinfo,tvb,bootp)
+ incPktCount(BOOTP)
+ testing(BOOTP,"Bootp")
+
+ test(BOOTP,"arg-1", typeof(pinfo) == "Pinfo")
+ test(BOOTP,"arg-2", typeof(tvb) == "Tvb")
+ test(BOOTP,"arg-3", bootp == nil)
+
+ if not second_time then
+ test(BOOTP,"pinfo.number-1",pinfo.number == getPktCount(BOOTP))
+ else
+ test(BOOTP,"pinfo.number-1",pinfo.number == 4)
+ end
+
+ -- check ether addr
+ local eth_src1 = tostring(f_eth_src().range)
+ local eth_src2 = tostring(tvb:range(6,6))
+ test(BOOTP,"FieldInfo.range-1", eth_src1 == eth_src2)
+
+ setPassed(BOOTP)
+end
+tap_bootp.packet = bootp_packet
+
+function tap_frame.reset()
+ -- reset never gets called in tshark (sadly)
+ error("reset called!!")
+end
+
+function tap_frame.draw()
+ getResults()
+end
+
+
+
+
diff --git a/test/lua/nstime.lua b/test/lua/nstime.lua
new file mode 100644
index 0000000000..65d1b60e93
--- /dev/null
+++ b/test/lua/nstime.lua
@@ -0,0 +1,190 @@
+-- test script for various Lua functions
+-- use with dhcp.pcap in test/captures directory
+
+
+------------- general test helper funcs ------------
+local FRAME = "frame"
+local OTHER = "other"
+
+local packet_counts = {}
+local function incPktCount(name)
+ if not packet_counts[name] then
+ packet_counts[name] = 1
+ else
+ packet_counts[name] = packet_counts[name] + 1
+ end
+end
+local function getPktCount(name)
+ return packet_counts[name] or 0
+end
+
+local passed = {}
+local function setPassed(name)
+ if not passed[name] then
+ passed[name] = 1
+ else
+ passed[name] = passed[name] + 1
+ end
+end
+
+-- expected number of runs per type
+-- note ip only runs 3 times because it gets removed
+-- and bootp only runs twice because the filter makes it run
+-- once and then it gets replaced with a different one for the second time
+local taptests = { [FRAME]=4, [OTHER]=37 }
+local function getResults()
+ print("\n-----------------------------\n")
+ for k,v in pairs(taptests) do
+ if passed[k] ~= v then
+ print("Something didn't run or ran too much... tests failed!")
+ print("Listener type "..k.." expected: "..v..", but got: "..tostring(passed[k]))
+ return false
+ end
+ end
+ print("All tests passed!\n\n")
+ return true
+end
+
+
+local function testing(type,...)
+ print("---- Testing "..type.." ---- "..tostring(...).." for packet # "..getPktCount(type).."----")
+end
+
+local function test(type,name, ...)
+ io.stdout:write("test "..type.."-->"..name.."-"..getPktCount(type).."...")
+ if (...) == true then
+ io.stdout:write("passed\n")
+ return true
+ else
+ io.stdout:write("failed!\n")
+ error(name.." test failed!")
+ end
+end
+
+---------
+-- the following are so we can use pcall (which needs a function to call)
+local function makeNSTime(...)
+ local foo = NSTime(...)
+end
+
+local function setNSTime(nst,name,value)
+ nst[name] = value
+end
+
+local function getNSTime(nst,name)
+ local foo = nst[name]
+end
+
+------------- test script ------------
+testing(OTHER,"negative tests")
+local orig_test = test
+test = function (...)
+ if orig_test(OTHER,...) then
+ setPassed(OTHER)
+ end
+end
+test("NSTime.new-1",not pcall(makeNSTime,"FooBARhowdy"))
+test("NSTime.new-2",not pcall(makeNSTime,"ip","FooBARhowdy"))
+local tmptime = NSTime()
+test("NSTime.set-3",pcall(setNSTime,tmptime,"secs",10))
+test("NSTime.set-4",not pcall(setNSTime,tmptime,"foobar",1000))
+test("NSTime.set-5",pcall(setNSTime,tmptime,"nsecs",123))
+test("NSTime.set-6",not pcall(setNSTime,NSTime,"secs",0))
+test("NSTime.set-7",not pcall(setNSTime,tmptime,"secs","foobar"))
+test("NSTime.set-8",not pcall(setNSTime,NSTime,"nsecs",0))
+test("NSTime.set-9",not pcall(setNSTime,tmptime,"nsecs","foobar"))
+
+test("NSTime.get-10",pcall(getNSTime,tmptime,"secs"))
+test("NSTime.get-11",pcall(getNSTime,tmptime,"nsecs"))
+test("NSTime.get-12",not pcall(getNSTime,NSTime,"secs"))
+test("NSTime.get-13",not pcall(getNSTime,NSTime,"nsecs"))
+
+
+testing(OTHER,"basic tests")
+local first = NSTime()
+local second = NSTime(100,100)
+local third = NSTime(0,100)
+test("NSTime.secs-14", first.secs == 0)
+test("NSTime.secs-15", second.secs == 100)
+test("NSTime.secs-16", third.secs == 0)
+
+test("NSTime.nsecs-17", first.nsecs == 0)
+test("NSTime.nsecs-18", second.nsecs == 100)
+test("NSTime.nsecs-19", third.nsecs == 100)
+
+test("NSTime.eq-20", first == NSTime())
+test("NSTime.neq-21", second ~= third)
+
+test("NSTime.add-22", first + second == second)
+test("NSTime.add-23", third + NSTime(100,0) == second)
+test("NSTime.add-24", NSTime(100) + NSTime(nil,100) == second)
+
+test("NSTime.lt-25", third < second)
+test("NSTime.gt-26", third > first)
+test("NSTime.le-27", second <= NSTime(100,100))
+
+test("NSTime.unm-28", -first == first)
+test("NSTime.unm-29", -(-second) == second)
+test("NSTime.unm-30", -second == NSTime(-100,-100))
+test("NSTime.unm-31", -third == NSTime(0,-100))
+
+test("NSTime.tostring-32", tostring(first) == "0.000000000")
+test("NSTime.tostring-33", tostring(second) == "100.000000100")
+test("NSTime.tostring-34", tostring(third) == "0.000000100")
+
+
+testing(OTHER,"setters/getters")
+first.secs = 123
+first.nsecs = 100
+test("NSTime.set-35", first == NSTime(123,100))
+test("NSTime.get-36", first.secs == 123)
+test("NSTime.get-37", first.nsecs == 100)
+
+
+----------------------------------
+-- revert to original test function, kinda sorta
+test = function (...)
+ return orig_test(FRAME,...)
+end
+
+
+-- declare some field extractors
+local f_frame_time = Field.new("frame.time")
+local f_frame_time_rel = Field.new("frame.time_relative")
+local f_frame_time_delta = Field.new("frame.time_delta")
+
+local tap = Listener.new()
+
+local begin = NSTime()
+local now, previous
+
+function tap.packet(pinfo,tvb,frame)
+ incPktCount(FRAME)
+ testing(FRAME,"NSTime in Frame")
+
+ local fi_now = f_frame_time()
+ local fi_rel = f_frame_time_rel()
+ local fi_delta = f_frame_time_delta()
+
+ test("typeof-1", typeof(begin) == "NSTime")
+ test("typeof-2", typeof(fi_now()) == "NSTime")
+
+ now = fi_now()
+ if getPktCount(FRAME) == 1 then
+ test("__eq-1", begin == fi_delta())
+ test("NSTime.secs-1", fi_delta().secs == 0)
+ test("NSTime.nsecs-1", fi_delta().nsecs == 0)
+ begin = fi_now()
+ else
+ test("__sub__eq-1", now - previous == fi_delta())
+ test("__sub__eq-2", now - begin == fi_rel())
+ test("__add-1", (previous - begin) + (now - previous) == fi_rel())
+ end
+ previous = now
+
+ setPassed(FRAME)
+end
+
+function tap.draw()
+ getResults()
+end
diff --git a/test/lua/pinfo.lua b/test/lua/pinfo.lua
new file mode 100644
index 0000000000..756af89cf7
--- /dev/null
+++ b/test/lua/pinfo.lua
@@ -0,0 +1,301 @@
+-- test script for Pinfo and Address functions
+-- use with dhcp.pcap in test/captures directory
+
+local major, minor, micro = get_version():match("(%d+)%.(%d+)%.(%d+)")
+if major then
+ major = tonumber(major)
+ minor = tonumber(minor)
+ micro = tonumber(micro)
+else
+ major = 99
+ minor = 99
+ micro = 99
+end
+
+------------- general test helper funcs ------------
+local FRAME = "frame"
+local OTHER = "other"
+
+local packet_counts = {}
+local function incPktCount(name)
+ if not packet_counts[name] then
+ packet_counts[name] = 1
+ else
+ packet_counts[name] = packet_counts[name] + 1
+ end
+end
+local function getPktCount(name)
+ return packet_counts[name] or 0
+end
+
+local passed = {}
+local function setPassed(name)
+ if not passed[name] then
+ passed[name] = 1
+ else
+ passed[name] = passed[name] + 1
+ end
+end
+
+-- expected number of runs per type
+-- note ip only runs 3 times because it gets removed
+-- and bootp only runs twice because the filter makes it run
+-- once and then it gets replaced with a different one for the second time
+local taptests = { [FRAME]=4, [OTHER]=0 }
+local function getResults()
+ print("\n-----------------------------\n")
+ for k,v in pairs(taptests) do
+ if v ~= 0 and passed[k] ~= v then
+ print("Something didn't run or ran too much... tests failed!")
+ print("Listener type "..k.." expected: "..v..", but got: "..tostring(passed[k]))
+ return false
+ end
+ end
+ print("All tests passed!\n\n")
+ return true
+end
+
+
+local function testing(type,...)
+ print("---- Testing "..type.." ---- "..tostring(...).." for packet # "..getPktCount(type).." ----")
+end
+
+local function test(type,name, ...)
+ io.stdout:write("test "..type.."-->"..name.."-"..getPktCount(type).."...")
+ if (...) == true then
+ io.stdout:write("passed\n")
+ return true
+ else
+ io.stdout:write("failed!\n")
+ error(name.." test failed!")
+ end
+end
+
+---------
+-- the following are so we can use pcall (which needs a function to call)
+local function setPinfo(pinfo,name,value)
+ pinfo[name] = value
+end
+
+local function getPinfo(pinfo,name)
+ local foo = pinfo[name]
+end
+
+------------- test script ------------
+
+----------------------------------
+-- modify original test function, kinda sorta
+local orig_test = test
+test = function (...)
+ return orig_test(FRAME,...)
+end
+
+
+local tap = Listener.new()
+
+
+function tap.packet(pinfo,tvb)
+ incPktCount(FRAME)
+ testing(FRAME,"Pinfo in Frame")
+
+ test("typeof-1", typeof(pinfo) == "Pinfo")
+
+ test("tostring-1", tostring(pinfo) == "a Pinfo")
+
+ testing(FRAME,"negative tests")
+
+ -- try to set read-only attributes
+--[[
+these tests *should* ALL pass, but currently pinfo read-only members
+silently accept being set (though nothing happens) Blech!!
+ test("Pinfo.number-set-1",not pcall(setPinfo,pinfo,"number",0))
+ test("Pinfo.len-set-1",not pcall(setPinfo,pinfo,"len",0))
+ test("Pinfo.caplen-set-1",not pcall(setPinfo,pinfo,"caplen",0))
+ test("Pinfo.rel_ts-set-1",not pcall(setPinfo,pinfo,"rel_ts",0))
+ test("Pinfo.delta_ts-set-1",not pcall(setPinfo,pinfo,"delta_ts",0))
+ test("Pinfo.delta_dis_ts-set-1",not pcall(setPinfo,pinfo,"delta_dis_ts",0))
+ test("Pinfo.visited-set-1",not pcall(setPinfo,pinfo,"visited",0))
+ test("Pinfo.lo-set-1",not pcall(setPinfo,pinfo,"lo",0))
+ test("Pinfo.hi-set-1",not pcall(setPinfo,pinfo,"hi",0))
+ test("Pinfo.port_type-set-1",not pcall(setPinfo,pinfo,"port_type",0))
+ test("Pinfo.ipproto-set-1",not pcall(setPinfo,pinfo,"ipproto",0))
+ test("Pinfo.match-set-1",not pcall(setPinfo,pinfo,"match",0))
+ test("Pinfo.curr_proto-set-1",not pcall(setPinfo,pinfo,"curr_proto",0))
+ test("Pinfo.columns-set-1",not pcall(setPinfo,pinfo,"columns",0))
+ test("Pinfo.cols-set-1",not pcall(setPinfo,pinfo,"cols",0))
+ test("Pinfo.private_data-set-1",not pcall(setPinfo,pinfo,"private_data",0))
+ test("Pinfo.private-set-1",not pcall(setPinfo,pinfo,"private",0))
+ test("Pinfo.fragmented-set-1",not pcall(setPinfo,pinfo,"fragmented",0))
+ test("Pinfo.in_error_pkt-set-1",not pcall(setPinfo,pinfo,"in_error_pkt",0))
+ test("Pinfo.match_uint-set-1",not pcall(setPinfo,pinfo,"match_uint",0))
+ test("Pinfo.match_string-set-1",not pcall(setPinfo,pinfo,"match_string",0))
+]]
+
+ -- wrong type being set
+ test("Pinfo.src-set-1",not pcall(setPinfo,pinfo,"src","foobar"))
+ test("Pinfo.dst-set-1",not pcall(setPinfo,pinfo,"dst","foobar"))
+ test("Pinfo.dl_src-set-1",not pcall(setPinfo,pinfo,"dl_src","foobar"))
+ test("Pinfo.dl_dst-set-1",not pcall(setPinfo,pinfo,"dl_dst","foobar"))
+ test("Pinfo.net_src-set-1",not pcall(setPinfo,pinfo,"net_src","foobar"))
+ test("Pinfo.net_dst-set-1",not pcall(setPinfo,pinfo,"net_dst","foobar"))
+ test("Pinfo.src_port-set-1",not pcall(setPinfo,pinfo,"src_port","foobar"))
+ test("Pinfo.dst_port-set-1",not pcall(setPinfo,pinfo,"dst_port","foobar"))
+ test("Pinfo.circuit_id-set-1",not pcall(setPinfo,pinfo,"circuit_id","foobar"))
+ if major > 1 or minor > 10 then
+ test("Pinfo.can_desegment-set-1",not pcall(setPinfo,pinfo,"can_desegment","foobar"))
+ end
+ test("Pinfo.desegment_len-set-1",not pcall(setPinfo,pinfo,"desegment_len","foobar"))
+ test("Pinfo.desegment_offset-set-1",not pcall(setPinfo,pinfo,"desegment_offset","foobar"))
+
+ -- invalid attribute names
+--[[
+again, these *should* pass, but Pinfo silently allows it!
+ test("Pinfo.set-1",not pcall(setPinfo,pinfo,"foobar","foobar"))
+ test("Pinfo.get-12",not pcall(getPinfo,pinfo,"foobar"))
+]]
+
+ testing(FRAME,"basic getter tests")
+
+ local pktlen, srcip, dstip, srcport, dstport
+
+ if pinfo.number == 1 or pinfo.number == 3 then
+ pktlen = 314
+ srcip = "0.0.0.0"
+ dstip = "255.255.255.255"
+ srcport = 68
+ dstport = 67
+ else
+ pktlen = 342
+ srcip = "192.168.0.1"
+ dstip = "192.168.0.10"
+ srcport = 67
+ dstport = 68
+ end
+
+ test("Pinfo.number-get-1",pinfo.number == getPktCount(FRAME))
+ test("Pinfo.len-get-1",pinfo.len == pktlen)
+ test("Pinfo.caplen-get-1",pinfo.caplen == pktlen)
+ test("Pinfo.visited-get-1",pinfo.visited == true)
+ test("Pinfo.lo-get-1",tostring(pinfo.lo) == srcip)
+ test("Pinfo.lo-get-2",typeof(pinfo.lo) == "Address")
+ test("Pinfo.hi-get-1",tostring(pinfo.hi) == dstip)
+ test("Pinfo.hi-get-2",typeof(pinfo.hi) == "Address")
+ test("Pinfo.port_type-get-1",pinfo.port_type == 3)
+ test("Pinfo.ipproto-get-1",pinfo.ipproto == 17)
+ test("Pinfo.match-get-1",pinfo.match == 0)
+ test("Pinfo.curr_proto-get-1",tostring(pinfo.curr_proto) == "<Missing Protocol Name>")
+ test("Pinfo.columns-get-1",tostring(pinfo.columns) == "Columns")
+ test("Pinfo.columns-get-2",typeof(pinfo.columns) == "Columns")
+ test("Pinfo.cols-get-1",tostring(pinfo.cols) == "Columns")
+ test("Pinfo.cols-get-2",typeof(pinfo.cols) == "Columns")
+ test("Pinfo.private_data-get-1",type(pinfo.private_data) == "userdata")
+ test("Pinfo.private-get-1",type(pinfo.private) == "userdata")
+ test("Pinfo.fragmented-get-1",pinfo.fragmented == false)
+
+ test("Pinfo.in_error_pkt-get-1",pinfo.in_error_pkt == false)
+ test("Pinfo.match_uint-get-1",pinfo.match_uint == 0)
+ test("Pinfo.match_string-get-1",pinfo.match_string == nil)
+
+ test("Pinfo.src-get-1",tostring(pinfo.src) == srcip)
+ test("Pinfo.src-get-2",typeof(pinfo.src) == "Address")
+ test("Pinfo.dst-get-1",tostring(pinfo.dst) == dstip)
+ test("Pinfo.dst-get-2",typeof(pinfo.dst) == "Address")
+
+ test("Pinfo.dl_src-get-1",typeof(pinfo.dl_src) == "Address")
+ test("Pinfo.dl_dst-get-1",typeof(pinfo.dl_dst) == "Address")
+ test("Pinfo.net_src-get-1",tostring(pinfo.net_src) == srcip)
+ test("Pinfo.net_src-get-2",typeof(pinfo.net_src) == "Address")
+ test("Pinfo.net_dst-get-1",tostring(pinfo.net_dst) == dstip)
+ test("Pinfo.net_dst-get-2",typeof(pinfo.net_dst) == "Address")
+ test("Pinfo.src_port-get-1",pinfo.src_port == srcport)
+ test("Pinfo.dst_port-get-1",pinfo.dst_port == dstport)
+ test("Pinfo.circuit_id-get-1",pinfo.circuit_id == 0)
+ if major > 1 or minor > 10 then
+ test("Pinfo.can_desegment-get-1",pinfo.can_desegment == 0)
+ end
+ test("Pinfo.desegment_len-get-1",pinfo.desegment_len == 0)
+ test("Pinfo.desegment_offset-get-1",pinfo.desegment_offset == 0)
+
+ if pinfo.number == 1 then
+ test("Pinfo.rel_ts-get-1",pinfo.rel_ts == 0)
+ test("Pinfo.delta_ts-get-1",pinfo.delta_ts == 0)
+ test("Pinfo.delta_dis_ts-get-1",pinfo.delta_dis_ts == 0)
+ elseif pinfo.number == 2 then
+ test("Pinfo.rel_ts-get-1",pinfo.rel_ts == 0.000295)
+ test("Pinfo.delta_ts-get-1",pinfo.delta_ts == 0.000295)
+ test("Pinfo.delta_dis_ts-get-1",pinfo.delta_dis_ts == 0.000295)
+ elseif pinfo.number == 3 then
+ test("Pinfo.rel_ts-get-1",pinfo.rel_ts == 0.070031)
+ test("Pinfo.delta_ts-get-1",pinfo.delta_ts == 0.069736)
+ test("Pinfo.delta_dis_ts-get-1",pinfo.delta_dis_ts == 0.069736)
+ elseif pinfo.number == 4 then
+ test("Pinfo.rel_ts-get-1",pinfo.rel_ts == 0.070345)
+ test("Pinfo.delta_ts-get-1",pinfo.delta_ts == 0.000314)
+ test("Pinfo.delta_dis_ts-get-1",pinfo.delta_dis_ts == 0.000314)
+ end
+
+
+ testing(FRAME,"basic setter tests")
+
+ local tmp = pinfo.src
+ pinfo.src = pinfo.dst
+ pinfo.dst = tmp
+ test("Pinfo.src-set-1",tostring(pinfo.src) == dstip)
+ test("Pinfo.src-set-1",typeof(pinfo.src) == "Address")
+ test("Pinfo.dst-set-1",tostring(pinfo.dst) == srcip)
+ test("Pinfo.dst-set-1",typeof(pinfo.dst) == "Address")
+
+ local dl_dst_val = tostring(pinfo.dl_dst)
+ local dl_src_val = tostring(pinfo.dl_src)
+ tmp = pinfo.dl_src
+ pinfo.dl_src = pinfo.dl_dst
+ pinfo.dl_dst = tmp
+ test("Pinfo.dl_src-set-1",tostring(pinfo.dl_src) == dl_dst_val)
+ test("Pinfo.dl_dst-set-1",tostring(pinfo.dl_dst) == dl_src_val)
+
+ tmp = pinfo.net_src
+ pinfo.net_src = pinfo.net_dst
+ pinfo.net_dst = tmp
+ test("Pinfo.net_src-set-1",tostring(pinfo.net_src) == dstip)
+ test("Pinfo.net_src-set-1",typeof(pinfo.net_src) == "Address")
+ test("Pinfo.net_dst-set-1",tostring(pinfo.net_dst) == srcip)
+ test("Pinfo.net_dst-set-1",typeof(pinfo.net_dst) == "Address")
+
+--[[
+--there's a bug 9792 causing the pinfo.dst_port setter to actually set src_port
+ tmp = pinfo.src_port
+ pinfo.src_port = pinfo.dst_port
+ pinfo.dst_port = tmp
+ test("Pinfo.src_port-set-1",pinfo.src_port == dstport)
+ test("Pinfo.dst_port-set-1",pinfo.dst_port == srcport)
+--]]
+ pinfo.src_port = pinfo.dst_port
+ test("Pinfo.src_port-set-1",pinfo.src_port == dstport)
+
+ pinfo.circuit_id = 42
+ test("Pinfo.circuit_id-set-1",pinfo.circuit_id == 42)
+
+ if major > 1 or minor > 10 then
+ pinfo.can_desegment = 12
+ test("Pinfo.can_desegment-set-1",pinfo.can_desegment == 12)
+ end
+ pinfo.desegment_len = 34
+ test("Pinfo.desegment_len-set-1",pinfo.desegment_len == 34)
+ pinfo.desegment_offset = 45
+ test("Pinfo.desegment_offset-set-1",pinfo.desegment_offset == 45)
+
+ testing(FRAME,"Address functions")
+ test("Address-eq-1", pinfo.lo == pinfo.dst)
+ test("Address-eq-2", pinfo.lo ~= pinfo.hi)
+ test("Address-lt-1", pinfo.lo < pinfo.hi)
+ test("Address-lt-2", pinfo.hi > pinfo.lo)
+ test("Address-le-1", pinfo.lo <= pinfo.hi)
+ test("Address-le-2", pinfo.lo <= pinfo.dst)
+
+ setPassed(FRAME)
+
+end
+
+function tap.draw()
+ getResults()
+end
diff --git a/test/suite-unittests.sh b/test/suite-unittests.sh
index 6099b69be2..7883aa3104 100755
--- a/test/suite-unittests.sh
+++ b/test/suite-unittests.sh
@@ -69,105 +69,6 @@ unittests_step_exntest() {
unittests_step_test
}
-unittests_step_lua_dissector_test() {
- if [ $HAVE_LUA -ne 0 ]; then
- test_step_skipped
- return
- fi
-
- # First run tshark with the dissector script.
- $TSHARK -r $CAPTURE_DIR/dns_port.pcap -V -X lua_script:$TESTS_DIR/lua/dissector.lua > testin.txt 2>&1
- RETURNVALUE=$?
- if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
- echo
- cat ./testin_tmp.txt
- test_step_failed "exit status of $DUT: $RETURNVALUE"
- return
- fi
-
- # then run tshark again with the verification script. (it internally reads in testin.txt)
- $TSHARK -r $CAPTURE_DIR/dns_port.pcap -X lua_script:$TESTS_DIR/lua/verify_dissector.lua > testout.txt 2>&1
- if grep -q "All tests passed!" testout.txt; then
- test_step_ok
- else
- echo
- cat ./testin.txt
- cat ./testout.txt
- test_step_failed "didn't find pass marker"
- fi
-}
-
-unittests_step_lua_int64_test() {
- if [ $HAVE_LUA -ne 0 ]; then
- test_step_skipped
- return
- fi
-
- # Tshark catches lua script failures, so we have to parse the output.
- $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/int64.lua > testout.txt 2>&1
- if grep -q "All tests passed!" testout.txt; then
- test_step_ok
- else
- echo
- cat ./testout.txt
- test_step_failed "didn't find pass marker"
- fi
-}
-
-unittests_step_lua_args_test() {
- if [ $HAVE_LUA -ne 0 ]; then
- test_step_skipped
- return
- fi
-
- # Tshark catches lua script failures, so we have to parse the output.
- $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:1 > testout.txt 2>&1
- grep -q "All tests passed!" testout.txt
- if [ $? -ne 0 ]; then
- cat testout.txt
- test_step_failed "lua_args_test test 1 failed"
- fi
- $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:3 -X lua_script1:foo -X lua_script1:bar > testout.txt 2>&1
- grep -q "All tests passed!" testout.txt
- if [ $? -ne 0 ]; then
- cat testout.txt
- test_step_failed "lua_args_test test 2 failed"
- fi
- $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:3 -X lua_script2:1 -X lua_script1:foo -X lua_script1:bar > testout.txt 2>&1
- grep -q "All tests passed!" testout.txt
- if [ $? -ne 0 ]; then
- cat testout.txt
- test_step_failed "lua_args_test test 3 failed"
- fi
- $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua > testout.txt 2>&1
- if grep -q "All tests passed!" testout.txt; then
- cat testout.txt
- test_step_failed "lua_args_test negative test 4 failed"
- fi
- $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:3 > testout.txt 2>&1
- if grep -q "All tests passed!" testout.txt; then
- cat testout.txt
- test_step_failed "lua_args_test negative test 5 failed"
- fi
- test_step_ok
-}
-
-unittests_step_lua_struct_test() {
- if [ $HAVE_LUA -ne 0 ]; then
- test_step_skipped
- return
- fi
-
- # Tshark catches lua script failures, so we have to parse the output.
- $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/struct.lua > testout.txt 2>&1
- if grep -q "All tests passed!" testout.txt; then
- test_step_ok
- else
- cat testout.txt
- test_step_failed "didn't find pass marker"
- fi
-}
-
unittests_step_oids_test() {
DUT=$SOURCE_DIR/epan/oids_test
ARGS=
@@ -194,17 +95,12 @@ unittests_step_wmem_test() {
unittests_cleanup_step() {
rm -f ./testout.txt
- rm -f ./testin.txt
}
unittests_suite() {
test_step_set_pre unittests_cleanup_step
test_step_set_post unittests_cleanup_step
test_step_add "exntest" unittests_step_exntest
- test_step_add "lua dissector" unittests_step_lua_dissector_test
- test_step_add "lua int64" unittests_step_lua_int64_test
- test_step_add "lua script arguments" unittests_step_lua_args_test
- test_step_add "lua struct" unittests_step_lua_struct_test
test_step_add "oids_test" unittests_step_oids_test
test_step_add "reassemble_test" unittests_step_reassemble_test
test_step_add "tvbtest" unittests_step_tvbtest
diff --git a/test/suite-wslua.sh b/test/suite-wslua.sh
new file mode 100644
index 0000000000..e7d4f8d27f
--- /dev/null
+++ b/test/suite-wslua.sh
@@ -0,0 +1,216 @@
+#!/bin/bash
+#
+# Run the epan unit tests
+#
+# $Id$
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+wslua_step_dissector_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # First run tshark with the dissector script.
+ $TSHARK -r $CAPTURE_DIR/dns_port.pcap -V -X lua_script:$TESTS_DIR/lua/dissector.lua > testin.txt 2>&1
+ RETURNVALUE=$?
+ if [ ! $RETURNVALUE -eq $EXIT_OK ]; then
+ echo
+ cat ./testin.txt
+ test_step_failed "exit status of $DUT: $RETURNVALUE"
+ return
+ fi
+
+ # then run tshark again with the verification script. (it internally reads in testin.txt)
+ $TSHARK -r $CAPTURE_DIR/dns_port.pcap -X lua_script:$TESTS_DIR/lua/verify_dissector.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ test_step_ok
+ else
+ echo
+ cat ./testin.txt
+ cat ./testout.txt
+ test_step_failed "didn't find pass marker"
+ fi
+}
+
+wslua_step_field_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # Tshark catches lua script failures, so we have to parse the output.
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/field.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ test_step_ok
+ else
+ cat testout.txt
+ test_step_failed "didn't find pass marker"
+ fi
+}
+
+wslua_step_listener_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # Tshark catches lua script failures, so we have to parse the output.
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/listener.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ test_step_ok
+ else
+ cat testout.txt
+ test_step_failed "didn't find pass marker"
+ fi
+}
+
+wslua_step_nstime_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # Tshark catches lua script failures, so we have to parse the output.
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/nstime.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ test_step_ok
+ else
+ cat testout.txt
+ test_step_failed "didn't find pass marker"
+ fi
+}
+
+wslua_step_pinfo_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # Tshark catches lua script failures, so we have to parse the output.
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/nstime.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ test_step_ok
+ else
+ cat testout.txt
+ test_step_failed "didn't find pass marker"
+ fi
+}
+
+wslua_step_int64_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # Tshark catches lua script failures, so we have to parse the output.
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/int64.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ test_step_ok
+ else
+ echo
+ cat ./testout.txt
+ test_step_failed "didn't find pass marker"
+ fi
+}
+
+wslua_step_args_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # Tshark catches lua script failures, so we have to parse the output.
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:1 > testout.txt 2>&1
+ grep -q "All tests passed!" testout.txt
+ if [ $? -ne 0 ]; then
+ cat testout.txt
+ test_step_failed "lua_args_test test 1 failed"
+ fi
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:3 -X lua_script1:foo -X lua_script1:bar > testout.txt 2>&1
+ grep -q "All tests passed!" testout.txt
+ if [ $? -ne 0 ]; then
+ cat testout.txt
+ test_step_failed "lua_args_test test 2 failed"
+ fi
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:3 -X lua_script2:1 -X lua_script1:foo -X lua_script1:bar > testout.txt 2>&1
+ grep -q "All tests passed!" testout.txt
+ if [ $? -ne 0 ]; then
+ cat testout.txt
+ test_step_failed "lua_args_test test 3 failed"
+ fi
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ cat testout.txt
+ test_step_failed "lua_args_test negative test 4 failed"
+ fi
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/script_args.lua -X lua_script1:3 > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ cat testout.txt
+ test_step_failed "lua_args_test negative test 5 failed"
+ fi
+ test_step_ok
+}
+
+wslua_step_struct_test() {
+ if [ $HAVE_LUA -ne 0 ]; then
+ test_step_skipped
+ return
+ fi
+
+ # Tshark catches lua script failures, so we have to parse the output.
+ $TSHARK -r $CAPTURE_DIR/dhcp.pcap -X lua_script:$TESTS_DIR/lua/struct.lua > testout.txt 2>&1
+ if grep -q "All tests passed!" testout.txt; then
+ test_step_ok
+ else
+ cat testout.txt
+ test_step_failed "didn't find pass marker"
+ fi
+}
+
+wslua_cleanup_step() {
+ rm -f ./testout.txt
+ rm -f ./testin.txt
+}
+
+wslua_suite() {
+ test_step_set_pre wslua_cleanup_step
+ test_step_set_post wslua_cleanup_step
+ test_step_add "wslua dissector" wslua_step_dissector_test
+ test_step_add "wslua field/fieldinfo" wslua_step_field_test
+ test_step_add "wslua int64" wslua_step_int64_test
+ test_step_add "wslua listener" wslua_step_listener_test
+ test_step_add "wslua nstime" wslua_step_nstime_test
+ test_step_add "wslua pinfo" wslua_step_pinfo_test
+ test_step_add "wslua script arguments" wslua_step_args_test
+ test_step_add "wslua struct" wslua_step_struct_test
+}
+#
+# Editor modelines - http://www.wireshark.org/tools/modelines.html
+#
+# Local variables:
+# c-basic-offset: 8
+# tab-width: 8
+# indent-tabs-mode: t
+# End:
+#
+# vi: set shiftwidth=8 tabstop=8 noexpandtab:
+# :indentSize=8:tabSize=8:noTabs=false:
+#
diff --git a/test/test.sh b/test/test.sh
index 3d8b0795a8..65538ae46a 100755
--- a/test/test.sh
+++ b/test/test.sh
@@ -58,6 +58,7 @@ Usage: $THIS [-c] [-h] [-s <suite>]
nameres
prerequisites
unittests
+ wslua
FIN
exit 0
fi
@@ -96,6 +97,7 @@ source $TESTS_DIR/suite-unittests.sh
source $TESTS_DIR/suite-fileformats.sh
source $TESTS_DIR/suite-decryption.sh
source $TESTS_DIR/suite-nameres.sh
+source $TESTS_DIR/suite-wslua.sh
test_cleanup() {
if [ $TEST_OUTDIR_CLEAN = 1 ]; then
@@ -155,6 +157,7 @@ test_suite() {
test_suite_add "File formats" fileformats_suite
test_suite_add "Decryption" decryption_suite
test_suite_add "Name Resolution" name_resolution_suite
+ test_suite_add "Lua API" wslua_suite
}
@@ -200,6 +203,9 @@ if [ -n "$RUN_SUITE" ] ; then
"unittests")
test_suite_run "Unit tests" unittests_suite
exit $? ;;
+ "wslua")
+ test_suite_run "Lua API" wslua_suite
+ exit $? ;;
esac
fi