Пример #1
0
        public void CloudQueueAddGetByteMessage()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            byte[]            testData = new byte[20];
            CloudQueueMessage message  = new CloudQueueMessage(testData);

            queue.AddMessage(message);

            CloudQueueMessage receivedMessage1 = queue.GetMessage();

            Assert.IsTrue(receivedMessage1.AsString == message.AsString);
            TestHelper.AssertStreamsAreEqual(new MemoryStream(receivedMessage1.AsBytes), new MemoryStream(message.AsBytes));

            receivedMessage1.SetMessageContent(Guid.NewGuid().ToString("N"));

            queue.UpdateMessage(receivedMessage1, TimeSpan.FromSeconds(1), MessageUpdateFields.Content | MessageUpdateFields.Visibility);

            queue.DeleteMessage(receivedMessage1);

            queue.Delete();
        }
Пример #2
0
        public void CloudQueueUnicodeMessages()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();
            queue.EncodeMessage = false;

            List <string> messages = new List <string>();

            messages.Add(@"Le débat sur l'identité nationale, l'idée du président Nicolas Sarkozy de déchoir des personnes d'origine étrangère de la nationalité française dans certains cas et les récentes mesures prises contre les Roms ont choqué les experts, qui rendront leurs conclusions le 27 août.");
            messages.Add(@"Ваш логин Yahoo! дает доступ к таким мощным инструментам связи, как электронная почта, отправка мгновенных сообщений, функции безопасности, в частности, антивирусные средства и блокировщик всплывающей рекламы, и избранное, например, фото и музыка в сети — все бесплат");
            messages.Add(@"据新华社8月12日电 8月11日晚,舟曲境内再次出现强降雨天气,使特大山洪泥石流灾情雪上加霜。白龙江水在梨坝子村的交汇地带形成一个新的堰塞湖,水位比平时高出3米。甘肃省国土资源厅副厅长张国华当日22时许在新闻发布会上介绍,截至12日21时50分,舟曲堰塞湖堰塞体已消除,溃坝险情已消除,目前针对堰塞湖的主要工作是疏通河道。");
            messages.Add("ל כולם\", הדהים יעלון, ויישר קו עם העדות שמסר ראש הממשלה, בנימין נתניהו, לוועדת טירקל. לדבריו, אכן השרים דנו רק בהיבטים התקשורתיים של עצירת המשט: \"בשביעייה לא התקיים דיון על האלטרנטיבות. עסקנו בהיבטים ");
            messages.Add(@"Prozent auf 0,5 Prozent. Im Vergleich zum Vorjahresquartal wuchs die deutsche Wirtschaft von Januar bis März um 2,1 Prozent. Auch das ist eine Korrektur nach oben, ursprünglich waren es hier 1,7 Prozent");
            messages.Add("<?xml version=\"1.0\"?>\n<!DOCTYPE PARTS SYSTEM \"parts.dtd\">\n<?xml-stylesheet type=\"text/css\" href=\"xmlpartsstyle.css\"?>\n<PARTS>\n   <TITLE>Computer Parts</TITLE>\n   <PART>\n      <ITEM>Motherboard</ITEM>\n      <MANUFACTURER>ASUS</MANUFACTURER>\n      <MODEL>" +
                         "P3B-F</MODEL>\n      <COST> 123.00</COST>\n   </PART>\n   <PART>\n      <ITEM>Video Card</ITEM>\n      <MANUFACTURER>ATI</MANUFACTURER>\n      <MODEL>All-in-Wonder Pro</MODEL>\n      <COST> 160.00</COST>\n   </PART>\n   <PART>\n      <ITEM>Sound Card</ITEM>\n      <MANUFACTURER>" +
                         "Creative Labs</MANUFACTURER>\n      <MODEL>Sound Blaster Live</MODEL>\n      <COST> 80.00</COST>\n   </PART>\n   <PART>\n      <ITEM> inch Monitor</ITEM>\n      <MANUFACTURER>LG Electronics</MANUFACTURER>\n      <MODEL> 995E</MODEL>\n      <COST> 290.00</COST>\n   </PART>\n</PARTS>");

            foreach (string msg in messages)
            {
                queue.AddMessage(new CloudQueueMessage(msg));

                CloudQueueMessage readBack = queue.GetMessage();
                Assert.AreEqual <string>(msg, readBack.AsString);
                queue.DeleteMessage(readBack);
            }

            queue.Delete();
        }
Пример #3
0
        public void CloudQueuePeekMessages()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            int messageCount = 30;

            var emptyMessages = queue.PeekMessages(messageCount).ToList();

            Assert.AreEqual(0, emptyMessages.Count);

            List <string> messageContentList = new List <string>();

            for (int i = 0; i < messageCount; i++)
            {
                string            messageContent = i.ToString();
                CloudQueueMessage message        = new CloudQueueMessage(messageContent);
                queue.AddMessage(message);
                messageContentList.Add(messageContent);
            }

            var receivedMessages = queue.PeekMessages(messageCount).ToList();

            Assert.AreEqual(messageCount, receivedMessages.Count);

            for (int i = 0; i < messageCount; i++)
            {
                Assert.IsTrue(messageContentList.Contains(receivedMessages[i].AsString));
            }

            queue.Delete();
        }
        public void CloudQueueCreateAndDelete()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();
            queue.Delete();
        }
        public void CloudQueueCreateIfNotExists()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            try
            {
                Assert.IsTrue(queue.CreateIfNotExists());
                Assert.IsFalse(queue.CreateIfNotExists());
            }
            finally
            {
                queue.Delete();
            }
        }
Пример #6
0
        public void CloudQueueMessageOverBoundaryTest()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            CloudQueue queueRefWithoutBase64Encoding = DefaultQueueClient.GetQueueReference(name);

            queueRefWithoutBase64Encoding.EncodeMessage = false;

            // excessive message size
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 8 * 12288);

            queue.Delete();
        }
Пример #7
0
        public void CloudQueueUpdateMessageFullParameter()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            queue.AddMessage(new CloudQueueMessage("message in queue"));
            CloudQueueMessage messageFromQueue = queue.GetMessage(TimeSpan.FromDays(1));
            var nextVisibleTime = messageFromQueue.NextVisibleTime.Value;

            // Modify the message contents client-side
            messageFromQueue.SetMessageContent("new message content!");

            // Increase the message's visibility timeout.
            queue.UpdateMessage(messageFromQueue, TimeSpan.FromDays(2), MessageUpdateFields.Visibility);

            // The extra visibility time we get should be 1 day + small delta server time.
            Assert.IsTrue(messageFromQueue.NextVisibleTime - nextVisibleTime >= TimeSpan.FromDays(1));

            // Decrease the message's visibility timeout.
            queue.UpdateMessage(messageFromQueue, TimeSpan.FromDays(1), MessageUpdateFields.Visibility);

            // Now the extra time equals a small delta server time.
            Assert.IsTrue(messageFromQueue.NextVisibleTime - nextVisibleTime < TimeSpan.FromHours(1));

            // Update the message's visibility and content.
            queue.UpdateMessage(messageFromQueue, TimeSpan.FromSeconds(1), MessageUpdateFields.Visibility | MessageUpdateFields.Content);

            // Wait for message timeout to expire, then retrieve it again.
            Thread.Sleep(TimeSpan.FromSeconds(1.5));
            CloudQueueMessage messageRetrievedAgain = queue.GetMessage();

            // The content should have been modified.
            Assert.AreEqual(messageFromQueue.AsString, messageRetrievedAgain.AsString);

            // Update with zero visibility timeout
            queue.UpdateMessage(messageRetrievedAgain, TimeSpan.Zero, MessageUpdateFields.Visibility);

            // The message is now expired. Retrieve it again.
            messageRetrievedAgain = queue.GetMessage();

            // The content should be the same as before.
            Assert.AreEqual(messageFromQueue.AsString, messageRetrievedAgain.AsString);

            queue.Delete();
        }
Пример #8
0
        public void CloudQueueClearMessage()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            string            msgContent = Guid.NewGuid().ToString("N");
            CloudQueueMessage message    = new CloudQueueMessage(msgContent);

            queue.AddMessage(message);
            CloudQueueMessage receivedMessage1 = queue.PeekMessage();

            Assert.IsTrue(receivedMessage1.AsString == message.AsString);
            queue.Clear();
            Assert.IsNull(queue.PeekMessage());
            queue.Delete();
        }
Пример #9
0
        public void CloudQueueMessageSmallBoundaryTest()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            CloudQueue queueRefWithoutBase64Encoding = DefaultQueueClient.GetQueueReference(name);

            queueRefWithoutBase64Encoding.EncodeMessage = false;

            // boundary value 0 and 1
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 0);
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 1);

            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 1024);

            queue.Delete();
        }
Пример #10
0
        public void CloudQueueMessageNull()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            queue.AddMessage(new CloudQueueMessage(Encoding.UTF8.GetBytes("")));
            var message = queue.GetMessage();

            Assert.IsNotNull(message);
            Assert.IsNotNull(message.Id);
            Assert.IsTrue(message.ExpirationTime.Value.Subtract(TimeSpan.FromMinutes(2)) > DateTime.UtcNow);
            Assert.IsNotNull(message.AsString);
            Assert.IsNotNull(message.InsertionTime.Value < DateTime.UtcNow);
            Assert.IsNotNull(message.PopReceipt);
            Assert.IsTrue(message.NextVisibleTime.Value.Add(TimeSpan.FromMinutes(2)) > DateTime.UtcNow);

            queue.Delete();
        }
Пример #11
0
        public void CloudQueueMessageGetMessageFullParameter()
        {
            string            data = "Visibility Test Message";
            CloudQueueMessage message;

            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            queue.AddMessage(new CloudQueueMessage(data));

            // Expect failure from zero visibility timeout
            TestHelper.ExpectedException <StorageException>(
                () => queue.GetMessage(TimeSpan.Zero),
                "Expect failure from zero visibility timeout");

            // Expect failure from over 7 days visibility timeout
            TestHelper.ExpectedException <StorageException>(
                () => queue.GetMessage(TimeSpan.FromDays(7) + TimeSpan.FromSeconds(1)),
                "Expect failure from over 7 days visibility timeout");

            // Test 1 second timeout (minimum)
            message = queue.GetMessage(TimeSpan.FromSeconds(1));
            Assert.IsNotNull(message);
            Assert.AreEqual(message.AsString, data);

            // Wait for the timeout to expire
            Thread.Sleep(TimeSpan.FromSeconds(1));

            // Test 7 day timeout (maximum)
            message = queue.GetMessage(TimeSpan.FromDays(7));
            Assert.IsNotNull(message);
            Assert.AreEqual(message.AsString, data);

            // Delete the message
            queue.DeleteMessage(message);

            queue.Delete();
        }
Пример #12
0
        public void CloudQueueAddMessageFullParameter()
        {
            CloudQueueMessage futureMessage  = new CloudQueueMessage("This message is for the future.");
            CloudQueueMessage presentMessage = new CloudQueueMessage("This message is for the present.");

            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            queue.AddMessage(futureMessage, null, TimeSpan.FromDays(2));

            // We should not be able to see the future message yet.
            CloudQueueMessage retrievedMessage = queue.GetMessage();

            Assert.IsNull(retrievedMessage);

            queue.AddMessage(presentMessage, null, TimeSpan.Zero);

            // We should be able to see the present message.
            retrievedMessage = queue.GetMessage();
            Assert.IsNotNull(retrievedMessage);
            Assert.AreEqual <string>(presentMessage.AsString, retrievedMessage.AsString);

            TestHelper.ExpectedException <ArgumentException>(
                () => queue.AddMessage(futureMessage, TimeSpan.FromDays(1), TimeSpan.FromDays(2)),
                "Using a visibility timeout longer than the time to live should fail");

            TestHelper.ExpectedException <ArgumentException>(
                () => queue.AddMessage(futureMessage, null, TimeSpan.FromDays(8)),
                "Using a visibility longer than the maximum time to live should fail");

            TestHelper.ExpectedException <ArgumentException>(
                () => queue.AddMessage(futureMessage, null, TimeSpan.FromMinutes(-1)),
                "Using a negative visibility should fail");

            queue.Delete();
        }
Пример #13
0
        public void CloudQueueUpdateMessageBoundaryAndNegativeCheck()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            queue.AddMessage(new CloudQueueMessage("message in queue"));
            CloudQueueMessage messageFromQueue = queue.GetMessage(TimeSpan.FromDays(1));

            messageFromQueue.SetMessageContent("newer message content");

            // If Visibility is not flagged for modification, an exception should be raised.
            TestHelper.ExpectedException <ArgumentException>(
                () => queue.UpdateMessage(messageFromQueue, TimeSpan.FromDays(1), MessageUpdateFields.Content),
                "Visibility is not flagged for modification");

            // If visibility timeout is greater than the maximum time to live, an exception should be raised.
            TestHelper.ExpectedException <ArgumentException>(
                () => queue.UpdateMessage(messageFromQueue, TimeSpan.FromDays(7) + TimeSpan.FromSeconds(1), MessageUpdateFields.Visibility),
                "visibility timeout is greater than the maximum time to live");

            // If visibility timeout is negative, an exception should be raised.
            TestHelper.ExpectedException <ArgumentException>(
                () => queue.UpdateMessage(messageFromQueue, TimeSpan.FromSeconds(-1), MessageUpdateFields.Visibility),
                "visibility timeout is negative");

            // If the message has no ID and pop receipt, an exception should be raised.
            CloudQueueMessage messageNotReceived = new CloudQueueMessage("This message has never been in a queue before.");

            TestHelper.ExpectedException <ArgumentException>(
                () => queue.UpdateMessage(messageNotReceived, TimeSpan.FromDays(1), MessageUpdateFields.Visibility),
                "the message has no ID and pop receipt");

            queue.Delete();
        }
Пример #14
0
        public void CloudQueueAddGetMessage()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            string            msgContent = Guid.NewGuid().ToString("N");
            CloudQueueMessage message    = new CloudQueueMessage(msgContent);

            queue.AddMessage(message);

            CloudQueueMessage receivedMessage1 = queue.GetMessage();

            Assert.IsTrue(receivedMessage1.AsString == message.AsString);

            receivedMessage1.SetMessageContent(Guid.NewGuid().ToString("N"));

            queue.UpdateMessage(receivedMessage1, TimeSpan.FromSeconds(1), MessageUpdateFields.Content | MessageUpdateFields.Visibility);

            queue.DeleteMessage(receivedMessage1);

            queue.Delete();
        }
Пример #15
0
        public void CloudQueueMessageNormalBoundaryTest()
        {
            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            CloudQueue queueRefWithoutBase64Encoding = DefaultQueueClient.GetQueueReference(name);

            queueRefWithoutBase64Encoding.EncodeMessage = false;

            // a string with ascii chars of length 8*6144 will have Base64-encoded length 8*8192 (64kB)
            // the following three test strings with length 8*6144-1, 8*6144, and 8*6144+1
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 8 * 6144 - 1);
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 8 * 6144);
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 8 * 6144 + 1);

            // boundary value 8*8192-1, 8*8192, 8*8192+1
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 8 * 8192 - 1);
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 8 * 8192);
            CloudQueueMessageBase64EncodingBoundaryTest(queue, queueRefWithoutBase64Encoding, 8 * 8192 + 1);

            queue.Delete();
        }
Пример #16
0
        public void CloudQueueMessageQueueAddLargeMessage()
        {
            long maxStringLength    = CloudQueueMessage.MaxMessageSize;
            long maxByteArrayLength = CloudQueueMessage.MaxMessageSize * 3 / 4;

            string     name  = GenerateNewQueueName();
            CloudQueue queue = DefaultQueueClient.GetQueueReference(name);

            queue.Create();

            {
                char[] longMessageChars = new char[maxStringLength];
                for (long i = 0; i < longMessageChars.LongLength; i++)
                {
                    longMessageChars[i] = (char)('A' + (i % 26));
                }

                CloudQueueMessage longMessageFromString = new CloudQueueMessage(new string(longMessageChars));

                // Do not encode the message. This allows a maximally-sized string to be used.
                queue.EncodeMessage = false;

                // The following call should succeed.
                queue.AddMessage(longMessageFromString);

                CloudQueueMessage retrievedMessage = queue.GetMessage();
                Assert.AreEqual(longMessageFromString.AsString, retrievedMessage.AsString);
            }

            {
                byte[] longMessageBytes = new byte[maxByteArrayLength];
                for (long i = 0; i < longMessageBytes.LongLength; i++)
                {
                    longMessageBytes[i] = (byte)i;
                }

                CloudQueueMessage longMessageFromByteArray = new CloudQueueMessage(longMessageBytes);

                // The following call should throw an exception because byte array messages must be base 64 encoded.
                queue.EncodeMessage = false;

                TestHelper.ExpectedException <ArgumentException>(
                    () => queue.AddMessage(longMessageFromByteArray),
                    "AddMessage should throw an exception because byte array messages must be base 64 encoded");

                // Encode the message in base 64. This is the only way to use byte arrays in a message.
                queue.EncodeMessage = true;

                // The following call should succeed.
                queue.AddMessage(longMessageFromByteArray);

                CloudQueueMessage retrievedMessage = queue.GetMessage();
                byte[]            expectedBytes    = longMessageFromByteArray.AsBytes;
                byte[]            foundBytes       = retrievedMessage.AsBytes;

                Assert.AreEqual(expectedBytes.Length, foundBytes.Length);

                for (int i = 0; i < expectedBytes.Length; i++)
                {
                    Assert.AreEqual(expectedBytes[i], foundBytes[i]);
                }
            }

            queue.Delete();
        }
 /// <summary>
 /// Delete the specified storage queue.
 /// </summary>
 /// <param name="queue">Cloud queue object</param>
 /// <param name="options">Queue request options</param>
 /// <param name="operationContext">Operation context</param>
 public void DeleteQueue(CloudQueue queue, QueueRequestOptions options, OperationContext operationContext)
 {
     queue.Delete(options, operationContext);
 }