anchor.diff:  -define(call(N, M, A), ?call(N, file_meta, M, A)).
   -define(call(N, Mod, M, A), rpc:call(N, Mod, M, A)).
   
  +-define(call_with_time(N, M, A), ?call_with_time(N, file_meta, M, A)).
  +-define(call_with_time(N, Mod, M, A), rpc:call(N, ?MODULE, exec_and_check_time, [Mod, M, A])).
  +
   %% export for ct
  --export([all/0, init_per_suite/1, end_per_suite/1]).
  +-export([all/0, init_per_suite/1, end_per_suite/1, exec_and_check_time/3]).
   -export([basic_operations_test/1]).
   
   -performance({test_cases, []}).
  
positive.code:     ?assertMatch({ok, #document{key = U2}},             {A12, U12}),
      ?assertMatch({ok, #document{key = U2}},             {A13, U13}),
  
  
      ?assertMatch({ok, [U2]}, ?call(Worker1, list_uuids, [{path, <<"/spaces">>}, 0, 10])),
  
      {A15, U15} = ?call(Worker1, list_uuids, [{path, <<"/spaces/Space 1/dir1">>}, 0, 20]),
      {A16, U16} = ?call(Worker1, list_uuids, [{path, <<"/spaces/Space 1/dir1">>}, 5, 10]),
  
      ?assertMatch({ok, _}, {A15, U15}),
      ?assertMatch({ok, _}, {A16, U16}),
  
      ?assertMatch(20, length(U15)),
      ?assertMatch(U16, lists:sublist(U15, 6, 10)),
  
      ?assertMatch(false, ?call(Worker1, exists, [{path, <<"/spaces/Space 1/dir2/file4">>}])),
      ?assertMatch(false, ?call(Worker1, exists, [{path, <<"/spaces/Space 2/dir2/file1">>}])),
      ?assertMatch(true, ?call(Worker1, exists, [{path, <<"/">>}])),
      ?assertMatch(true, ?call(Worker1, exists, [{path, <<"/spaces/Space 1/dir2/file1">>}])),
      ?assertMatch({ok, [_, _, _]}, ?call(Worker1, list_uuids, [{path, <<"/spaces/Space 1/dir2">>}, 0, 10])),
  
      ?assertMatch(ok, ?call(Worker1, delete, [{path, <<"/spaces/Space 1/dir2/file1">>}])),
      ?assertMatch(ok, ?call(Worker1, delete, [{uuid, U22}])),
      ?assertMatch({error, _}, ?call(Worker1, delete, [{path, <<"/spaces/Space 1/dir2/file4">>}])),
  
      ?assertMatch(false, ?call(Worker1, exists, [{path, <<"/spaces/Space 1/dir2/file1">>}])),
      ?assertMatch(false, ?call(Worker1, exists, [{path, <<"/spaces/Space 1/dir2/file2">>}])),
  
      ?assertMatch({ok, [U23]}, ?call(Worker1, list_uuids, [{path, <<"/spaces/Space 1/dir2">>}, 0, 10])),
  
      io:format(user, "1: ~p~n", [timer:now_diff(E1, S1)]),
  
      ok.
  
  
negative.code: 
  %%%===================================================================
  %%% Internal functions
  %%%===================================================================
  
  exec_and_check_time(Mod, M, A) ->
      BeforeProcessing = os:timestamp(),
      Ans = erlang:apply(Mod, M, A),
      AfterProcessing = os:timestamp(),
      {Ans, timer:now_diff(AfterProcessing, BeforeProcessing)}.
  
  create_deep_tree(Worker) ->
      create_deep_tree(Worker, "/spaces/Space 1", 18).
  
  create_deep_tree(Worker, Prefix, 1) ->
      {{A, U}, Time} = ?call_with_time(Worker, create, [{path, list_to_binary(Prefix)}, #file_meta{name = <<"1">>}]),
      ?assertMatch({ok, _}, {A, U}),
      {list_to_binary(Prefix++"/1"), Time};
  
  create_deep_tree(Worker, Prefix, Num) ->
      StringNum = integer_to_list(Num),
      {A, U} = ?call(Worker, create, [{path, list_to_binary(Prefix)}, #file_meta{name = list_to_binary(StringNum)}]),
      ?assertMatch({ok, _}, {A, U}),
      create_deep_tree(Worker, Prefix++"/"++StringNum, Num-1).
  