anchor.diff:      {SuccessfulProxyPids, SuccessfulClientPids} = lists:unzip(SuccessfulConnections),
       FailedConnections = ProxyPids -- SuccessfulProxyPids,
   
  -    ct:print("SuccessfulClientPids: ~p", [length(SuccessfulClientPids)]),
  -
       case {length(SuccessfulClientPids), RetryFlag} of
           {Number, _} ->
               {SuccessfulClientPids, FailedConnections};
  
positive.code:         ?PERF_CFG(large, [?CLIENT_NUM(1500)])
      ]).
  concurrent_clients_spawning_performance_base(Config) ->
      try
          ClientNum = ?CLIENT_NUM,
  
          %% ----------------------
          %% Start time measurement
          %% ----------------------
          StartTime = os:timestamp(),
  
          {ok, SupervisorPid, _} = spawn_supervisor(fun spawn_many_clients/2, [
              Config, ClientNum
          ]),
  
          Time = timer:now_diff(os:timestamp(), StartTime) / 1000,
          %% ----------------------
          %% End time measurement
          %% ----------------------
  
          terminate_supervisor(Config, SupervisorPid),
  
          [
              #parameter{name = client_spawning_time, value = Time, unit = "ms",
                  description = "Time taken by clients spawning and handshaking"}
          ]
      catch T:M ->
          ct:print("A: ~p", [{T, M, erlang:get_stacktrace()}])
      end.
  
  
  concurrent_active_clients_spawning_performance(Config) ->
  
negative.code:     receive finished -> ok end,
  
      Time = timer:now_diff(os:timestamp(), StartTime) / 1000,
      AvgPerUpdatePerClient = Time / ChangeNum / ClientNum,
      %% ----------------------
      %% End time measurement
      %% ----------------------
  