Files
fluxer/fluxer_gateway/test/guild_manager_cache_tests.erl

49 lines
1.7 KiB
Erlang

%% SPDX-License-Identifier: AGPL-3.0-or-later
-module(guild_manager_cache_tests).
-typing([eqwalizer]).
-include_lib("eunit/include/eunit.hrl").
cleanup_guild_from_cache_deletes_all_matches_test() ->
guild_manager_cache:ensure_guild_pid_cache(),
Pid = self(),
ets:insert(guild_pid_cache, {101, Pid}),
ets:insert(guild_pid_cache, {102, Pid}),
ets:insert(guild_pid_cache, {103, spawn(fun() -> ok end)}),
try
ok = guild_manager_cache:cleanup_guild_from_cache(Pid),
?assertEqual([], ets:lookup(guild_pid_cache, 101)),
?assertEqual([], ets:lookup(guild_pid_cache, 102))
after
ets:delete(guild_pid_cache, 101),
ets:delete(guild_pid_cache, 102),
ets:delete(guild_pid_cache, 103)
end.
lookup_cached_guild_pid_requires_registration_test() ->
process_registry:init(),
guild_manager_cache:ensure_guild_pid_cache(),
GuildId = 20201,
GuildPid = spawn(fun() ->
receive
stop -> ok
after infinity ->
ok
end
end),
timer:sleep(10),
ets:insert(guild_pid_cache, {GuildId, GuildPid}),
try
?assertEqual(not_found, guild_manager_cache:lookup_cached_guild_pid(GuildId)),
?assertEqual([], ets:lookup(guild_pid_cache, GuildId)),
GuildKey = process_registry:build_process_key(guild, GuildId),
ets:insert(guild_pid_cache, {GuildId, GuildPid}),
ets:insert(process_registry_table, {GuildKey, GuildPid}),
?assertEqual({ok, GuildPid}, guild_manager_cache:lookup_cached_guild_pid(GuildId)),
process_registry:registry_unregister(GuildKey)
after
ets:delete(guild_pid_cache, GuildId),
GuildPid ! stop
end.