anchor.diff:      receive finished -> ok end,
   
       Time = timer:now_diff(os:timestamp(), StartTime) / 1000,
  +    AvgPerUpdatePerClient = Time / ChangeNum / ClientNum,
       %% ----------------------
       %% End time measurement
       %% ----------------------
  
positive.code:         ?PERF_CFG(long, [?CLIENT_NUM(1500), ?REQUEST_INTERVAL_SECONDS(2)])
      ]).
  concurrent_active_clients_spawning_performance_base(Config) ->
      try
          ClientNum = ?CLIENT_NUM,
          RequestInterval = ?REQUEST_INTERVAL_SECONDS,
  
          MakeRequestRegularly = fun(Client) ->
              Pid = spawn_link(fun Loop() ->
                  receive
                      perform_request ->
                          ?assertMatch(
                              {ok, #gs_resp_graph{}},
                              gs_client:graph_request(Client, ?USER_1_GRI, get)
                          ),
                          erlang:send_after(round(timer:seconds(RequestInterval)), self(), perform_request),
                          Loop()
                  end
              end),
              erlang:send_after(rand:uniform(round(timer:seconds(RequestInterval))), Pid, perform_request)
          end,
  
          %% ----------------------
          %% Start time measurement
          %% ----------------------
          StartTime = os:timestamp(),
  
          {ok, SupervisorPid, _} = spawn_supervisor(fun spawn_many_clients/5, [
              Config, ClientNum, true, ?NO_OP_FUN, MakeRequestRegularly
          ]),
  
          Time = timer:now_diff(os:timestamp(), StartTime) / 1000,
          %% ----------------------
          %% End time measurement
          %% ----------------------
  
          terminate_supervisor(Config, SupervisorPid),
  
          [
              #parameter{name = update_propagation_time, value = Time, unit = "ms",
                  description = "Time taken by clients spawning and making regular requests"}
          ]
      catch T:M ->
          ct:print("A: ~p", [{T, M, erlang:get_stacktrace()}])
      end.
  
  
  update_propagation_performance(Config) ->
  
negative.code: 
      [
          #parameter{name = subscribe_unsubscribe_time, value = Time, unit = "ms",
              description = "Time taken to add and remove subscriptions for given resource."},
          #parameter{name = avg_time_per_subscriber, value = AvgPerSubscriber, unit = "ms",
              description = "Average time taken to add and remove one subscriber."}
      ].
  
  
  