public void PutGetDeleteOverflowing() { var provider = GlobalSetup.Container.Resolve<IQueueStorageProvider>(); Assert.IsNotNull(provider, "#A00"); // 20k chosen so that it doesn't fit into the queue. var message = new MyMessage { MyBuffer = new byte[20000] }; // fill buffer with random content _rand.NextBytes(message.MyBuffer); provider.Clear(QueueName); provider.Put(QueueName, message); var retrieved = provider.Get<MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved.MyGuid, "#A01"); CollectionAssert.AreEquivalent(message.MyBuffer, retrieved.MyBuffer, "#A02"); for (int i = 0; i < message.MyBuffer.Length; i++) { Assert.AreEqual(message.MyBuffer[i], retrieved.MyBuffer[i], "#A02-" + i); } provider.Delete(retrieved); }
public void PutGetDelete() { var provider = GlobalSetup.Container.Resolve<IQueueStorageProvider>(); Assert.IsNotNull(provider, "#A00"); var message = new MyMessage(); provider.DeleteQueue(QueueName); // deleting queue on purpose // (it's slow but necessary to really validate the retry policy) provider.Put(QueueName, message); var retrieved = provider.Get<MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved.MyGuid, "#A01"); provider.Delete(retrieved); }
public void PersistRestore() { var provider = GlobalSetup.Container.Resolve<IQueueStorageProvider>(); const string storeName = "TestStore"; Assert.IsNotNull(provider, "#A00"); var message = new MyMessage(); // clean up provider.DeleteQueue(QueueName); foreach (var skey in provider.ListPersisted(storeName)) { provider.DeletePersisted(storeName, skey); } // put provider.Put(QueueName, message); // get var retrieved = provider.Get<MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved.MyGuid, "#A01"); // persist provider.Persist(retrieved, storeName, "manual test"); // abandon should fail (since not invisible anymore) Assert.IsFalse(provider.Abandon(retrieved), "#A02"); // list persisted message var key = provider.ListPersisted(storeName).Single(); // get persisted message var persisted = provider.GetPersisted(storeName, key); Assert.IsTrue(persisted.HasValue, "#A03"); Assert.IsTrue(persisted.Value.DataXml.HasValue, "#A04"); var xml = persisted.Value.DataXml.Value; var property = xml.Elements().Single(x => x.Name.LocalName == "MyGuid"); Assert.AreEqual(message.MyGuid, new Guid(property.Value), "#A05"); // restore persisted message provider.RestorePersisted(storeName, key); // list no longer contains key Assert.IsFalse(provider.ListPersisted(storeName).Any(), "#A06"); // get var retrieved2 = provider.Get<MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved2.MyGuid, "#A07"); // delete Assert.IsTrue(provider.Delete(retrieved2), "#A08"); }
public void PutGetAbandonDelete() { var provider = GlobalSetup.Container.Resolve<IQueueStorageProvider>(); Assert.IsNotNull(provider, "#A00"); var message = new MyMessage(); provider.DeleteQueue(QueueName); // deleting queue on purpose // (it's slow but necessary to really validate the retry policy) // put provider.Put(QueueName, message); // get var retrieved = provider.Get<MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved.MyGuid, "#A01"); // abandon var abandoned = provider.Abandon(retrieved); Assert.IsTrue(abandoned, "#A02"); // abandon II should fail (since not invisible) var abandoned2 = provider.Abandon(retrieved); Assert.IsFalse(abandoned2, "#A03"); // get again var retrieved2 = provider.Get<MyMessage>(QueueName, 1).First(); Assert.AreEqual(message.MyGuid, retrieved2.MyGuid, "#A04"); // delete var deleted = provider.Delete(retrieved2); Assert.IsTrue(deleted, "#A05"); // get now should fail var retrieved3 = provider.Get<MyMessage>(QueueName, 1).FirstOrEmpty(); Assert.IsFalse(retrieved3.HasValue, "#A06"); // abandon does not put it to the queue again var abandoned3 = provider.Abandon(retrieved2); Assert.IsFalse(abandoned3, "#A07"); // get now should still fail var retrieved4 = provider.Get<MyMessage>(QueueName, 1).FirstOrEmpty(); Assert.IsFalse(retrieved4.HasValue, "#A07"); }