anchor.diff:    [{ok, X} = kv_on_cseq:read(integer_to_list(X))||X<-lists:seq(1,100)],
     true.
   
  +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +% test remove_node/1 remove a node and ensure data integrity after recovery
  +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  +tester_remove_node(_Config) ->
  +  Tabs = lists:delete(schema, mnesia:system_info(tables)),
  +  Node_name = string:sub_word(atom_to_list(lists:last(Tabs)), 2, $:),
  +  Node_tabs = [ Tab || Tab <- Tabs, string:sub_word(atom_to_list(Tab), 2, $:) =:= Node_name ],
  +  {Ok, _Not_found} = admin:del_nodes_by_name([Node_name], false),
  +  ct:pal("node removed: ~p ~nDb to be removed: ~p", [Ok, Node_tabs]),
  +  timer:sleep(11000),
  +  ct:pal("wake up -> delete DBs"),
  +  %[ok = file:delete(WorkingDir ++ atom_to_list(X)++".DCD")||X<-Node_tabs],
  +  [{atomic, ok} = mnesia:delete_table(X)||X<-Node_tabs],
  +  ct:pal("DBs removed -> wait for leases"),
  +  util:wait_for(fun admin:check_leases/0, 10000),
  +  [{ok, X} = kv_on_cseq:read(integer_to_list(X))||X<-lists:seq(1,100)],
  +  admin:add_nodes(1),
  +  ct:pal("add node to replace deleted one. Sleep for new node to join"),
  +  timer:sleep(3000),
  +  ct:pal("wake up -> check ring size == 4"),
  +  unittest_helper:check_ring_size_fully_joined(4),
  +  4 = admin:number_of_nodes(),
  +  true.
  
positive.code:   erlang:min(N, 200).
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % test create_ring_8/1 of mnesia recovery
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -spec tester_ring_8([db_backend_beh:entry()]) -> true.
  tester_ring_8(Config) ->
    {priv_dir, PrivDir} = lists:keyfind(priv_dir, 1, Config),
    unittest_helper:stop_ring(),
    ct:pal("ring stopped -> sleeping. Waiting for leases to expire"),
  
negative.code: -define(CLOSE, close).
  
  all() -> [
      {group, make_ring_group},
      {group, remove_node_group}
    ].
  groups() ->
    [
      {make_ring_group, [sequence], [tester_ring, tester_write, {group, recover_data_group}]},
      {recover_data_group, [sequence, {repeat, ?NUM_EXECUTIONS}], [tester_read]},
      {remove_node_group, [sequence], [tester_write, {group, remove_node}]},
      {remove_node, [sequence, {repeat, ?NUM_EXECUTIONS}], [tester_remove_node]}
    ].
  
  suite() -> [ {timetrap, {seconds, 60}} ].
  