anchor.diff:      ct:pal("EXECUTION TIMES in microseconds (10^-6)~nBuildRing = ~w~nFillRing = ~w~nDBStatus = ~w~nGetVersionCount = ~w~nStopRing = ~w",
              [BuildRingTime, FillTime, DBStatusTime, GetVersionCountTime, StopRingTime]),
       ok.
  -
  -
  -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -% Merkle Tree Tests
  -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -merkleSync_noOutdated(Config) ->
  -    [Start, End] = start_sync(Config, 4, 1000, 0, 1, 0.1, get_merkle_tree_RepUpd_config()),
  -    ?assert(Start =:= End),
  -    ok.    
  -
  -merkleSync_simple(Config) ->
  -    [Start, End] = start_sync(Config, 4, 1000, 10, 1, 0.2, get_merkle_tree_RepUpd_config()),
  -    ?assert(Start < End),
  -    ok.
  -
  -merkleSync_min_nodes(Config) ->
  -    MConf = get_merkle_tree_RepUpd_config(),
  -    [Start, End] = start_sync(Config, 1, 1, 1000, 1, 0.2, MConf),
  -    ?assert(Start =:= End),
  -    ok.
  -
  -merkleSync_parts(Config) ->
  -    OldConf = get_merkle_tree_RepUpd_config(),
  -    MConf = lists:keyreplace(rep_update_max_items, 1, OldConf, {rep_update_max_items, 500}),
  -    [Start, End] = start_sync(Config, 4, 1000, 100, 1, 0.2, MConf),
  -    ?assert(Start < End),
  -    ok.
  -
  -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -% ART Tests
  -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  -
  -artSync_noOutdated(Config) ->
  -    [Start, End] = start_sync(Config, 4, 1000, 0, 1, 0.1, get_art_RepUpd_config()),
  -    ?assert(Start =:= End),
  -    ok.
  -
  -artSync_simple(Config) ->
  -    [Start, End] = start_sync(Config, 4, 1000, 10, 1, 0.2, get_art_RepUpd_config()),
  -    ?assert(Start < End),    
  -    ok.
  -
  -artSync_min_nodes(Config) ->
  -    [Start, End] = start_sync(Config, 1, 1, 1000, 1, 0.2, get_art_RepUpd_config()),
  -    ?assert(Start =:= End),
  -    ok.    
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   % Helper Functions
  
positive.code:     DestVersCount = NodeCount * 2 * DataCount,
      ItemCount = NodeCount * DataCount,
      %Build Ring
      {BuildRingTime, _} = util:tc(?MODULE, build_symmetric_ring, [NodeCount, Config, get_bloom_RepUpd_config()]),
      config:write(rep_update_fpr, Fpr),
      {FillTime, _} = util:tc(?MODULE, fill_symmetric_ring, [DataCount, NodeCount, 100]),
      %measure initial sync degree
  
negative.code: 
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  get_rep_upd_config(Method) ->
      [{rep_update_activate, true},
       {rep_update_interval, 100000000}, %stop trigger
       {rep_update_trigger, trigger_periodic},
       {rep_update_recon_method, Method},
       {rep_update_resolve_method, simple},
       {rep_update_recon_fpr, 0.1},
       {rep_update_max_items, case Method of
                                  bloom -> 10000;
                                  _ -> 100000
                              end},
       {rep_update_negotiate_sync_interval, case Method of
                                                bloom -> false;
                                                _ -> true
                                            end}].    
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % Replica Update tests
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  init_per_group(Group, Config) ->
      ct:comment(io_lib:format("BEGIN ~p", [Group])),
      case Group of
          upd_bloom -> [{ru_method, bloom} | Config];
          upd_merkle -> [{ru_method, merkle_tree} | Config];
          upd_art -> [{ru_method, art} | Config];
          _ -> Config
      end.
  
  end_per_group(Group, Config) ->  
      Method = proplists:get_value(ru_method, Config, undefined),
      case Method of
          undefined -> ct:comment(io_lib:format("END ~p", [Group]));
          M -> ct:comment(io_lib:format("END ~p/~p", [Group, M]))
      end,
      proplists:delete(ru_method, Config).
  
  
  upd_no_outdated(Config) ->
      Method = proplists:get_value(ru_method, Config),
      [Start, End] = start_sync(Config, 4, 1000, 0, 1, 0.1, get_rep_upd_config(Method)),
      ?assert(Start =:= End).
  
  upd_min_nodes(Config) ->
      Method = proplists:get_value(ru_method, Config),
      [Start, End] = start_sync(Config, 1, 1, 1000, 1, 0.2, get_rep_upd_config(Method)),
      ?assert(Start =:= End).    
  
  upd_simple(Config) ->
      Method = proplists:get_value(ru_method, Config),
      [Start, End] = start_sync(Config, 4, 1000, 10, 1, 0.1, get_rep_upd_config(Method)),
      ?assert(Start < End).    
  
  upd_parts(Config) ->
      Method = proplists:get_value(ru_method, Config),
      OldConf = get_rep_upd_config(Method),
      Conf = lists:keyreplace(rep_update_max_items, 1, OldConf, {rep_update_max_items, 500}),
      [Start, End] = start_sync(Config, 4, 1000, 100, 1, 0.1, Conf),
      ?assert(Start < End).
  
  upd_fpr_compare(Config) ->
      Method = proplists:get_value(ru_method, Config),
      Conf = get_rep_upd_config(Method),    
      Fpr1 = 0.2,
      Fpr2 = 0.01,
      R1 = start_sync(Config, 4, 1000, 100, 2, Fpr1, Conf),
      R2 = start_sync(Config, 4, 1000, 100, 2, Fpr2, Conf),
      ct:pal("Result FPR=~p - ~p~nFPR=~p - ~p", [Fpr1, R1, Fpr2, R2]),
      ?assert(lists:nth(2, R1) < lists:nth(2, R2) orelse lists:last(R1) < lists:last(R2)).    
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % Basic Functions Group
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
  
  get_symmetric_keys_test(Config) ->
      Config2 = unittest_helper:start_minimal_procs(Config, [], true),
  