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); } }); } }
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 } }
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()); } }