123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- -module(syn_groups_consistency_SUITE).
- -export([all/0]).
- -export([init_per_suite/1, end_per_suite/1]).
- -export([groups/0, init_per_group/2, end_per_group/2]).
- -export([init_per_testcase/2, end_per_testcase/2]).
- -export([
- two_nodes_netsplit_when_there_are_no_conflicts/1
- ]).
- -include_lib("common_test/include/ct.hrl").
- all() ->
- [
- {group, two_nodes_netsplits}
- ].
- groups() ->
- [
- {two_nodes_netsplits, [shuffle], [
- two_nodes_netsplit_when_there_are_no_conflicts
- ]}
- ].
- init_per_suite(Config) ->
-
- SlaveNodeShortName = syn_slave,
-
- {ok, SlaveNode} = syn_test_suite_helper:start_slave(SlaveNodeShortName),
-
- [
- {slave_node_short_name, SlaveNodeShortName},
- {slave_node, SlaveNode}
- | Config
- ].
- end_per_suite(Config) ->
-
- SlaveNodeShortName = proplists:get_value(slave_node_short_name, Config),
-
- syn_test_suite_helper:stop_slave(SlaveNodeShortName).
- init_per_group(_GroupName, Config) -> Config.
- end_per_group(_GroupName, _Config) -> ok.
- init_per_testcase(_TestCase, Config) ->
-
- SlaveNode = proplists:get_value(slave_node, Config),
-
- application:set_env(mnesia, schema_location, ram),
- rpc:call(SlaveNode, mnesia, schema_location, [ram]),
-
- Config.
- end_per_testcase(_TestCase, Config) ->
-
- SlaveNode = proplists:get_value(slave_node, Config),
- syn_test_suite_helper:clean_after_test(SlaveNode).
- two_nodes_netsplit_when_there_are_no_conflicts(Config) ->
-
- SlaveNode = proplists:get_value(slave_node, Config),
- CurrentNode = node(),
-
- application:set_env(mnesia, schema_location, ram),
- rpc:call(SlaveNode, mnesia, schema_location, [ram]),
-
- ok = syn:start(),
- ok = syn:init(),
- ok = rpc:call(SlaveNode, syn, start, []),
- ok = rpc:call(SlaveNode, syn, init, []),
- timer:sleep(100),
-
- LocalPid = syn_test_suite_helper:start_process(),
- SlavePidLocal = syn_test_suite_helper:start_process(SlaveNode),
- SlavePidSlave = syn_test_suite_helper:start_process(SlaveNode),
-
- ok = syn:join({group, tuple_name}, LocalPid),
- ok = syn:join({group, tuple_name}, SlavePidLocal),
- ok = rpc:call(SlaveNode, syn, join, [{group, tuple_name}, SlavePidSlave]),
- timer:sleep(100),
-
- 3 = mnesia:table_info(syn_groups_table, size),
- 3 = rpc:call(SlaveNode, mnesia, table_info, [syn_groups_table, size]),
- LocalActiveReplicas = mnesia:table_info(syn_groups_table, active_replicas),
- 2 = length(LocalActiveReplicas),
- true = lists:member(SlaveNode, LocalActiveReplicas),
- true = lists:member(CurrentNode, LocalActiveReplicas),
- SlaveActiveReplicas = rpc:call(SlaveNode, mnesia, table_info, [syn_groups_table, active_replicas]),
- 2 = length(SlaveActiveReplicas),
- true = lists:member(SlaveNode, SlaveActiveReplicas),
- true = lists:member(CurrentNode, SlaveActiveReplicas),
-
- syn_test_suite_helper:disconnect_node(SlaveNode),
- timer:sleep(1000),
-
- 1 = mnesia:table_info(syn_groups_table, size),
- [CurrentNode] = mnesia:table_info(syn_groups_table, active_replicas),
-
- syn_test_suite_helper:connect_node(SlaveNode),
- timer:sleep(1000),
-
- 3 = mnesia:table_info(syn_groups_table, size),
- 3 = rpc:call(SlaveNode, mnesia, table_info, [syn_groups_table, size]),
- LocalActiveReplicasAfter = mnesia:table_info(syn_groups_table, active_replicas),
- 2 = length(LocalActiveReplicasAfter),
- true = lists:member(SlaveNode, LocalActiveReplicasAfter),
- true = lists:member(CurrentNode, LocalActiveReplicasAfter),
- SlaveActiveReplicasAfter = rpc:call(SlaveNode, mnesia, table_info, [syn_groups_table, active_replicas]),
- 2 = length(SlaveActiveReplicasAfter),
- true = lists:member(SlaveNode, SlaveActiveReplicasAfter),
- true = lists:member(CurrentNode, SlaveActiveReplicasAfter),
-
- 3 = length(syn:get_members({group, tuple_name})),
- true = syn:member(LocalPid, {group, tuple_name}),
- true = syn:member(SlavePidLocal, {group, tuple_name}),
- true = syn:member(SlavePidSlave, {group, tuple_name}),
- 3 = length(rpc:call(SlaveNode, syn, get_members, [{group, tuple_name}])),
- true = rpc:call(SlaveNode, syn, member, [LocalPid, {group, tuple_name}]),
- true = rpc:call(SlaveNode, syn, member, [SlavePidLocal, {group, tuple_name}]),
- true = rpc:call(SlaveNode, syn, member, [SlavePidSlave, {group, tuple_name}]).
|