Skip to content
This repository was archived by the owner on Mar 5, 2024. It is now read-only.

Commit b32b2e0

Browse files
author
Marc Sugiyama
committed
Simplify finding the pair of connected nodes, clarity API.
1 parent 184d175 commit b32b2e0

File tree

2 files changed

+9
-49
lines changed

2 files changed

+9
-49
lines changed

test/blockchain_ct_utils.erl

Lines changed: 7 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -592,66 +592,27 @@ download_serialized_region(URL) ->
592592
Data.
593593

594594

595-
-spec find_connected_node_pair({node(), binary()}) ->
596-
[node()] | disjoint_network.
597-
find_connected_node_pair(NodeAddrList) ->
598-
AddrMap =
595+
-spec find_connected_node_pair([{node(), libp2p_crypto:pubkey_bin()}]) ->
596+
{node(), node()}.
597+
find_connected_node_pair([{FirstNode, _} | NodeAddrList]) ->
598+
AddrToNodeMap =
599599
lists:foldl(
600600
fun({Node, Addr}, Acc) ->
601601
AddrStr = libp2p_crypto:pubkey_bin_to_p2p(Addr),
602602
Acc#{AddrStr => Node}
603603
end, #{}, NodeAddrList),
604-
ct:pal("Node map: ~p", [AddrMap]),
605-
find_connected_node_pair(maps:next(maps:iterator(AddrMap)), AddrMap, #{}).
606-
607-
608-
% NetworkMap - #{ConnectedToNode => [ConnectedFromNode]}
609-
-spec find_connected_node_pair(
610-
maps:iterator(string(), node()), #{string() => node()},
611-
#{node() => [node()]}) -> [node()] | disjoint_network.
612-
find_connected_node_pair(none, _, NetworkMap) ->
613-
ct:pal("Final Network Map~n~p", [NetworkMap]),
614-
disjoint_network;
615-
find_connected_node_pair({_, Node, Iter}, AddrToNodeMap, NetworkMap) ->
616-
GossipPeerNodes =
604+
[ConnectedNode | _] =
617605
addr_to_node(
618-
lists:usort(
619-
ct_rpc:call(Node, blockchain_swarm, gossip_peers, [], 500)),
606+
ct_rpc:call(FirstNode, blockchain_swarm, gossip_peers, [], 500),
620607
AddrToNodeMap),
621-
ct:pal("Node ~p connected to:~n~p", [Node, GossipPeerNodes]),
622-
623-
% Is Node connected to a node in NetworkMap?
624-
case maps:get(Node, NetworkMap, []) of
625-
[] ->
626-
% Nope, try checking the next node
627-
find_connected_node_pair(
628-
maps:next(Iter),
629-
AddrToNodeMap,
630-
add_to_network_map(Node, GossipPeerNodes, NetworkMap));
631-
[ConnectedNode | _] ->
632-
ct:pal("Found connected pair ~p <-> ~p", [Node, ConnectedNode]),
633-
[Node, ConnectedNode]
634-
end.
608+
{FirstNode, ConnectedNode}.
635609

636610

637611
-spec addr_to_node([string()], #{string() => node()}) -> [node()].
638612
addr_to_node(Addrs, AddrToNodeMap) ->
639613
[maps:get(Addr, AddrToNodeMap, undefined) || Addr <- Addrs].
640614

641615

642-
% Remember which nodes a peer node is connected to
643-
-spec add_to_network_map(node(), [string()], #{node() => [node()]}) ->
644-
#{node() => [node()]}.
645-
add_to_network_map(Node, GossipPeerNodes, NetworkMap) ->
646-
lists:foldl(
647-
fun(PeerNode, Acc) ->
648-
maps:update_with(PeerNode,
649-
fun(NodeList) ->
650-
[Node | NodeList]
651-
end, [Node], Acc)
652-
end, NetworkMap, GossipPeerNodes).
653-
654-
655616
-spec application_load(node(), [atom()]) -> ok.
656617
application_load(Node, Applications) ->
657618
lists:foreach(

test/blockchain_state_channel_SUITE.erl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,10 @@ init_per_testcase(Test, Config) ->
133133
%% nodes are connected to a majority of the group but that does not
134134
%% guarantee these two nodes are connected
135135

136-
[RouterNode, GatewayNode] =
136+
{RouterNode, GatewayNode} =
137137
blockchain_ct_utils:find_connected_node_pair(NodeAddrList),
138138
Nodes =
139-
[RouterNode, GatewayNode] ++ (InitNodes -- [RouterNode, GatewayNode]),
140-
139+
[RouterNode, GatewayNode | (InitNodes -- [RouterNode, GatewayNode])],
141140

142141
Dir = os:getenv("SC_DIR", ""),
143142
debug_modules_for_node(

0 commit comments

Comments
 (0)