Skip to content

Commit 2bfaf1d

Browse files
committed
Add Cache tests
Signed-off-by: Matteo Cafasso <[email protected]>
1 parent c0bee4a commit 2bfaf1d

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

test/cache_test.exs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
defmodule RabbitMQ.CacheTest do
2+
use ExUnit.Case
3+
4+
alias :timer, as: Timer
5+
alias :mnesia, as: Mnesia
6+
7+
setup do
8+
cache = :test_cache
9+
cache_ttl = :test_cache_ttl
10+
11+
start_supervised!(%{id: cache,
12+
start: {RabbitMQ.Cache,
13+
:start_link,
14+
[cache, 1]}})
15+
start_supervised!(%{id: cache_ttl,
16+
start: {RabbitMQ.Cache,
17+
:start_link,
18+
[cache_ttl, 1, 1]}})
19+
20+
%{cache: cache, cache_ttl: cache_ttl}
21+
end
22+
23+
test "basic insertion and lookup", %{cache: cache, cache_ttl: _} do
24+
assert RabbitMQ.Cache.member?(cache, "foo") == false
25+
26+
RabbitMQ.Cache.put(cache, "foo")
27+
assert RabbitMQ.Cache.member?(cache, "foo") == true
28+
29+
RabbitMQ.Cache.drop(cache)
30+
end
31+
32+
test "TTL at insertion", %{cache: cache, cache_ttl: _} do
33+
assert RabbitMQ.Cache.member?(cache, "foo") == false
34+
35+
RabbitMQ.Cache.put(cache, "foo", 1)
36+
assert RabbitMQ.Cache.member?(cache, "foo") == true
37+
38+
1 |> Timer.seconds() |> Timer.sleep()
39+
40+
assert RabbitMQ.Cache.member?(cache, "foo") == false
41+
42+
RabbitMQ.Cache.drop(cache)
43+
end
44+
45+
test "TTL at table creation", %{cache: _, cache_ttl: cache} do
46+
assert RabbitMQ.Cache.member?(cache, "foo") == false
47+
48+
RabbitMQ.Cache.put(cache, "foo")
49+
assert RabbitMQ.Cache.member?(cache, "foo") == true
50+
51+
1 |> Timer.seconds() |> Timer.sleep()
52+
53+
assert RabbitMQ.Cache.member?(cache, "foo") == false
54+
55+
RabbitMQ.Cache.drop(cache)
56+
end
57+
58+
test "entries are deleted if cache is full", %{cache: cache, cache_ttl: _} do
59+
assert RabbitMQ.Cache.member?(cache, "foo") == false
60+
assert RabbitMQ.Cache.member?(cache, "bar") == false
61+
62+
RabbitMQ.Cache.put(cache, "foo")
63+
assert RabbitMQ.Cache.member?(cache, "foo") == true
64+
RabbitMQ.Cache.put(cache, "bar")
65+
assert RabbitMQ.Cache.member?(cache, "bar") == true
66+
67+
assert RabbitMQ.Cache.member?(cache, "foo") == false
68+
69+
RabbitMQ.Cache.drop(cache)
70+
end
71+
72+
test "drop the cache", %{cache: cache, cache_ttl: _} do
73+
RabbitMQ.Cache.drop(cache)
74+
75+
assert Enum.member?(Mnesia.system_info(:tables), cache) == false
76+
end
77+
end

test/test_helper.exs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ExUnit.start()

0 commit comments

Comments
 (0)