Skip to content

Commit

Permalink
add force_replace test to ensemble_ring_changes
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewjstone committed Aug 19, 2014
1 parent 07de5cb commit 44f562c
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions tests/ensemble_ring_changes.erl
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,15 @@ confirm() ->
{ok, _Obj2} = assert_update(PBC, Bucket, Key, Obj, <<"test-val2">>),
Replacements = expand_cluster(Joined, NotJoined),
{_Vsn, [View]} = rpc:call(Node, riak_ensemble_manager, get_views, [Ensemble]),
{_, Follower} = hd(lists:reverse(View)),
lager:info("Follower = ~p~n", [Follower]),
{_, F1} = hd(lists:reverse(View)),
{_, F2} = hd(tl(lists:reverse(View))),
lager:info("F1= ~p, F2=~p", [F1, F2]),
read_modify_write(PBC, Bucket, Key, <<"test-val2">>, <<"test-val3">>),
replace_node(Node, Follower, hd(Replacements)),
[R1, R2] = Replacements,
replace_node(Node, F1, R1),
read_modify_write(PBC, Bucket, Key, <<"test-val3">>, <<"test-val4">>),
force_replace_node(Node, F2, R2),
read_modify_write(PBC, Bucket, Key, <<"test-val4">>, <<"test-val5">>),
pass.

read_modify_write(PBC, Bucket, Key, Expected, NewVal) ->
Expand Down Expand Up @@ -105,6 +109,16 @@ replace_node(Node, OldNode, NewNode) ->
rt:try_nodes_ready(Nodes, 3, 500),
?assertEqual(ok, rt:wait_until_nodes_ready(Nodes)).

force_replace_node(Node, OldNode, NewNode) ->
lager:info("Force Replacing ~p with ~p", [OldNode, NewNode]),
Nodes = [OldNode, NewNode],
rt:staged_join(NewNode, Node),
?assertEqual(ok, rt:wait_until_ring_converged(Nodes)),
ok = rpc:call(Node, riak_core_claimant, force_replace, Nodes),
rt:plan_and_commit(Node),
rt:try_nodes_ready(Nodes, 3, 500),
?assertEqual(ok, rt:wait_until_nodes_ready(Nodes)).

expand_cluster(OldNodes, NewNodes0) ->
%% Always have 2 replacement nodes
{NewNodes, Replacements} = lists:split(length(NewNodes0)-2, NewNodes0),
Expand Down

0 comments on commit 44f562c

Please sign in to comment.