55 lines
1.7 KiB
Lua
55 lines
1.7 KiB
Lua
local proto = { "http://", "https://" }
|
|
local sizes = { "1kb", "10kb", "100kb", "1000kb" }
|
|
local testUrl = "test.fluffyb.net"
|
|
local tcpConnections = 50
|
|
local testLength = 60 -- in seconds
|
|
local threads = wrk.thread or 4 -- Defaulting to 4 threads if not specified
|
|
local testReason = ""
|
|
|
|
-- Storage for results
|
|
local results = {}
|
|
|
|
-- Function to run different tests
|
|
function init(args)
|
|
results = {}
|
|
end
|
|
|
|
function request()
|
|
-- Cycle through protocol and size combinations
|
|
local index = math.random(1, #proto)
|
|
local sizeIndex = math.random(1, #sizes)
|
|
local url = proto[index] .. testUrl .. "/" .. sizes[sizeIndex] .. ".file"
|
|
|
|
return wrk.format("GET", url)
|
|
end
|
|
|
|
function done(summary, latency, requests)
|
|
io.write("------------------------------\n")
|
|
|
|
-- Print request results
|
|
for _, p in ipairs({ 50, 90, 99, 99.999 }) do
|
|
local n = latency:percentile(p)
|
|
io.write(string.format("%g%%,%d\n", p, n))
|
|
end
|
|
|
|
-- Requests Per Second (RPS)
|
|
local duration_in_seconds = summary.duration / 1e6
|
|
local rps = summary.requests / duration_in_seconds
|
|
io.write(string.format("Requests per second: %.2f\n", rps))
|
|
|
|
-- Store results
|
|
table.insert(results, {
|
|
reason = testReason,
|
|
requests = summary.requests,
|
|
rps = rps,
|
|
latency_avg = latency.mean / 1000,
|
|
latency_max = latency.max / 1000
|
|
})
|
|
|
|
-- Print results
|
|
io.write("\n=== Test Summary ===\n")
|
|
for _, result in ipairs(results) do
|
|
io.write(string.format("%s - Requests: %d, RPS: %.2f, Latency (avg): %.2f ms, Latency (max): %.2f ms\n",
|
|
result.reason, result.requests, result.rps, result.latency_avg, result.latency_max))
|
|
end
|
|
end
|