public async Task RunTestAsync <TTransportInit, TMessage>(string queueName,
                                                           string connectionString,
                                                           bool addInterceptors,
                                                           long messageCount,
                                                           ILogProvider logProvider,
                                                           Func <QueueProducerConfiguration, AdditionalMessageData> generateData,
                                                           Action <string, string, QueueProducerConfiguration, long, ICreationScope> verify, bool sendViaBatch,
                                                           ICreationScope scope, bool enableChaos)
     where TTransportInit : ITransportInit, new()
     where TMessage : class
 {
     using (var metrics = new Metrics.Metrics(queueName))
     {
         var addInterceptorProducer = InterceptorAdding.No;
         if (addInterceptors)
         {
             addInterceptorProducer = InterceptorAdding.Yes;
         }
         using (
             var creator = SharedSetup.CreateCreator <TTransportInit>(addInterceptorProducer, logProvider, metrics, false, enableChaos)
             )
         {
             //create the queue
             using (var queue =
                        creator
                        .CreateProducer
                        <TMessage>(queueName, connectionString))
             {
                 await RunProducerAsync(queue, queueName, messageCount, generateData, verify, sendViaBatch, scope).ConfigureAwait(false);
             }
             VerifyMetrics.VerifyProducedAsyncCount(queueName, metrics.GetCurrentMetrics(), messageCount);
         }
     }
 }
        public async Task RunTestAsync <TTransportInit>(QueueConnection queueConnection,
                                                        bool addInterceptors,
                                                        long messageCount,
                                                        ILogger logProvider,
                                                        Func <QueueProducerConfiguration, AdditionalMessageData> generateData,
                                                        Action <QueueConnection, QueueProducerConfiguration, long, ICreationScope> verify, bool sendViaBatch,
                                                        int runTime, Guid id, LinqMethodTypes linqMethodTypes,
                                                        ICreationScope scope, bool enableChaos)
            where TTransportInit : ITransportInit, new()
        {
            using (var trace = SharedSetup.CreateTrace("producer"))
            {
                using (var metrics = new Metrics.Metrics(queueConnection.Queue))
                {
                    var addInterceptorProducer = InterceptorAdding.No;
                    if (addInterceptors)
                    {
                        addInterceptorProducer = InterceptorAdding.Yes;
                    }

                    using (
                        var creator =
                            SharedSetup.CreateCreator <TTransportInit>(addInterceptorProducer, logProvider, metrics, false,
                                                                       enableChaos, scope, trace.Source)
                        )
                    {
                        //create the queue
                        using (var queue =
                                   creator
                                   .CreateMethodProducer(queueConnection))
                        {
                            await
                            RunProducerAsync(queue, queueConnection, messageCount, generateData, verify,
                                             sendViaBatch,
                                             runTime, id,
                                             linqMethodTypes, scope).ConfigureAwait(false);
                        }

                        VerifyMetrics.VerifyProducedAsyncCount(queueConnection.Queue, metrics.GetCurrentMetrics(),
                                                               messageCount);
                    }
                }
            }
        }