anchor.diff:      unittest_helper:check_ring_data().
   
   add_2x3_load_test() ->
  -    BenchPid = erlang:spawn(fun() -> bench:increment(1, 1000) end),
  +    BenchPid = erlang:spawn(fun() -> bench:increment(1, 5000) end),
  +    ct:pal("######## starting join 1 ########"),
       _ = api_vm:add_nodes(3),
       check_size(4),
       timer:sleep(500),
  +    ct:pal("######## starting join 2 ########"),
       _ = api_vm:add_nodes(3),
       check_size(7),
  +    ct:pal("######## waiting for bench finish ########"),
       util:wait_for_process_to_die(BenchPid).
  -
  -add_1_rm_1_load(Config) ->
  -    add_x_rm_y_load(Config, 1, 1).
   
   add_3_rm_1_load(Config) ->
       add_x_rm_y_load(Config, 3, 1).
  
positive.code: 
  -spec add_x_rm_y_load_test(X::non_neg_integer(), Y::pos_integer()) -> ok.
  add_x_rm_y_load_test(X, Y) ->
      BenchPid = erlang:spawn(fun() -> bench:increment(1, 1000) end),
      _ = api_vm:add_nodes(X),
      check_size(X + 1),
      timer:sleep(500),
      % let Y nodes gracefully leave
      _ = [comm:send_local(Pid, {leave, null}) || Pid <- util:random_subset(Y, pid_groups:find_all(dht_node))],
      check_size(X + 1 - Y),
      util:wait_for_process_to_die(BenchPid).
  
  -spec prop_join_at(FirstId::?RT:key(), SecondId::?RT:key(), Incremental::boolean()) -> true.
  
negative.code:      tester_join_at,
       add_9, rm_5, add_9_rm_5,
       add_2x3_load,
       add_3_rm_1_load,
       add_3_rm_2_load,
       add_3_rm_3_load,
  