public PerfTestRunner(
            ResultWriter writer,
            int timeSeconds,
            Client.TransportType transportType,
            int messageSizeBytes,
            int maximumParallelOperations,
            int scenarioInstances,
            string authType,
            int poolSize,
            string scenario,
            string runId,
            Func <PerfScenarioConfig, PerfScenario> scenarioFactory)
        {
            _log                = writer;
            _timeSeconds        = timeSeconds;
            _transportType      = transportType;
            _messageSizeBytes   = messageSizeBytes;
            _parallelOperations = maximumParallelOperations;
            _n               = scenarioInstances;
            _authType        = authType;
            _poolSize        = poolSize;
            _scenarioFactory = scenarioFactory;
            _tests           = new PerfScenario[_n];

            TelemetryMetrics.SetStaticConfigParameters(runId, _timeSeconds, _transportType, _messageSizeBytes, _parallelOperations, _n, _authType, _poolSize, scenario);

            string poolInfo = "";

            if (_poolSize > 0)
            {
                poolInfo = $"(pooled, {_poolSize} connections)";
            }
            Console.WriteLine($"Running {_timeSeconds}s test. ({_transportType}{poolInfo} {authType})");
            Console.WriteLine($"  {_n} operations ({_parallelOperations} parallel) with {_messageSizeBytes}B/message.");
        }
 protected PerfScenario(PerfScenarioConfig config)
 {
     _writer    = config.Writer;
     _sizeBytes = config.SizeBytes;
     _authType  = config.AuthType;
     _transport = config.Transport;
     _id        = config.Id;
 }