mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-07 19:22:14 +09:00
59 lines
1.9 KiB
Erlang
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).
|