Skip to content

Commit 54bcc6f

Browse files
committed
add unit test to verify deletion of expired records
1 parent 6c1028c commit 54bcc6f

1 file changed

Lines changed: 32 additions & 3 deletions

File tree

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,44 @@
11
defmodule ExLimiter.Storage.PG2Shard.PrunerTest do
22
use ExLimiter.DataCase, async: false
3+
34
alias ExLimiter.Storage.PG2Shard.Pruner
45

5-
@table_name :pruner_test
66
describe "#remove" do
77
test "it will remove stale bucket entries" do
8-
table = :ets.new(@table_name, [:set, :public, read_concurrency: true, write_concurrency: true])
8+
table = :ets.new(:pruner_test, [:set, :public, read_concurrency: true, write_concurrency: true])
99

10-
:ets.insert(table, {"bucket", :os.system_time(:millisecond), %ExLimiter.Bucket{}})
10+
:ets.insert(table, {"bucket", System.system_time(:millisecond), %ExLimiter.Bucket{}})
1111
assert Pruner.remove(table, 1) == 1
1212
assert :ets.lookup(table, "bucket") == []
1313
end
1414
end
15+
16+
describe "#expire" do
17+
def expiration_handler([:ex_limiter, :shards, :expirations], %{value: count}, _, %{test_pid: test_pid}) do
18+
send(test_pid, {:expired_records, count})
19+
end
20+
21+
test "it will remove expired bucket entries" do
22+
table_name = :expired_test
23+
table = :ets.new(table_name, [:set, :public, read_concurrency: true, write_concurrency: true])
24+
25+
# Listen for the expirations events so we can assert on it
26+
test_pid = self()
27+
28+
:telemetry.attach("expiration-test", [:ex_limiter, :shards, :expirations], &__MODULE__.expiration_handler/4, %{
29+
test_pid: test_pid
30+
})
31+
32+
on_exit(fn -> :telemetry.detach("expiration-test") end)
33+
34+
time = System.system_time(:millisecond) - to_timeout(second: 100)
35+
36+
:ets.insert(table, {"bucket", time, %ExLimiter.Bucket{}})
37+
38+
assert Pruner.handle_info(:expire, table) == {:noreply, table}
39+
40+
assert_receive {:expired_records, 1}, to_timeout(second: 5)
41+
assert :ets.lookup(table, "bucket") == []
42+
end
43+
end
1544
end

0 commit comments

Comments
 (0)