Packages
exq
0.8.3
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/job_stat_test.exs
defmodule JobStatTest do
use ExUnit.Case
alias Exq.Redis.JobStat
alias Exq.Redis.Connection
alias Exq.Redis.JobQueue
defmodule EmptyMethodWorker do
def perform do
{:ok, "test"}
end
end
def dead_jobs_count(redis) do
{:ok, count} = Connection.q(redis, ["ZCOUNT", "test:dead", "-inf", "+inf"])
count
end
def enqueue_and_fail_job(redis) do
Connection.incr!(redis, "test:stat:failed")
{:ok, jid} = Exq.enqueue(Exq, "queue", EmptyMethodWorker, [])
{:ok, _job} = JobQueue.find_job(redis, "test", jid, "queue")
JobQueue.fail_job(redis, "test", %Exq.Support.Job{jid: jid}, "forced error")
{:ok, jid}
end
setup do
TestRedis.setup
on_exit(fn -> TestRedis.teardown end)
Exq.start_link
:ok
end
test "show realtime statistics" do
{:ok, time1} = DateTime.from_unix(1452173400, :seconds)
{:ok, time2} = DateTime.from_unix(1452175515, :seconds)
JobStat.record_processed(:testredis, "test", nil, time1)
JobStat.record_processed(:testredis, "test", nil, time2)
JobStat.record_processed(:testredis, "test", nil, time1)
JobStat.record_failure(:testredis, "test", nil, nil, time1)
JobStat.record_failure(:testredis, "test", nil, nil, time2)
Exq.start_link(mode: :api, name: ExqApi)
{:ok, failures, successes} = Exq.Api.realtime_stats(ExqApi.Api)
assert List.keysort(failures, 0) == [{"2016-01-07 13:30:00Z", "1"}, {"2016-01-07 14:05:15Z", "1"}]
assert List.keysort(successes, 0) == [{"2016-01-07 13:30:00Z", "2"}, {"2016-01-07 14:05:15Z", "1"}]
end
test "show realtime statistics with no data" do
Exq.start_link(mode: :api, name: ExqApi)
{:ok, failures, successes} = Exq.Api.realtime_stats(ExqApi.Api)
assert List.keysort(failures, 0) == []
assert List.keysort(successes, 0) == []
end
test "remove queue" do
Exq.enqueue(Exq, "test_queue", EmptyMethodWorker, [])
assert Connection.smembers!(:testredis, "test:queues") == ["test_queue"]
assert Connection.llen!(:testredis, "test:queue:test_queue") == 1
JobStat.remove_queue(:testredis, "test", "test_queue")
assert Connection.smembers!(:testredis, "test:queues") == []
assert Connection.llen!(:testredis, "test:queue:test_queue") == 0
end
test "remove failed" do
{:ok, jid} = enqueue_and_fail_job(:testredis)
assert dead_jobs_count(:testredis) == 1
JobStat.remove_failed(:testredis, "test", jid)
assert dead_jobs_count(:testredis) == 0
assert Connection.get!(:testredis, "test:stat:failed") == "0"
end
test "clear failed" do
Enum.each [1,2,3], fn(_) -> enqueue_and_fail_job(:testredis) end
assert dead_jobs_count(:testredis) == 3
JobStat.clear_failed(:testredis, "test")
assert dead_jobs_count(:testredis) == 0
assert Connection.get!(:testredis, "test:stat:failed") == "0"
end
end