Esempio n. 1
0
        private void RunProducerDynamicInternal(
            IProducerMethodQueue
            queue, long messageCount, Func <QueueProducerConfiguration, AdditionalMessageData> generateData,
            bool sendViaBatch, Guid id,
            Func <Guid, int, LinqExpressionToRun>
            generateTestMethod, int runTime)
        {
            var numberOfJobs = Convert.ToInt32(messageCount);
            var jobs         = Enumerable.Range(0, numberOfJobs)
                               .Select(i => generateTestMethod.Invoke(id, runTime));

            if (sendViaBatch)
            {
                var messages = new List <QueueMessage <LinqExpressionToRun, IAdditionalMessageData> >(numberOfJobs);
                messages.AddRange(from job in jobs
                                  let data = generateData(queue.Configuration)
                                             select
                                             data != null
                            ? new QueueMessage <LinqExpressionToRun, IAdditionalMessageData>(job, data)
                            : new QueueMessage <LinqExpressionToRun, IAdditionalMessageData>(job, null));
                var result    = queue.Send(messages);
                var errorList = result.Where(p => result.Any(l => p.SendingException != null))
                                .ToList();
                if (result.HasErrors)
                {
                    Assert.False(result.HasErrors, errorList[0].SendingException.ToString());
                }
                else
                {
                    Assert.False(result.HasErrors);
                }
            }
            else
            {
                Parallel.ForEach(jobs, job =>
                {
                    var data = generateData(queue.Configuration);
                    if (data != null)
                    {
                        var result  = queue.Send(job, data);
                        var message = string.Empty;
                        if (result.SendingException != null)
                        {
                            message = result.SendingException.ToString();
                        }
                        Assert.False(result.HasError, message);
                    }
                    else
                    {
                        var result  = queue.Send(job);
                        var message = string.Empty;
                        if (result.SendingException != null)
                        {
                            message = result.SendingException.ToString();
                        }
                        Assert.False(result.HasError, message);
                    }
                });
            }
        }
Esempio n. 2
0
 public static IEnumerable<IQueueOutputMessage> RunDynamic(IProducerMethodQueue queue, int count, Func<IAdditionalMessageData> expiredDataFuture)
 {
     for (var i = 0; i < count; i++)
     {
         yield return queue.Send(new LinqExpressionToRun(
             "(message, workerNotification) => new SampleShared.TestClass().RunMe((IWorkerNotification)workerNotification, \"dynamic\", 2, new SampleShared.SomeInput(DateTime.UtcNow.ToString()))",
             new List<string> { "SampleShared.dll" }, //additional references
             new List<string> { "SampleShared" }), expiredDataFuture.Invoke()); //additional using statements
     }
 }
Esempio n. 3
0
 public static IEnumerable<IQueueOutputMessage> RunStatic(IProducerMethodQueue queue, int count, Func<IAdditionalMessageData> expiredDataFuture)
 {
     for (var i = 0; i < count; i++)
     {
         yield return queue.Send((message, workerNotification) => new TestClass().RunMe(
             workerNotification,
             "a string",
             2,
             new SomeInput(DateTime.UtcNow.ToString())), expiredDataFuture.Invoke());
     }
 }