public void TestMessageCache()
        {
            TrackingTransport      transport = new TrackingTransport();
            ConnectionStateTracker tracker   = new ConnectionStateTracker();

            tracker.TrackMessages = true;

            ConnectionData conn = CreateConnectionState(tracker);

            tracker.MaxCacheSize = 4;

            int sequenceId = 1;

            for (int i = 0; i < 10; ++i)
            {
                MessageId id = new MessageId();
                id.ProducerId         = conn.producer.ProducerId;
                id.ProducerSequenceId = sequenceId++;
                Message message = new Message();
                message.MessageId = id;

                tracker.ProcessMessage(message);
                tracker.TrackBack(message);
            }

            tracker.DoRestore(transport);

            Assert.AreEqual(4, transport.messages.Count);
        }
 void ClearConnectionState(ConnectionStateTracker tracker, ConnectionData conn)
 {
     tracker.ProcessRemoveProducer(conn.producer.ProducerId);
     tracker.ProcessRemoveConsumer(conn.consumer.ConsumerId);
     tracker.ProcessRemoveSession(conn.session.SessionId);
     tracker.ProcessRemoveConnection(conn.connection.ConnectionId);
 }
        public void TestConnectionStateTracker()
        {
            ConnectionStateTracker tracker = new ConnectionStateTracker();
            ConnectionData         conn    = CreateConnectionState(tracker);

            ClearConnectionState(tracker, conn);
        }
        private ConnectionData CreateConnectionState(ConnectionStateTracker tracker)
        {
            ConnectionData conn = new ConnectionData();

            ConnectionId connectionId = new ConnectionId();

            connectionId.Value           = "CONNECTION";
            conn.connection              = new ConnectionInfo();
            conn.connection.ConnectionId = connectionId;

            SessionId sessionId = new SessionId();

            sessionId.ConnectionId = "CONNECTION";
            sessionId.Value        = 12345;
            conn.session           = new SessionInfo();
            conn.session.SessionId = sessionId;

            ConsumerId consumerId = new ConsumerId();

            consumerId.ConnectionId  = "CONNECTION";
            consumerId.SessionId     = 12345;
            consumerId.Value         = 42;
            conn.consumer            = new ConsumerInfo();
            conn.consumer.ConsumerId = consumerId;

            ProducerId producerId = new ProducerId();

            producerId.ConnectionId = "CONNECTION";
            producerId.SessionId    = 12345;
            producerId.Value        = 42;

            conn.producer            = new ProducerInfo();
            conn.producer.ProducerId = producerId;

            tracker.ProcessAddConnection(conn.connection);
            tracker.ProcessAddSession(conn.session);
            tracker.ProcessAddConsumer(conn.consumer);
            tracker.ProcessAddProducer(conn.producer);

            return(conn);
        }
        public void TestMessagePullCache2()
        {
            TrackingTransport      transport = new TrackingTransport();
            ConnectionStateTracker tracker   = new ConnectionStateTracker();

            tracker.TrackMessages = true;

            tracker.MaxCacheSize = 10;
            ConnectionData conn = CreateConnectionState(tracker);

            for (int i = 0; i < 100; ++i)
            {
                MessagePull         pull        = new MessagePull();
                ActiveMQDestination destination = new ActiveMQTopic("TEST");
                pull.ConsumerId  = conn.consumer.ConsumerId;
                pull.Destination = destination;
                tracker.ProcessMessagePull(pull);
                tracker.TrackBack(pull);
            }

            tracker.DoRestore(transport);

            Assert.AreEqual(1, transport.messagePulls.Count);
        }