anchor.diff:  %% ====================================================================
   get_db_node() ->
       ?NODE(?CURRENT_HOST,db).
  +
  +%% ====================================================================
  +%% Internal Functions
  +%% ====================================================================
  +
  +%% make_code_path/0
  +%% ====================================================================
  +%% @doc Returns current code path string, formatted as erlang slave node argument.
  +%% @end
  +-spec make_code_path() -> string().
  +%% ====================================================================
  +make_code_path() ->
  +    lists:foldl(fun(Node, Path) -> " -pa " ++ Node ++ Path end,
  +        [], code:get_path()).
  +
  +%% create_nodes_description/3
  +%% ====================================================================
  +%% @doc Creates description of nodes needed for test.
  +-spec create_nodes_description(Host:: atom(), TmpAns :: list(), Counter :: integer()) -> Result when
  +    Result ::  list().
  +%% ====================================================================
  +create_nodes_description(_Host, Ans, 0) ->
  +    Ans;
  +create_nodes_description(Host, Ans, Counter) ->
  +    Desc = {list_to_atom("slave" ++ integer_to_list(Counter)), Host},
  +    create_nodes_description(Host, [Desc | Ans], Counter - 1).
  +
  +%% create_dist_nodes_list/2
  +%% ====================================================================
  +%% @doc Creates list of nodes for distributed application
  +-spec create_dist_nodes_list(Nodes:: list(), DistNodesNum :: integer()) -> Result when
  +    Result ::  list().
  +%% ====================================================================
  +create_dist_nodes_list(_, 0) ->
  +    [];
  +create_dist_nodes_list([{NodeName, Host} | Nodes], DistNodesNum) ->
  +    Node = "'" ++ atom_to_list(NodeName) ++ "@" ++ atom_to_list(Host) ++ "'",
  +    [Node | create_dist_nodes_list(Nodes, DistNodesNum - 1)].
  +
  +%% create_dist_app_description/1
  +%% ====================================================================
  +%% @doc Creates description of distributed application
  +-spec create_dist_app_description(DistNodes:: list()) -> Result when
  +    Result ::  string().
  +%% ====================================================================
  +create_dist_app_description(DistNodes) ->
  +    [Main | Rest] = DistNodes,
  +    RestString = lists:foldl(fun(N, TmpAns) ->
  +        case TmpAns of
  +            "" -> N;
  +            _ -> TmpAns ++ ", " ++ N
  +        end
  +    end, "", Rest),
  +    "\"[{veil_cluster_node, 1000, [" ++ Main ++ ", {" ++ RestString ++ "}]}]\"".
  +
  +%% create_nodes_params_for_dist_nodes/3
  +%% ====================================================================
  +%% @doc Creates list of nodes for distributed application
  +-spec create_nodes_params_for_dist_nodes(Nodes:: list(), DistNodes :: list(), DistAppDescription :: string()) -> Result when
  +    Result ::  list().
  +%% ====================================================================
  +create_nodes_params_for_dist_nodes([], _DistNodes, _DistAppDescription) ->
  +    [];
  +create_nodes_params_for_dist_nodes([{NodeName, Host}  | Nodes], DistNodes, DistAppDescription) ->
  +    Node = "'" ++ atom_to_list(NodeName) ++ "@" ++ atom_to_list(Host) ++ "'",
  +    case lists:member(Node, DistNodes) of
  +        true ->
  +            SynchNodes = lists:delete(Node, DistNodes),
  +            SynchNodesString = lists:foldl(fun(N, TmpAns) ->
  +                case TmpAns of
  +                    "" -> N;
  +                    _ -> TmpAns ++ ", " ++ N
  +                end
  +            end, "", SynchNodes),
  +            Param = " -kernel distributed " ++ DistAppDescription ++ " -kernel sync_nodes_mandatory \"[" ++ SynchNodesString ++ "]\" -kernel sync_nodes_timeout 30000 ",
  +            [Param | create_nodes_params_for_dist_nodes(Nodes, DistNodes, DistAppDescription)];
  +        false -> ["" | create_nodes_params_for_dist_nodes(Nodes, DistNodes, DistAppDescription)]
  +    end.
  
positive.code: 
  %% API
  % Starting and stoping nodes
  -export([start_test_nodes/1, start_test_nodes/2]).
  -export([stop_test_nodes/1]).
  
  % Starting and stoping app
  -export([start_app_on_nodes/4]).
  -export([stop_app_on_nodes/3]).
  
  -export([set_env_vars/2,start_deps/1,stop_deps/1]).
  -export([start_deps_for_tester_node/0,stop_deps_for_tester_node/0]).
  
  -export([get_db_node/0]).
  
  
  %% start_test_nodes/1
  %% ====================================================================
  %% @doc Starts nodes needed for test.
  -spec start_test_nodes(NodesNum :: integer()) -> Result when
      Result ::  list().
  %% ====================================================================
  
negative.code: 
  %% start_test_nodes/2
  %% ====================================================================
  %% @doc Starts new nodes for test.
  -spec start_test_nodes(NodesNum :: integer(), Verbose :: boolean()) -> Result when
      Result ::  list().
  %% ====================================================================
  