anchor.diff:      ?assertEqual(ok,rpc:call(Node,application,stop,[Application])),
       ok.
   
  -
  -%% 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()).
  +%% ====================================================================
  +%% Preparing environment for app
  +%% ====================================================================
   
   %% stop_deps/1
   %% ====================================================================
  
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: %% ====================================================================
  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.
  