summaryrefslogtreecommitdiff
path: root/test/limiter_test.exs
diff options
context:
space:
mode:
Diffstat (limited to 'test/limiter_test.exs')
-rw-r--r--test/limiter_test.exs36
1 files changed, 9 insertions, 27 deletions
diff --git a/test/limiter_test.exs b/test/limiter_test.exs
index c60db9e..1b81ead 100644
--- a/test/limiter_test.exs
+++ b/test/limiter_test.exs
@@ -2,38 +2,20 @@ defmodule LimiterTest do
use ExUnit.Case
doctest Limiter
- defp test_ets(name, max, sleep, fun) do
- count = :ets.update_counter(:limiter_test, name, {2, 1}, {name, 0})
-
- if count <= max do
- fun.({:ok, count})
- Process.sleep(sleep)
- else
- fun.(:fail)
- end
- after
- :ets.update_counter(:limiter_test, name, {2, -1}, {name, 1})
+ test "limiter ets is atomic" do
+ name = "test1"
+ Limiter.new(name, 2, 2)
+ atomic_test(name)
end
- test "limits with ets" do
- :ets.new(:limiter_test, [:public, :named_table])
- ets = "test"
- test = self()
- spawn_link(fn -> test_ets(ets, 2, 500, fn result -> send(test, result) end) end)
- spawn_link(fn -> test_ets(ets, 2, 750, fn result -> send(test, result) end) end)
- spawn_link(fn -> test_ets(ets, 2, 500, fn result -> send(test, result) end) end)
- assert_receive {:ok, 1}
- assert_receive {:ok, 2}
- assert_receive :fail
- Process.sleep(500)
- spawn_link(fn -> test_ets(ets, 2, 500, fn result -> send(test, result) end) end)
- assert_receive {:ok, 2}
+ test "limiter atomics is atomic" do
+ name = "test2"
+ Limiter.new(name, 2, 2, backend: :atomics)
+ atomic_test(name)
end
- test "limiter" do
- name = "test1"
+ defp atomic_test(name) do
self = self()
- Limiter.set(name, 2, 2)
sleepy = fn sleep ->
case Limiter.limit(name, fn ->