anchor.diff:  long_msg() ->
       fun() -> lists:duplicate(1000000, $a) end.
   
  -%% Building huge terms (like long_msg/0) in init_per_group seems to cause
  -%% test_server crash with 'no_answer_from_tc_supervisor' sometimes on some
  -%% machines. Therefore lazy evaluation when test case has started.
  +%% Passing huge terms (like long_msg/0) through config causes excessive memory
  +%% consumption and long runtimes in the test server. This results in test_server
  +%% crash with 'no_answer_from_tc_supervisor' sometimes on some machines.
  +%% Therefore lazy evaluation when test case has started.
   lazy_eval(F) when is_function(F) -> F();
   lazy_eval(Lst)  when is_list(Lst) -> lists:map(fun lazy_eval/1, Lst);
   lazy_eval(Tpl) when is_tuple(Tpl) -> list_to_tuple(lists:map(fun lazy_eval/1, tuple_to_list(Tpl)));
  
positive.code:     Block = rc2_cbc(),
      [{block, Block} | Config];
  group_config(aes_cbc128 = Type, Config) ->
      Block = aes_cbc128(Config),
      Pairs = cmac_nist(Config, Type),
      [{block, Block}, {cmac, Pairs} | Config];
  group_config(aes_cbc256 = Type, Config) ->
      Block = aes_cbc256(Config),
      Pairs = cmac_nist(Config, Type),
      [{block, Block}, {cmac, Pairs} | Config];
  group_config(aes_ecb, Config) ->
      Block = aes_ecb(Config),
      [{block, Block} | Config];    
  group_config(aes_ige256, Config) ->
      Block = aes_ige256(),
      [{block, Block} | Config];
  group_config(aes_cfb8, Config) ->
      Block = aes_cfb8(Config),
      [{block, Block} | Config];
  group_config(aes_cfb128, Config) ->
      Block = aes_cfb128(Config),
      [{block, Block} | Config];
  group_config(blowfish_cbc, Config) ->
      Block = blowfish_cbc(),
  
negative.code: datadir(Config) ->
      proplists:get_value(data_dir, Config).
  
  -define(KiB, 1024).
  -define(MiB, (1024 * 1024)).
  -define(GiB, (1024 * 1024 * 1024)).
  
  fmt_words(Words) ->
      BSize = Words * erlang:system_info(wordsize),
      if BSize < ?KiB ->
              integer_to_list(BSize);
         BSize < ?MiB ->
              io_lib:format("~8.2fKiB (~8w)", [BSize / ?KiB, BSize]);
         BSize < ?GiB ->
              io_lib:format("~8.2fMiB (~8w)", [BSize / ?MiB, BSize]);
         true ->
              io_lib:format("~8.2fGiB (~8w)", [BSize / ?GiB, BSize])
      end.
  
  log_rsp_size(Label, Term) ->
      S = erts_debug:size(Term),
      ct:pal("~s: ~w test(s), Memory used: ~s",
             [Label, length(Term), fmt_words(S)]).
  
  read_rsp(Config, Type, Files) ->
      Tests =
          lists:foldl(
            fun(FileName, Acc) ->
                    read_rsp_file(filename:join(datadir(Config), FileName),
                                  Type, Acc)
            end, [], Files),
      log_rsp_size(Type, Tests),
      Tests.
  
  read_rsp_file(FileName, Type, Acc) ->
      {ok, Raw} = file:read_file(FileName),
  