public async Task TestListAllQueueMessagesWithUpdates() { IQueueingService provider = CreateProvider(); using (CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(TestTimeout(TimeSpan.FromSeconds(10)))) { QueueName queueName = CreateRandomQueueName(); await provider.CreateQueueAsync(queueName, cancellationTokenSource.Token); List <Task> postMessagesTasks = new List <Task>(); for (int i = 0; i < 28; i++) { postMessagesTasks.Add(provider.PostMessagesAsync(queueName, cancellationTokenSource.Token, new Message <SampleMetadata>(TimeSpan.FromSeconds(120), new SampleMetadata(i, "Some Message " + i)))); } await Task.Factory.ContinueWhenAll(postMessagesTasks.ToArray(), TaskExtrasExtensions.PropagateExceptions); HashSet <int> locatedMessages = new HashSet <int>(); QueuedMessageList messages = await provider.ListMessagesAsync(queueName, null, null, true, false, cancellationTokenSource.Token); foreach (QueuedMessage message in messages) { Assert.IsTrue(locatedMessages.Add(message.Body.ToObject <SampleMetadata>().ValueA), "Received the same message more than once."); } int deletedMessage = messages[0].Body.ToObject <SampleMetadata>().ValueA; await provider.DeleteMessageAsync(queueName, messages[0].Id, null, cancellationTokenSource.Token); while (messages.Count > 0) { QueuedMessageList tempList = await provider.ListMessagesAsync(queueName, messages.NextPageId, null, true, false, cancellationTokenSource.Token); if (tempList.Count > 0) { Assert.IsTrue(locatedMessages.Add(tempList[0].Body.ToObject <SampleMetadata>().ValueA), "Received the same message more than once."); await provider.DeleteMessageAsync(queueName, tempList[0].Id, null, cancellationTokenSource.Token); } messages = await provider.ListMessagesAsync(queueName, messages.NextPageId, null, true, false, cancellationTokenSource.Token); foreach (QueuedMessage message in messages) { Assert.IsTrue(locatedMessages.Add(message.Body.ToObject <SampleMetadata>().ValueA), "Received the same message more than once."); } } Assert.AreEqual(28, locatedMessages.Count); for (int i = 0; i < 28; i++) { Assert.IsTrue(locatedMessages.Contains(i), "The message listing did not include message '{0}', which was in the queue when the listing started and still in it afterwards.", i); } await provider.DeleteQueueAsync(queueName, cancellationTokenSource.Token); } }
public void SynchronousTestListAllQueueMessagesWithUpdates() { IQueueingService provider = CreateProvider(); QueueName queueName = CreateRandomQueueName(); provider.CreateQueue(queueName); for (int i = 0; i < 28; i++) { provider.PostMessages(queueName, new Message <SampleMetadata>(TimeSpan.FromSeconds(120), new SampleMetadata(i, "Some Message " + i))); } HashSet <int> locatedMessages = new HashSet <int>(); QueuedMessageList messages = provider.ListMessages(queueName, null, null, true, false); foreach (QueuedMessage message in messages) { Assert.IsTrue(locatedMessages.Add(message.Body.ToObject <SampleMetadata>().ValueA), "Received the same message more than once."); } int deletedMessage = messages[0].Body.ToObject <SampleMetadata>().ValueA; provider.DeleteMessage(queueName, messages[0].Id, null); while (messages.Count > 0) { QueuedMessageList tempList = provider.ListMessages(queueName, messages.NextPageId, null, true, false); if (tempList.Count > 0) { Assert.IsTrue(locatedMessages.Add(tempList[0].Body.ToObject <SampleMetadata>().ValueA), "Received the same message more than once."); provider.DeleteMessage(queueName, tempList[0].Id, null); } messages = provider.ListMessages(queueName, messages.NextPageId, null, true, false); foreach (QueuedMessage message in messages) { Assert.IsTrue(locatedMessages.Add(message.Body.ToObject <SampleMetadata>().ValueA), "Received the same message more than once."); } } Assert.AreEqual(28, locatedMessages.Count); for (int i = 0; i < 28; i++) { Assert.IsTrue(locatedMessages.Contains(i), "The message listing did not include message '{0}', which was in the queue when the listing started and still in it afterwards.", i); } provider.DeleteQueue(queueName); }