/// <summary>
        /// Removes all messages from the queue.
        /// </summary>
        /// <param name="queue">The queue from which to delete messages.</param>
        public void PurgeQueue(ServiceBusQueue queue)
        {
            if (queue == null)
            {
                throw new ArgumentNullException(nameof(queue));
            }

            Vhost         vhost    = _managementClient.GetVhostAsync(queue.VHost).Result;
            RabbitMQQueue rmqQueue = _managementClient.GetQueueAsync(queue.Name, vhost).Result;

            _managementClient.PurgeAsync(rmqQueue).Wait();
        }
        public Topology Parse(IManagementClient client, Vhost virtualHost)
        {
            var topology = new Topology();

            foreach (var exchange in client.GetExchanges())
            {
                if (!IsSystemExchange(exchange.Name))
                {
                    var modelExchange = new Model.Exchange
                    {
                        Name = exchange.Name,
                        ExchangeType = ExchangeTypeMap[exchange.Type],
                        Durable = exchange.Durable,
                    };

                    MapArguments(exchange.Arguments, modelExchange.Arguments);
                    topology.Exchanges.Add(modelExchange);
                }
            }

            foreach (var queue in client.GetQueues())
            {
                if (!IsSystemQueue(queue))
                {
                    var modelQueue = new Model.Queue
                    {
                        Name = queue.Name,
                        Durable = queue.Durable
                    };

                    MapArguments(queue.Arguments, modelQueue.Arguments);

                    foreach (var binding in client.GetBindingsForQueue(queue))
                    {
                        if (!IsSystemBinding(binding))
                        {
                            var modelBinding = new Model.Binding
                            {
                                Exchange = binding.Source,
                                RoutingKey = binding.RoutingKey
                            };

                            MapArguments(binding.Arguments, modelBinding.Arguments);
                            modelQueue.Bindings.Add(modelBinding);
                        }
                    }

                    topology.Queues.Add(modelQueue);
                }
            }

            return topology;
        }
        public void Should_alert_if_there_are_any_error_messages_in_any_error_queues()
        {
            ManagementClient.Stub(x => x.GetVHosts()).Return(new[]
            {
                vhost
            });

            var queue = new Queue
            {
                Messages = 1
            };

            ManagementClient.Stub(x => x.GetQueue("EasyNetQ_Default_Error_Queue", vhost)).Return(queue);

            var result = easyNetQErrorQueueCheck.RunCheck(ManagementClient);

            result.Alert.ShouldBeTrue();
            result.Message.ShouldEqual("broker 'http://the.broker.com', VHost(s): 'my_vhost' has messages on the EasyNetQ error queue.");
        }
        public void Should_alert_for_each_error_queue_in_each_vhost()
        {
            var vhost2 = new Vhost {Name = "my_other_vhost"};
            ManagementClient.Stub(x => x.GetVHosts()).Return(new[]
            {
                vhost,
                vhost2
            });

            var queue = new Queue
            {
                Messages = 1
            };

            ManagementClient.Stub(x => x.GetQueue("EasyNetQ_Default_Error_Queue", vhost)).Return(queue);
            ManagementClient.Stub(x => x.GetQueue("EasyNetQ_Default_Error_Queue", vhost2)).Return(queue);

            var result = easyNetQErrorQueueCheck.RunCheck(ManagementClient);

            result.Alert.ShouldBeTrue();

            result.Message.ShouldEqual("broker 'http://the.broker.com', VHost(s): 'my_vhost, my_other_vhost' has messages on the EasyNetQ error queue.");
        }
        public void Should_not_alert_if_there_are_no_error_messages()
        {
            ManagementClient.Stub(x => x.GetVHosts()).Return(new[]
            {
                vhost
            });

            var queue = new Queue
            {
                Messages = 0
            };

            ManagementClient.Stub(x => x.GetQueue("EasyNetQ_Default_Error_Queue", vhost)).Return(queue);

            var result = easyNetQErrorQueueCheck.RunCheck(ManagementClient);

            result.Alert.ShouldBeFalse();
        }