Packages
exq
0.7.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.0
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.2
Exq is a job processing library compatible with Resque / Sidekiq for the Elixir language.
Current section
Files
Jump to
Current section
Files
test/performance_test.exs
defmodule PerformanceTest do
use ExUnit.Case
require Logger
import ExqTestUtil
setup do
TestRedis.setup
on_exit fn ->
TestRedis.teardown
end
:ok
end
defmodule Worker do
def perform(arg) do
if arg == "last" do
Logger.info("Last message detected")
send(:tester, :done)
end
end
end
test "test to_job_json performance" do
started = :os.timestamp
max_timeout_ms = 1_000
for _ <- 1..1000, do: Exq.Redis.JobQueue.to_job_json("default", PerformanceTest.Worker, ["keep_on_trucking"])
elapsed_ms = :timer.now_diff(:os.timestamp, started) / 1_000
Logger.debug "to_job_json performance test took #{elapsed_ms / 1_000} secs"
assert elapsed_ms < max_timeout_ms
end
test "performance is in acceptable range" do
Process.register(self(), :tester)
started = :os.timestamp
max_timeout_ms = 5 * 1_000
{:ok, sup} = Exq.start_link
for _ <- 1..1000, do: Exq.enqueue(Exq, "default", PerformanceTest.Worker, ["keep_on_trucking"])
Exq.enqueue(Exq, "default", PerformanceTest.Worker, ["last"])
# Wait for last message
receive do
:done -> Logger.info("Received done")
after
# This won't count enqueue
max_timeout_ms -> assert false, "Timeout of #{max_timeout_ms} reached for performance test"
end
elapsed_ms = :timer.now_diff(:os.timestamp, started) / 1_000
Logger.debug "Perf test took #{elapsed_ms / 1_000} secs"
count = Exq.Redis.Connection.llen!(:testredis, "test:queue:default")
assert count == 0
assert elapsed_ms < max_timeout_ms
# let stats finish
wait_long
stop_process(sup)
end
end