Apache.NMS.Test.DurableTest.TestSendWhileClosed C# (CSharp) Method

TestSendWhileClosed() private method

private TestSendWhileClosed ( [ ackMode ) : void
ackMode [
return void
        public void TestSendWhileClosed(
			[Values(AcknowledgementMode.AutoAcknowledge, AcknowledgementMode.ClientAcknowledge,
				AcknowledgementMode.DupsOkAcknowledge, AcknowledgementMode.Transactional)]
			AcknowledgementMode ackMode)
        {
            string TEST_DURABLE_TOPIC = DURABLE_TOPIC + ":TestSendWhileClosed";
            try
            {
                using(IConnection connection = CreateConnection(TEST_CLIENT_AND_CONSUMER_ID))
                {
                    connection.Start();

                    using(ISession session = connection.CreateSession(ackMode))
                    {
                        ITopic topic = session.GetTopic(TEST_DURABLE_TOPIC);
                        IMessageProducer producer = session.CreateProducer(topic);

                        producer.DeliveryMode = MsgDeliveryMode.Persistent;

                        ISession consumeSession = connection.CreateSession(ackMode);
                        IMessageConsumer consumer = consumeSession.CreateDurableConsumer(topic, TEST_CLIENT_AND_CONSUMER_ID, null, false);
                        Thread.Sleep(1000);
                        consumer.Dispose();
                        consumer = null;

                        ITextMessage message = session.CreateTextMessage("DurableTest-TestSendWhileClosed");
                        message.Properties.SetString("test", "test");
                        message.NMSType = "test";
                        producer.Send(message);
                        if(AcknowledgementMode.Transactional == ackMode)
                        {
                            session.Commit();
                        }

                        Thread.Sleep(1000);
                        consumer = consumeSession.CreateDurableConsumer(topic, TEST_CLIENT_AND_CONSUMER_ID, null, false);
                        ITextMessage msg = consumer.Receive(TimeSpan.FromMilliseconds(1000)) as ITextMessage;
                        msg.Acknowledge();
                        if(AcknowledgementMode.Transactional == ackMode)
                        {
                            consumeSession.Commit();
                        }

                        Assert.IsNotNull(msg);
                        Assert.AreEqual(msg.Text, "DurableTest-TestSendWhileClosed");
                        Assert.AreEqual(msg.NMSType, "test");
                        Assert.AreEqual(msg.Properties.GetString("test"), "test");
                    }
                }
            }
            catch(Exception ex)
            {
                Assert.Fail(ex.Message);
            }
            finally
            {
                // Pause to allow Stomp to unregister at the broker.
                Thread.Sleep(500);

                UnregisterDurableConsumer(TEST_CLIENT_AND_CONSUMER_ID, TEST_CLIENT_AND_CONSUMER_ID);
            }
        }