Packages
exq
0.4.1
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_queue_test.exs
Code.require_file "test_helper.exs", __DIR__
defmodule JobQueueTest do
use ExUnit.Case
use Timex
alias Exq.Redis.JobQueue
alias Exq.Support.Job
setup_all do
TestRedis.setup
on_exit fn ->
TestRedis.teardown
end
end
def assert_dequeue_job(queues, expect_result) do
result = JobQueue.dequeue(:testredis, "test", queues)
if expect_result do
refute match?({:ok, {:none, _}}, result)
else
assert match?({:ok, {:none, _}}, result)
end
end
test "enqueue/dequeue single queue" do
JobQueue.enqueue(:testredis, "test", "default", MyWorker, [])
{:ok, {deq, _}} = JobQueue.dequeue(:testredis, "test", "default")
assert deq != :none
{:ok, {deq, _}} = JobQueue.dequeue(:testredis, "test", "default")
assert deq == :none
end
test "enqueue/dequeue multi queue" do
JobQueue.enqueue(:testredis, "test", "default", MyWorker, [])
JobQueue.enqueue(:testredis, "test", "myqueue", MyWorker, [])
assert_dequeue_job(["default", "myqueue"], true)
assert_dequeue_job(["default", "myqueue"], true)
assert_dequeue_job(["default", "myqueue"], false)
end
test "scheduler_dequeue single queue" do
JobQueue.enqueue_in(:testredis, "test", "default", 0, MyWorker, [])
JobQueue.enqueue_in(:testredis, "test", "default", 0, MyWorker, [])
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"]) == 2
assert_dequeue_job("default", true)
assert_dequeue_job("default", true)
assert_dequeue_job("default", false)
end
test "scheduler_dequeue multi queue" do
JobQueue.enqueue_in(:testredis, "test", "default", -1, MyWorker, [])
JobQueue.enqueue_in(:testredis, "test", "myqueue", -1, MyWorker, [])
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default", "myqueue"]) == 2
assert_dequeue_job(["default", "myqueue"], true)
assert_dequeue_job(["default", "myqueue"], true)
assert_dequeue_job(["default", "myqueue"], false)
end
test "scheduler_dequeue enqueue_at" do
JobQueue.enqueue_at(:testredis, "test", "default", Time.now, MyWorker, [])
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"]) == 1
assert_dequeue_job("default", true)
assert_dequeue_job("default", false)
end
test "scheduler_dequeue max_score" do
JobQueue.enqueue_in(:testredis, "test", "default", 300, MyWorker, [])
now = Time.now
time1 = Time.add(now, Time.from(140, :secs))
JobQueue.enqueue_at(:testredis, "test", "default", time1, MyWorker, [])
time2 = Time.add(now, Time.from(150, :secs))
JobQueue.enqueue_at(:testredis, "test", "default", time2, MyWorker, [])
time2a = Time.add(now, Time.from(151, :secs))
time2b = Time.add(now, Time.from(159, :secs))
time3 = Time.add(now, Time.from(160, :secs))
JobQueue.enqueue_at(:testredis, "test", "default", time3, MyWorker, [])
time4 = Time.add(now, Time.from(160000001, :usecs))
JobQueue.enqueue_at(:testredis, "test", "default", time4, MyWorker, [])
time5 = Time.add(now, Time.from(300, :secs))
assert Exq.Enqueuer.Server.queue_size(:testredis, "test", "default") == "0"
assert Exq.Enqueuer.Server.queue_size(:testredis, "test", :scheduled) == "5"
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"], JobQueue.time_to_score(time2a)) == 2
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"], JobQueue.time_to_score(time2b)) == 0
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"], JobQueue.time_to_score(time3)) == 1
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"], JobQueue.time_to_score(time3)) == 0
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"], JobQueue.time_to_score(time4)) == 1
assert JobQueue.scheduler_dequeue(:testredis, "test", ["default"], JobQueue.time_to_score(time5)) == 1
assert Exq.Enqueuer.Server.queue_size(:testredis, "test", "default") == "5"
assert Exq.Enqueuer.Server.queue_size(:testredis, "test", :scheduled) == "0"
assert_dequeue_job("default", true)
assert_dequeue_job("default", true)
assert_dequeue_job("default", true)
assert_dequeue_job("default", true)
assert_dequeue_job("default", true)
assert_dequeue_job("default", false)
end
test "full_key" do
assert JobQueue.full_key("exq","k1") == "exq:k1"
assert JobQueue.full_key("","k1") == "k1"
assert JobQueue.full_key(nil,"k1") == "k1"
end
test "creates and returns a jid" do
{:ok, jid} = JobQueue.enqueue(:testredis, "test", "default", MyWorker, [])
assert jid != nil
{:ok, {job_str, _}} = JobQueue.dequeue(:testredis, "test", "default")
job = Poison.decode!(job_str, as: Exq.Support.Job)
assert job.jid == jid
end
test "to_job_json using module atom" do
{_jid, json} = JobQueue.to_job_json("default", MyWorker, [])
job = Job.from_json(json)
assert job.class == "MyWorker"
end
test "to_job_json using module string" do
{_jid, json} = JobQueue.to_job_json("default", "MyWorker/perform", [])
job = Job.from_json(json)
assert job.class == "MyWorker/perform"
end
test "to_job_json with method name" do
end
end