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

Commit

Permalink
Fix diff_test and test code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Marc Sugiyama committed May 19, 2022
1 parent 0ad8a74 commit 184d175
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 82 deletions.
126 changes: 80 additions & 46 deletions test/blockchain_ct_utils.erl
Original file line number Diff line number Diff line change
Expand Up @@ -204,49 +204,57 @@ init_per_testcase(TestCase, Config) ->

NodeNames = lists:map(fun(_M) -> list_to_atom(randname(5)) end, lists:seq(1, TotalNodes)),

Nodes = pmap(fun(Node) ->
start_node(Node, Config, TestCase)
end, NodeNames),

ConfigResult = pmap(fun(Node) ->
ct_rpc:call(Node, cover, start, []),
ct_rpc:call(Node, application, load, [lager]),
ct_rpc:call(Node, application, load, [blockchain]),
ct_rpc:call(Node, application, load, [libp2p]),
ct_rpc:call(Node, application, load, [erlang_stats]),
ct_rpc:call(Node, application, load, [grpcbox]),
%% give each node its own log directory
LogRoot = LogDir ++ "_" ++ atom_to_list(Node),
ct_rpc:call(Node, application, set_env, [lager, log_root, LogRoot]),
ct_rpc:call(Node, lager, set_loglevel, [{lager_file_backend, "log/console.log"}, debug]),

%% set blockchain configuration
#{public := PubKey, secret := PrivKey} = libp2p_crypto:generate_keys(ecc_compact),
Key = {PubKey, libp2p_crypto:mk_sig_fun(PrivKey), libp2p_crypto:mk_ecdh_fun(PrivKey)},
BlockchainBaseDir = BaseDir ++ "_" ++ atom_to_list(Node),
ct_rpc:call(Node, application, set_env, [blockchain, testing, true]),
ct_rpc:call(Node, application, set_env, [blockchain, enable_nat, false]),
ct_rpc:call(Node, application, set_env, [blockchain, base_dir, BlockchainBaseDir]),
ct_rpc:call(Node, application, set_env, [blockchain, num_consensus_members, NumConsensusMembers]),
ct_rpc:call(Node, application, set_env, [blockchain, port, Port]),
ct_rpc:call(Node, application, set_env, [blockchain, seed_nodes, SeedNodes]),
ct_rpc:call(Node, application, set_env, [blockchain, key, Key]),
ct_rpc:call(Node, application, set_env, [blockchain, peer_cache_timeout, PeerCacheTimeout]),
ct_rpc:call(Node, application, set_env, [blockchain, sc_client_handler, sc_client_test_handler]),
ct_rpc:call(Node, application, set_env, [blockchain, sc_packet_handler, sc_packet_test_handler]),
ct_rpc:call(Node, application, set_env, [blockchain, peerbook_update_interval, 200]),
ct_rpc:call(Node, application, set_env, [blockchain, peerbook_allow_rfc1918, true]),
ct_rpc:call(Node, application, set_env, [blockchain, max_inbound_connections, TotalNodes*2]),
ct_rpc:call(Node, application, set_env, [blockchain, outbound_gossip_connections, TotalNodes]),
ct_rpc:call(Node, application, set_env, [blockchain, listen_interface, "127.0.0.1"]),
ct_rpc:call(Node, application, set_env, [blockchain, sc_client_transport_handler, SCClientTransportHandler]),
ct_rpc:call(Node, application, set_env, [blockchain, sc_sup_type, testing]),
{ok, StartedApps} = ct_rpc:call(Node, application, ensure_all_started, [blockchain]),
log("Node: ~p, StartedApps: ~p", [Node, StartedApps])
end, Nodes),

%% check that the config loaded correctly on each node
true = lists:all(fun(Res) -> Res == ok end, ConfigResult),
Nodes =
pmap(
fun(Node) ->
start_node(Node, Config, TestCase)
end, NodeNames),

pmap(
fun(Node) ->
LogRoot = LogDir ++ "_" ++ atom_to_list(Node),

%% set blockchain configuration
#{public := PubKey, secret := PrivKey} = libp2p_crypto:generate_keys(ecc_compact),
Key = {PubKey, libp2p_crypto:mk_sig_fun(PrivKey), libp2p_crypto:mk_ecdh_fun(PrivKey)},
BlockchainBaseDir = BaseDir ++ "_" ++ atom_to_list(Node),

ct_rpc:call(Node, cover, start, []),

application_load(Node,
[lager, blockchain, libp2p, erlang_stats, grpcbox]),

application_set_env(Node, [
% give each node its own log directory
{lager, log_root, LogRoot},
{blockchain, testing, true},
{blockchain, enable_nat, false},
{blockchain, base_dir, BlockchainBaseDir},
{blockchain, num_consensus_members, NumConsensusMembers},
{blockchain, port, Port},
{blockchain, seed_nodes, SeedNodes},
{blockchain, key, Key},
{blockchain, peer_cache_timeout, PeerCacheTimeout},
{blockchain, sc_client_handler, sc_client_test_handler},
{blockchain, sc_packet_handler, sc_packet_test_handler},
{blockchain, peerbook_update_interval, 200},
{blockchain, peerbook_allow_rfc1918, true},
{blockchain, max_inbound_connections, TotalNodes*2},
{blockchain, outbound_gossip_connections, TotalNodes},
{blockchain, listen_interface, "127.0.0.1"},
{blockchain, sc_client_transport_handler, SCClientTransportHandler},
{blockchain, sc_sup_type, testing}
]),

{Node, {ok, StartedApps3}} = {
Node,
ct_rpc:call(Node,
application, ensure_all_started, [blockchain])},
log("Node: ~p, StartedApps: ~p", [Node, StartedApps3]),

ct_rpc:call(Node, lager, set_loglevel, [{lager_file_backend, "log/console.log"}, debug])

end, Nodes),

%% accumulate the listen addr of all the nodes
Addrs = pmap(
Expand Down Expand Up @@ -584,7 +592,8 @@ download_serialized_region(URL) ->
Data.


% [{Node, PubKey}]
-spec find_connected_node_pair({node(), binary()}) ->
[node()] | disjoint_network.
find_connected_node_pair(NodeAddrList) ->
AddrMap =
lists:foldl(
Expand All @@ -595,11 +604,14 @@ find_connected_node_pair(NodeAddrList) ->
ct:pal("Node map: ~p", [AddrMap]),
find_connected_node_pair(maps:next(maps:iterator(AddrMap)), AddrMap, #{}).


% NetworkMap - #{ConnectedToNode => [ConnectedFromNode]}
-spec find_connected_node_pair(
maps:iterator(string(), node()), #{string() => node()},
#{node() => [node()]}) -> [node()] | disjoint_network.
find_connected_node_pair(none, _, NetworkMap) ->
ct:pal("Final Network Map~n~p", [NetworkMap]),
disjoint_network;

% NetworkMap - #{ConnectedToNode => [ConnectedFromNode]}
find_connected_node_pair({_, Node, Iter}, AddrToNodeMap, NetworkMap) ->
GossipPeerNodes =
addr_to_node(
Expand All @@ -621,10 +633,15 @@ find_connected_node_pair({_, Node, Iter}, AddrToNodeMap, NetworkMap) ->
[Node, ConnectedNode]
end.


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


% Remember which nodes a peer node is connected to
-spec add_to_network_map(node(), [string()], #{node() => [node()]}) ->
#{node() => [node()]}.
add_to_network_map(Node, GossipPeerNodes, NetworkMap) ->
lists:foldl(
fun(PeerNode, Acc) ->
Expand All @@ -633,3 +650,20 @@ add_to_network_map(Node, GossipPeerNodes, NetworkMap) ->
[Node | NodeList]
end, [Node], Acc)
end, NetworkMap, GossipPeerNodes).


-spec application_load(node(), [atom()]) -> ok.
application_load(Node, Applications) ->
lists:foreach(
fun(Application) ->
ct_rpc:call(Node, application, load, [Application])
end, Applications).


-spec application_set_env(node(), [{atom(), atom(), term()}]) -> ok.
application_set_env(Node, Env) ->
lists:foreach(
fun({Application, Par, Val}) ->
ok = ct_rpc:call(
Node, application, set_env, [Application, Par, Val])
end, Env).
72 changes: 36 additions & 36 deletions test/blockchain_state_channel_SUITE.erl
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,8 @@ init_per_testcase(Test, Config) ->
ConsensusMembers = get_consensus_members(Nodes, ConsensusAddrs),
[
{connected_nodes, [RouterNode, GatewayNode]},
{routernode, RouterNode},
{gatewaynode, GatewayNode},
{router_node, RouterNode},
{gateway_node, GatewayNode},
{nodes, Nodes},
{consensus_members, ConsensusMembers},
{master_key, MasterKey}
Expand All @@ -244,8 +244,8 @@ end_per_suite(_) ->
%%--------------------------------------------------------------------

full_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -379,7 +379,7 @@ diff_test(Config) ->

%% Get router chain, swarm and pubkey_bin
RouterChain = ct_rpc:call(RouterNode, blockchain_worker, blockchain, []),
RouterSwarm = ct_rpc:call(RouterNode, blockchain_swarm, swarm, []),
RouterSwarmTID = ct_rpc:call(RouterNode, blockchain_swarm, tid, []),
RouterPubkeyBin = ct_rpc:call(RouterNode, blockchain_swarm, pubkey_bin, []),
ct:pal("RouterNode ~p", [RouterNode]),
ct:pal("Gateway node1 ~p", [GatewayNode1]),
Expand All @@ -404,7 +404,7 @@ diff_test(Config) ->
ct:pal("Block0: ~p", [Block0]),

%% Fake gossip block
ok = ct_rpc:call(RouterNode, blockchain_gossip_handler, add_block, [Block0, RouterChain, Self, RouterSwarm]),
ok = ct_rpc:call(RouterNode, blockchain_gossip_handler, add_block, [Block0, RouterChain, Self, RouterSwarmTID]),

%% Wait till the block is gossiped
ok = blockchain_ct_utils:wait_until_height(GatewayNode1, 2),
Expand Down Expand Up @@ -504,8 +504,8 @@ diff_test(Config) ->
ok.

overspent_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -633,8 +633,8 @@ overspent_test(Config) ->
ok.

dup_packets_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -731,8 +731,8 @@ dup_packets_test(Config) ->
ok.

cached_routing_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -808,8 +808,8 @@ cached_routing_test(Config) ->
ok.

max_actor_cache_eviction_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -946,8 +946,8 @@ max_actor_cache_eviction_test(Config) ->


max_actor_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -1079,8 +1079,8 @@ max_actor_test(Config) ->
ok.

replay_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -1176,8 +1176,8 @@ replay_test(Config) ->
ok.

multiple_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -1441,8 +1441,8 @@ multi_owner_multi_sc_test(Config) ->
ok.

multi_active_sc_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -1603,7 +1603,7 @@ multi_active_sc_test(Config) ->
ok.

open_without_oui_test(Config) ->
RouterNode = ?config(routernode, Config),
RouterNode = ?config(router_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand All @@ -1622,7 +1622,7 @@ open_without_oui_test(Config) ->
ok.

max_scs_open_test(Config) ->
RouterNode = ?config(routernode, Config),
RouterNode = ?config(router_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -1664,7 +1664,7 @@ max_scs_open_test(Config) ->
ok.

max_scs_open_v2_test(Config) ->
RouterNode = ?config(routernode, Config),
RouterNode = ?config(router_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

Self = self(),
Expand Down Expand Up @@ -1950,7 +1950,7 @@ sc_dispute_prevention_test(Config) ->


oui_not_found_test(Config) ->
RouterNode = ?config(routernode, Config),
RouterNode = ?config(router_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -2022,8 +2022,8 @@ unknown_owner_test(Config) ->
ok.

crash_single_sc_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -2131,8 +2131,8 @@ crash_single_sc_test(Config) ->
ok.

crash_multi_sc_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -2313,8 +2313,8 @@ crash_multi_sc_test(Config) ->
ok.

crash_sc_sup_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -2424,8 +2424,8 @@ crash_sc_sup_test(Config) ->
ok.

hotspot_in_router_oui_test(Config) ->
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down Expand Up @@ -2537,8 +2537,8 @@ hotspot_in_router_oui_test(Config) ->

default_routers_test(Config) ->
Nodes = ?config(nodes, Config),
RouterNode = ?config(routernode, Config),
GatewayNode1 = ?config(gatewaynode, Config),
RouterNode = ?config(router_node, Config),
GatewayNode1 = ?config(gateway_node, Config),
ConsensusMembers = ?config(consensus_members, Config),

%% Get router chain, swarm and pubkey_bin
Expand Down

0 comments on commit 184d175

Please sign in to comment.