anchor.diff:  
   %%--------------------------------------------------------------------
   %% @doc
  -%% Removes nodes from ct_cover analysis if cover is started.
  +%% Gathers cover analysis reports if cover is started.
   %% Afterwards, cleans environment by running 'cleanup.py' script.
   %% @end
   %%--------------------------------------------------------------------
   -spec clean_environment(Config :: list()) -> ok.
   clean_environment(Config) ->
  -    case performance:is_performance() of
  -        true ->
  +    case cover:modules() of
  +        [] ->
               ok;
           _ ->
               GrNodes = ?config(gr_nodes, Config),
               Workers = ?config(op_worker_nodes, Config),
               CCMs = ?config(op_ccm_nodes, Config),
               AllNodes = GrNodes ++ Workers ++ CCMs,
  -            ok = ct_cover:remove_nodes(AllNodes)
  +
  +            global:register_name(?CLEANING_PROC_NAME, self()),
  +            global:sync(),
  +
  +            lists:foreach(fun(N) ->
  +                ok = rpc:call(N, application, stop, [op_worker])
  +            end, Workers),
  +
  +            lists:foreach(fun(N) ->
  +                ok = rpc:call(N, application, stop, [op_ccm])
  +            end, CCMs),
  +
  +            lists:foreach(fun(N) ->
  +                ok = rpc:call(N, application, stop, [globalregistry])
  +            end, GrNodes),
  +
  +            lists:foreach(fun(_N) ->
  +                receive
  +                    {app_ended, FileData} ->
  +                        CoverFile = "cv.coverdata",
  +                        ok = file:write_file(CoverFile, FileData),
  +                        cover:import(CoverFile),
  +                        file:delete(CoverFile)
  +                    after
  +                        timer:minutes(1) ->
  +                            throw(cover_not_received)
  +
  +                end
  +            end, AllNodes)
       end,
   
       Dockers = proplists:get_value(docker_ids, Config, []),
  
positive.code: %%--------------------------------------------------------------------
  %% @doc
  %% Starts deps and dockers with needed applications and mocks.
  %% Adds started nodes to ct_cover analysis if needed (test is not performance).
  %% @end
  %%--------------------------------------------------------------------
  -spec prepare_test_environment(Config :: list(), DescriptionFile :: string(),
  
negative.code:         filename:join([ProjectRoot, "bamboos", "docker", "cleanup.py"]),
      utils:cmd([CleanupScript | DockersStr]),
      ok.
  
  %%--------------------------------------------------------------------
  %% @doc
  %% Starts cover server if needed (if apropriate env is set).
  %% @end
  %%--------------------------------------------------------------------
  -spec start_cover() -> ok.
  start_cover() ->
      case application:get_env(cover_enabled) of
          {ok, Dirs} when is_list(Dirs) ->
              cover:start(),
              lists:foreach(fun(D) ->
                  cover:compile_beam_directory(atom_to_list(D))
              end, Dirs),
              ok;
          _ ->
              ok
      end.
  
  %%--------------------------------------------------------------------
  %% @doc
  %% Stops cover server if it is running.
  %% @end
  %%--------------------------------------------------------------------
  stop_cover() ->
      case application:get_env(cover_enabled) of
          {ok, Dirs} when is_list(Dirs) ->
              CoverFile = "cv.coverdata",
              cover:export(CoverFile),
              {ok, FileData} = file:read_file(CoverFile),
              ok = file:delete(CoverFile),
              true = is_pid(global:send(?CLEANING_PROC_NAME, {app_ended, FileData})),
              cover:stop(),
              ok;
          _ ->
              ok
      end.
  
  %%%===================================================================
  %%% Internal functions
  