Ejemplo n.º 1
0
        public void PutGetDeleteOverflowing()
        {
            // 20k chosen so that it doesn't fit into the queue.
            var message = new MyMessage {
                MyBuffer = new byte[80000]
            };

            // fill buffer with random content
            _rand.NextBytes(message.MyBuffer);

            QueueStorage.Clear(QueueName);

            QueueStorage.Put(QueueName, message);
            var retrieved = QueueStorage.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);
            }

            QueueStorage.Delete(retrieved);
        }
Ejemplo n.º 2
0
        public void PersistRestoreOverflowing()
        {
            const string storeName = "TestStore";

            // CAUTION: we are now compressing serialization output.
            // hence, we can't just pass an empty array, as it would be compressed at near 100%.

            var data = new byte[80000];

            _rand.NextBytes(data);

            // clean up
            QueueStorage.DeleteQueue(QueueName);
            foreach (var skey in QueueStorage.ListPersisted(storeName))
            {
                QueueStorage.DeletePersisted(storeName, skey);
            }

            // put
            QueueStorage.Put(QueueName, data);

            Assert.AreEqual(
                1,
                BlobStorage.ListBlobNames(QueueStorageProvider.OverflowingMessagesContainerName, QueueName).Count(),
                "#A01");

            // get
            var retrieved = QueueStorage.Get <byte[]>(QueueName, 1).First();

            // persist
            QueueStorage.Persist(retrieved, storeName, "manual test");

            Assert.AreEqual(
                1,
                BlobStorage.ListBlobNames(QueueStorageProvider.OverflowingMessagesContainerName, QueueName).Count(),
                "#A02");

            // abandon should fail (since not invisible anymore)
            Assert.IsFalse(QueueStorage.Abandon(retrieved), "#A03");

            // list persisted message
            var key = QueueStorage.ListPersisted(storeName).Single();

            // get persisted message
            var persisted = QueueStorage.GetPersisted(storeName, key);

            Assert.IsTrue(persisted.HasValue, "#A04");
            Assert.IsTrue(persisted.Value.DataXml.HasValue, "#A05");

            // delete persisted message
            QueueStorage.DeletePersisted(storeName, key);

            Assert.AreEqual(
                0,
                BlobStorage.ListBlobNames(QueueStorageProvider.OverflowingMessagesContainerName, QueueName).Count(),
                "#A06");

            // list no longer contains key
            Assert.IsFalse(QueueStorage.ListPersisted(storeName).Any(), "#A07");
        }
        public void ItemsReturnedInMonoThread()
        {
            var fakeMessages = Enumerable.Range(0, 10).Select(i => new FakeMessage(i)).ToArray();

            QueueStorage.PutRange(FirstQueueName, fakeMessages.Take(6));
            var allFirstItems = QueueStorage.Get <FakeMessage>(FirstQueueName, 6);

            QueueStorage.Clear(FirstQueueName);

            QueueStorage.PutRange(FirstQueueName, fakeMessages.Take(6));
            var partOfFirstItems = QueueStorage.Get <FakeMessage>(FirstQueueName, 2);

            Assert.AreEqual(4, QueueStorage.GetApproximateCount(FirstQueueName), "#A06");
            QueueStorage.Clear(FirstQueueName);

            QueueStorage.PutRange(FirstQueueName, fakeMessages.Take(6));
            var allFirstItemsAndMore = QueueStorage.Get <FakeMessage>(FirstQueueName, 8);

            QueueStorage.Clear(FirstQueueName);

            Assert.AreEqual(6, allFirstItems.Count(), "#A07");
            Assert.AreEqual(2, partOfFirstItems.Count(), "#A08");
            Assert.AreEqual(6, allFirstItemsAndMore.Count(), "#A09");
        }
 public void GetOnMissingQueueDoesNotFail()
 {
     QueueStorage.Get <int>("nosuchqueue", 1);
 }