Packages
exq
0.3.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/worker_test.exs
Code.require_file "test_helper.exs", __DIR__
defmodule WorkerTest do
use ExUnit.Case
defmodule NoArgWorker do
def perform do
end
end
defmodule ThreeArgWorker do
def perform(_, _, _) do
end
end
defmodule CustomMethodWorker do
def custom_perform do
end
end
defmodule MissingMethodWorker do
end
def assert_terminate(worker, normal_terminate) do
:erlang.monitor(:process, worker)
Exq.Worker.Server.work(worker)
receive do
{:'DOWN', _, _, _pid, :normal} -> assert normal_terminate
{:'DOWN', _, _, _pid, _} -> assert !normal_terminate
_ ->
assert !normal_terminate
end
end
def start_worker(job) do
work_table = :ets.new(:work_table, [:set, :public])
Exq.Worker.Server.start(
job,
nil,
"default",
work_table)
end
test "execute valid job with perform" do
{:ok, worker} = start_worker("{ \"queue\": \"default\", \"class\": \"WorkerTest.NoArgWorker\", \"args\": [] }")
assert_terminate(worker, true)
end
test "execute valid rubyish job with perform" do
{:ok, worker} = start_worker("{ \"queue\": \"default\", \"class\": \"WorkerTest::NoArgWorker\", \"args\": [] }")
assert_terminate(worker, true)
end
test "execute valid job with perform args" do
{:ok, worker} = start_worker("{ \"queue\": \"default\", \"class\": \"WorkerTest.ThreeArgWorker\", \"args\": [1, 2, 3] }")
assert_terminate(worker, true)
end
test "execute valid job with custom function" do
{:ok, worker} = start_worker("{ \"queue\": \"default\", \"class\": \"WorkerTest.CustomMethodWorker/custom_perform\", \"args\": [] }")
assert_terminate(worker, true)
end
test "execute job with invalid JSON" do
{:ok, worker} = start_worker("{ invalid: json: this: is}")
assert_terminate(worker, false)
end
test "execute invalid module perform" do
{:ok, worker} = start_worker("{ \"queue\": \"default\", \"class\": \"NonExistant\", \"args\": [] }")
assert_terminate(worker, false)
end
test "execute invalid module function" do
{:ok, worker} = start_worker("{ \"queue\": \"default\", \"class\": \"WorkerTest.MissingMethodWorker/nonexist\", \"args\": [] }")
assert_terminate(worker, false)
end
end