예제 #1
0
        public void CreateQueueWithError()
        {
            var rsmq = new Rsmq();

            Assert.Throws <MissingParameterException>(() => rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = null
            }));
            Assert.Throws <InvalidFormatException>(() => rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.WrongQueueNameFormat
            }));

            var queues = rsmq.ListQueues();

            Assert.Zero(queues.Count());
        }
예제 #2
0
        public void CreateQueue(string value)
        {
            var rsmq = new Rsmq();

            Assert.AreEqual(1, rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = value
            }));

            var queues = rsmq.ListQueues();

            Assert.Contains(value, queues.ToArray());
        }
예제 #3
0
        public void DeleteQueue()
        {
            var rsmq = new Rsmq();

            rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.QueueName
            });
            Assert.AreEqual(1, rsmq.ListQueues().Count());
            rsmq.DeleteQueue(new DeleteQueueOptions {
                QueueName = Global.QueueName
            });
            Assert.Zero(rsmq.ListQueues().Count());
        }
예제 #4
0
        public void ListQueues()
        {
            var rsmq   = new Rsmq();
            var queues = rsmq.ListQueues();

            Assert.Zero(queues.Count());

            rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.QueueName
            });

            queues = rsmq.ListQueues();
            Assert.AreEqual(queues.Count(), 1);
            Assert.Contains(Global.QueueName, queues.ToArray());
        }
예제 #5
0
        public void DeleteMessage()
        {
            var rsmq = new Rsmq();

            rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.QueueName
            });

            var msgId = rsmq.SendMessage(new SendMessageOptions {
                QueueName = Global.QueueName, Message = "hello"
            });

            Assert.AreEqual(1, rsmq.DeleteMessage(new DeleteMessageOptions {
                QueueName = Global.QueueName, Id = msgId
            }));
            Assert.Zero(rsmq.DeleteMessage(new DeleteMessageOptions {
                QueueName = Global.QueueName, Id = "0123456789abcdefghijklmnopqrstuv"
            }));
        }
예제 #6
0
        public void PopMessage()
        {
            var rsmq = new Rsmq();

            rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.QueueName
            });

            var msgId = rsmq.SendMessage(new SendMessageOptions {
                QueueName = Global.QueueName, Message = "hello"
            });

            var poppedMessage = rsmq.PopMessage(new PopMessageOptions {
                QueueName = Global.QueueName
            });

            Assert.AreEqual(msgId, poppedMessage.Id);

            Assert.Zero(rsmq.DeleteMessage(new DeleteMessageOptions {
                QueueName = Global.QueueName, Id = msgId
            }));
        }
예제 #7
0
        public void SetQueueAttributesWithError()
        {
            var rsmq = new Rsmq();

            Assert.Throws <QueueNotFoundException>(() => rsmq.SetQueueAttributes(new SetQueueAttributesOptions {
                QueueName = Global.QueueName, MaxSize = 7453
            }));

            rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.QueueName
            });

            Assert.Throws <QueueNotFoundException>(() => rsmq.SetQueueAttributes(new SetQueueAttributesOptions {
                QueueName = Global.WrongQueueName, MaxSize = 3000
            }));
            Assert.Throws <NoAttributeSuppliedException>(() => rsmq.SetQueueAttributes(new SetQueueAttributesOptions {
                QueueName = Global.QueueName
            }));
            Assert.Throws <InvalidValueException>(() => rsmq.SetQueueAttributes(new SetQueueAttributesOptions {
                QueueName = Global.QueueName, MaxSize = -34
            }));
        }
예제 #8
0
        public void GetQueueAttributes(CreateQueueOptions value)
        {
            var rsmq = new Rsmq();

            rsmq.CreateQueue(value);
            var attributes = rsmq.GetQueueAttributes(new GetQueueAttributesOptions {
                QueueName = value.QueueName
            });

            Assert.AreEqual(attributes.Delay, value.Delay);
            Assert.AreEqual(attributes.MaxSize, value.MaxSize);
            Assert.AreEqual(attributes.VisibilityTimer, value.VisibilityTimer);
            Assert.Zero(attributes.TotalSent);

            rsmq.SendMessage(new SendMessageOptions {
                QueueName = value.QueueName, Message = "Halo"
            });
            attributes = rsmq.GetQueueAttributes(new GetQueueAttributesOptions {
                QueueName = value.QueueName
            });
            Assert.AreEqual(1, attributes.TotalSent);
        }
예제 #9
0
        public void ReceiveMessage()
        {
            var rsmq = new Rsmq();

            rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.QueueName
            });

            var msgId1 = rsmq.SendMessage(new SendMessageOptions {
                QueueName = Global.QueueName, Message = "hello1"
            });
            var msgId2 = rsmq.SendMessage(new SendMessageOptions {
                QueueName = Global.QueueName, Message = "hello2"
            });

            var message1 = rsmq.ReceiveMessage(new ReceiveMessageOptions {
                QueueName = Global.QueueName
            });
            var message2 = rsmq.ReceiveMessage(new ReceiveMessageOptions {
                QueueName = Global.QueueName
            });

            Assert.NotNull(message1);
            Assert.NotNull(message2);

            Assert.AreEqual("hello1", message1.Message);
            Assert.AreEqual("hello2", message2.Message);

            Assert.AreEqual(msgId1, message1.Id);
            Assert.AreEqual(msgId2, message2.Id);

            Assert.AreEqual(1, rsmq.DeleteMessage(new DeleteMessageOptions {
                QueueName = Global.QueueName, Id = msgId1
            }));
            Assert.AreEqual(1, rsmq.DeleteMessage(new DeleteMessageOptions {
                QueueName = Global.QueueName, Id = msgId2
            }));
        }
예제 #10
0
        public void SetQueueAttributes(SetQueueAttributesOptions value)
        {
            var rsmq = new Rsmq();
            var defaultAttributes = new CreateQueueOptions {
                QueueName = value.QueueName
            };

            rsmq.CreateQueue(defaultAttributes);

            var queueAttributes = rsmq.GetQueueAttributes(new GetQueueAttributesOptions {
                QueueName = value.QueueName
            });

            Assert.AreEqual(defaultAttributes.Delay, queueAttributes.Delay);
            Assert.AreEqual(defaultAttributes.MaxSize, queueAttributes.MaxSize);
            Assert.AreEqual(defaultAttributes.VisibilityTimer, queueAttributes.VisibilityTimer);

            queueAttributes = rsmq.SetQueueAttributes(value);

            Assert.AreEqual(value.Delay ?? defaultAttributes.Delay, queueAttributes.Delay);
            Assert.AreEqual(value.MaxSize ?? defaultAttributes.MaxSize, queueAttributes.MaxSize);
            Assert.AreEqual(value.VisibilityTimer ?? defaultAttributes.VisibilityTimer, queueAttributes.VisibilityTimer);
        }
예제 #11
0
        public void ChangeMessageVisibility()
        {
            var rsmq = new Rsmq();

            rsmq.CreateQueue(new CreateQueueOptions {
                QueueName = Global.QueueName
            });

            var msgId = rsmq.SendMessage(new SendMessageOptions {
                QueueName = Global.QueueName, Message = "hello"
            });

            rsmq.ChangeMessageVisibility(new ChangeMessageVisibilityOptions {
                QueueName = Global.QueueName, Id = msgId, VisibilityTimer = 2
            });

            Assert.IsNull(rsmq.ReceiveMessage(new ReceiveMessageOptions {
                QueueName = Global.QueueName
            }));
            Task.WaitAll(Task.Delay(2500));
            Assert.IsNotNull(rsmq.ReceiveMessage(new ReceiveMessageOptions {
                QueueName = Global.QueueName
            }));
        }