Files
fluxer/fluxer_gateway/test/gateway_node_metadata_tests.erl
T

59 lines
1.9 KiB
Erlang

%% SPDX-License-Identifier: AGPL-3.0-or-later
-module(gateway_node_metadata_tests).
-include_lib("eunit/include/eunit.hrl").
pod_name_for_node_uses_cached_remote_pod_name_test() ->
Node = '[email protected]',
with_node_pod_names(#{Node => <<"gateway-presence-0">>}, fun() ->
?assertEqual(<<"gateway-presence-0">>, gateway_node_metadata:pod_name_for_node(Node))
end).
cache_node_pod_name_updates_cached_remote_pod_name_test() ->
Node = '[email protected]',
with_node_pod_names(#{}, fun() ->
?assertEqual(
ok, gateway_node_metadata:cache_node_pod_name(Node, <<"gateway-guilds-0">>)
),
?assertEqual(<<"gateway-guilds-0">>, gateway_node_metadata:pod_name_for_node(Node))
end).
refresh_node_pod_names_caches_local_pod_name_test() ->
with_env("POD_NAME", "gateway-local-0", fun() ->
Result = gateway_node_metadata:refresh_node_pod_names([node()]),
?assertEqual(<<"gateway-local-0">>, maps:get(node(), Result)),
?assertEqual(<<"gateway-local-0">>, gateway_node_metadata:pod_name_for_node(node()))
end).
with_node_pod_names(NodePodNames, Fun) ->
with_persistent_term({gateway_cluster_membership, node_pod_names}, NodePodNames, Fun).
with_persistent_term(Key, Value, Fun) ->
Previous = persistent_term:get(Key, undefined),
persistent_term:put(Key, Value),
try
Fun()
after
restore_persistent_term(Key, Previous)
end.
restore_persistent_term(Key, undefined) ->
persistent_term:erase(Key);
restore_persistent_term(Key, Previous) ->
persistent_term:put(Key, Previous).
with_env(Name, Value, Fun) ->
Previous = os:getenv(Name),
os:putenv(Name, Value),
try
Fun()
after
restore_env(Name, Previous)
end.
restore_env(Name, false) ->
os:unsetenv(Name);
restore_env(Name, Value) ->
os:putenv(Name, Value).