diff options
Diffstat (limited to 'examples/test_pcap_read.lua')
-rwxr-xr-x | examples/test_pcap_read.lua | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/examples/test_pcap_read.lua b/examples/test_pcap_read.lua deleted file mode 100755 index 7d29c7a..0000000 --- a/examples/test_pcap_read.lua +++ /dev/null @@ -1,149 +0,0 @@ -#!/usr/bin/env dnsjit -local clock = require("dnsjit.lib.clock") -local log = require("dnsjit.core.log") -local getopt = require("dnsjit.lib.getopt").new({ - { "v", "verbose", 0, "Enable and increase verbosity for each time given", "?+" }, - { "l", "layer", false, "Test also with dnsjit.filter.layer", "?" }, - { "p", "producer", false, "Test with the producer interface rather then receiver interface", "?" }, -}) -local pcap, runs = unpack(getopt:parse()) -if getopt:val("help") then - getopt:usage() - return -end -local v = getopt:val("v") -if v > 0 then - log.enable("warning") -end -if v > 1 then - log.enable("notice") -end -if v > 2 then - log.enable("info") -end -if v > 3 then - log.enable("debug") -end - -if pcap == nil then - print("usage: "..arg[1].." <pcap> [runs]") - return -end - -inputs = { "fpcap", "mmpcap", "pcap" } -result = {} -results = {} -highest = nil - -if runs == nil then - runs = 10 -else - runs = tonumber(runs) -end - -if getopt:val("p") then - for _, name in pairs(inputs) do - rt = 0.0 - p = 0 - - print("run", name) - for n = 1, runs do - o = require("dnsjit.output.null").new() - i = require("dnsjit.input."..name).new() - - if name == "pcap" then - i:open_offline(pcap) - else - i:open(pcap) - end - - if getopt:val("l") then - f = require("dnsjit.filter.layer").new() - f:producer(i) - o:producer(f) - else - o:producer(i) - end - - ss, sns = clock:monotonic() - o:run() - es, ens = clock:monotonic() - - if es > ss then - rt = rt + ((es - ss) - 1) + ((1000000000 - sns + ens)/1000000000) - elseif es == ss and ens > sns then - rt = rt + (ens - sns) / 1000000000 - end - - p = p + o:packets() - end - - result[name] = { - rt = rt, - p = p - } - if highest == nil or rt > result[highest].rt then - highest = name - end - table.insert(results, name) - end -else - for _, name in pairs(inputs) do - rt = 0.0 - p = 0 - - print("run", name) - for n = 1, runs do - o = require("dnsjit.output.null").new() - i = require("dnsjit.input."..name).new() - - if name == "pcap" then - i:open_offline(pcap) - else - i:open(pcap) - end - - if getopt:val("l") then - f = require("dnsjit.filter.layer").new() - f:receiver(o) - i:receiver(f) - else - i:receiver(o) - end - - ss, sns = clock:monotonic() - if name == "pcap" then - i:dispatch() - else - i:run() - end - es, ens = clock:monotonic() - - if es > ss then - rt = rt + ((es - ss) - 1) + ((1000000000 - sns + ens)/1000000000) - elseif es == ss and ens > sns then - rt = rt + (ens - sns) / 1000000000 - end - - p = p + o:packets() - end - - result[name] = { - rt = rt, - p = p - } - if highest == nil or rt > result[highest].rt then - highest = name - end - table.insert(results, name) - end -end - -print("name", "runtime", "pps", "x", "pkts") -print(highest, result[highest].rt, result[highest].p/result[highest].rt, 1.0, result[highest].p) -for _, name in pairs(results) do - if name ~= highest then - local f = result[name].p / result[highest].p - print(name, result[name].rt, result[name].p/result[name].rt, (result[highest].rt/result[name].rt)*f, result[name].p) - end -end |