public void CachedSession() { IConnectionFactory connectionFactory = (IConnectionFactory)mocks.CreateMock(typeof(IConnectionFactory)); IConnection connection = new TestConnection(); Expect.Call(connectionFactory.CreateConnection()).Return(connection).Repeat.Once(); mocks.ReplayAll(); CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(); cachingConnectionFactory.TargetConnectionFactory = connectionFactory; IConnection con1 = cachingConnectionFactory.CreateConnection(); ISession session1 = con1.CreateSession(true, SessionMode.SessionTransacted); TestSession testSession = GetTestSession(session1); Assert.AreEqual(1, testSession.CreatedCount); Assert.AreEqual(0, testSession.CloseCount); session1.Close(); // won't close, will put in session cache. Assert.AreEqual(0, testSession.CloseCount); ISession session2 = con1.CreateSession(true, SessionMode.SessionTransacted); TestSession testSession2 = GetTestSession(session2); Assert.AreSame(testSession, testSession2); Assert.AreEqual(1, testSession.CreatedCount); Assert.AreEqual(0, testSession.CloseCount); mocks.VerifyAll(); //don't explicitly call close on }
public void CachedSessionTwoRequests() { IConnectionFactory connectionFactory = (IConnectionFactory)mocks.CreateMock(typeof(IConnectionFactory)); IConnection connection = new TestConnection(); Expect.Call(connectionFactory.CreateConnection()).Return(connection).Repeat.Once(); mocks.ReplayAll(); CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(); cachingConnectionFactory.TargetConnectionFactory = connectionFactory; IConnection con1 = cachingConnectionFactory.CreateConnection(); ISession session1 = con1.CreateSession(true, SessionMode.SessionTransacted); TestSession testSession1 = GetTestSession(session1); Assert.AreEqual(1, testSession1.CreatedCount); Assert.AreEqual(0, testSession1.CloseCount); //will create a new one, not in the cache. ISession session2 = con1.CreateSession(true, SessionMode.SessionTransacted); TestSession testSession2 = GetTestSession(session2); Assert.AreEqual(1, testSession2.CreatedCount); Assert.AreEqual(0, testSession2.CloseCount); Assert.AreNotSame(testSession1, testSession2); Assert.AreNotSame(session1, session2); session1.Close(); // will be put in the cache ISession session3 = con1.CreateSession(true, SessionMode.SessionTransacted); TestSession testSession3 = GetTestSession(session3); Assert.AreSame(testSession1, testSession3); Assert.AreSame(session1, session3); Assert.AreEqual(1, testSession1.CreatedCount); Assert.AreEqual(0, testSession1.CloseCount); mocks.VerifyAll(); }
public void CachedMessageProducerTwoRequests() { IConnectionFactory connectionFactory = (IConnectionFactory)mocks.CreateMock(typeof(IConnectionFactory)); IConnection connection = new TestConnection(); Expect.Call(connectionFactory.CreateConnection()).Return(connection).Repeat.Once(); mocks.ReplayAll(); CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(); cachingConnectionFactory.TargetConnectionFactory = connectionFactory; IConnection con1 = cachingConnectionFactory.CreateConnection(); ISession sessionA = con1.CreateSession(true, SessionMode.SessionTransacted); Topic dest = new Topic("test.topic"); IMessageProducer producerA = sessionA.CreateProducer(dest); TestMessageProducer tmpA = GetTestMessageProducer(producerA); ISession sessionB = con1.CreateSession(true, SessionMode.SessionTransacted); IMessageProducer producerB = sessionB.CreateProducer(dest); TestMessageProducer tmpB = GetTestMessageProducer(producerB); Assert.AreNotSame(tmpA, tmpB); sessionA.Close(); ISession sessionC = con1.CreateSession(true, SessionMode.SessionTransacted); IMessageProducer producerC = sessionC.CreateProducer(dest); TestMessageProducer tmpC = GetTestMessageProducer(producerC); Assert.AreSame(tmpA, tmpC); mocks.VerifyAll(); }
public void CachedMessageConsumer() { IConnectionFactory connectionFactory = (IConnectionFactory)mocks.CreateMock(typeof(IConnectionFactory)); IConnection connection = new TestConnection(); Expect.Call(connectionFactory.CreateConnection()).Return(connection).Repeat.Once(); mocks.ReplayAll(); CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(); cachingConnectionFactory.TargetConnectionFactory = connectionFactory; IConnection con1 = cachingConnectionFactory.CreateConnection(); ISession sessionA = con1.CreateSession(true, SessionMode.SessionTransacted); Destination destination = new Topic("test.dest"); IMessageConsumer consumerA = sessionA.CreateConsumer(destination); TestMessageConsumer tmpA = GetTestMessageConsumer(consumerA); sessionA.Close(); ISession sessionB = con1.CreateSession(true, SessionMode.SessionTransacted); IMessageConsumer consumerB = sessionB.CreateConsumer(destination); TestMessageConsumer tmpB = GetTestMessageConsumer(consumerB); Assert.AreSame(tmpA, tmpB); mocks.VerifyAll(); }
public void UsingConnectionFactoryAndExceptionListenerAndReconnectOnException() { IConnectionFactory connectionFactory = (IConnectionFactory)mocks.CreateMock(typeof(IConnectionFactory)); TestConnection con = new TestConnection(); TestExceptionListener listener = new TestExceptionListener(); Expect.Call(connectionFactory.CreateConnection()).Return(con).Repeat.Twice(); mocks.ReplayAll(); SingleConnectionFactory scf = new SingleConnectionFactory(connectionFactory); scf.ExceptionListener = listener; scf.ReconnectOnException = true; IConnection con1 = scf.CreateConnection(); //Assert.AreSame(listener, ); con1.Start(); con.FireExcpetionEvent(new EMSException("")); IConnection con2 = scf.CreateConnection(); con2.Start(); scf.Dispose(); mocks.VerifyAll(); Assert.AreEqual(2, con.StartCount); Assert.AreEqual(2, con.CloseCount); Assert.AreEqual(1, listener.Count); }