anchor.diff:      [{timetrap, {seconds, 15}}].
   
   all() ->
  -    [{group, N} || {N, _, _} <- groups()]
  -        ++ [remove_transports, stop_services].
  +    [start_ssl,
  +     start_diameter,
  +     start_services,
  +     add_transports]
  +        ++ [{group, N} || {N, _, _} <- groups()]
  +        ++ [remove_transports, stop_services, stop_diameter, stop_ssl].
   
   groups() ->
       Ts = tc(),
  
positive.code:     ok.
  
  init_per_suite(Config) ->
      init(os:find_executable("openssl"), Config).
  
  init(false, _) ->
      {skip, no_openssl};
  init(_, Config) ->
      ok = ssl:start(),
      ok = diameter:start(),
  
      Dir = proplists:get_value(priv_dir, Config),
      Servers = [server(S, sopts(S, Dir)) || S <- ?SERVERS],
  
      ok = diameter:start_service(?CLIENT, ?SERVICE(?CLIENT, ?DICT_COMMON)),
      true = diameter:subscribe(?CLIENT),
  
      Opts = ssl_options(Dir, "client"),
      Connections = [connect(?CLIENT, S, copts(N, Opts))
                     || {S,N} <- lists:zip(Servers, ?SERVERS)],
  
      [{transports, lists:zip(Servers, Connections)} | Config].
  
  end_per_suite(_Config) ->
      ok = diameter:stop(),
      ok = ssl:stop().
  
  %% Testcases to run when services are started and connections
  %% established. These are trivial, the interesting stuff is setting up
  %% the connections in init_per_suite/2.
  tc() ->
      [send1,
       send2,
  
negative.code:     call(?SERVER4).
  send5(_Config) ->
      call(?SERVER5).
  
  %% ===========================================================================
  %% diameter callbacks
  