From: Juergen H. <jho...@us...> - 2008-07-30 20:14:09
|
Update of /cvsroot/springframework/spring/test/org/springframework/jms/connection In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv9614/test/org/springframework/jms/connection Modified Files: SingleConnectionFactoryTests.java JmsTransactionManagerTests.java Log Message: added further tests for implicit JMS resource closing Index: SingleConnectionFactoryTests.java =================================================================== RCS file: /cvsroot/springframework/spring/test/org/springframework/jms/connection/SingleConnectionFactoryTests.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** SingleConnectionFactoryTests.java 23 Jul 2008 23:27:44 -0000 1.7 --- SingleConnectionFactoryTests.java 30 Jul 2008 20:14:04 -0000 1.8 *************** *** 476,480 **** conControl.setReturnValue(txSession, 1); txSession.getTransacted(); ! txSessionControl.setReturnValue(true, 1); txSession.rollback(); txSessionControl.setVoidCallable(1); --- 476,480 ---- conControl.setReturnValue(txSession, 1); txSession.getTransacted(); ! txSessionControl.setReturnValue(true, 2); txSession.rollback(); txSessionControl.setVoidCallable(1); *************** *** 485,490 **** con.createSession(false, Session.CLIENT_ACKNOWLEDGE); conControl.setReturnValue(nonTxSession, 1); - nonTxSession.getTransacted(); - nonTxSessionControl.setReturnValue(false, 2); nonTxSession.close(); nonTxSessionControl.setVoidCallable(1); --- 485,488 ---- *************** *** 505,509 **** Connection con1 = scf.createConnection(); Session session1 = con1.createSession(true, Session.AUTO_ACKNOWLEDGE); ! session1.close(); // should be ignored session1 = con1.createSession(false, Session.CLIENT_ACKNOWLEDGE); session1.close(); // should be ignored --- 503,508 ---- Connection con1 = scf.createConnection(); Session session1 = con1.createSession(true, Session.AUTO_ACKNOWLEDGE); ! session1.getTransacted(); ! session1.close(); // should lead to rollback session1 = con1.createSession(false, Session.CLIENT_ACKNOWLEDGE); session1.close(); // should be ignored *************** *** 541,545 **** conControl.setReturnValue(txSession, 1); txSession.getTransacted(); ! txSessionControl.setReturnValue(true, 1); txSession.rollback(); txSessionControl.setVoidCallable(2); --- 540,544 ---- conControl.setReturnValue(txSession, 1); txSession.getTransacted(); ! txSessionControl.setReturnValue(true, 2); txSession.rollback(); txSessionControl.setVoidCallable(2); *************** *** 548,553 **** con.createQueueSession(false, Session.CLIENT_ACKNOWLEDGE); conControl.setReturnValue(nonTxSession, 1); - nonTxSession.getTransacted(); - nonTxSessionControl.setReturnValue(false, 2); nonTxSession.close(); nonTxSessionControl.setVoidCallable(1); --- 547,550 ---- *************** *** 578,582 **** session2.close(); // should be ignored session2 = con2.createSession(true, Session.AUTO_ACKNOWLEDGE); ! session2.close(); // should be ignored con2.start(); con2.close(); // should be ignored --- 575,580 ---- session2.close(); // should be ignored session2 = con2.createSession(true, Session.AUTO_ACKNOWLEDGE); ! session2.getTransacted(); ! session2.close(); // should lead to rollback con2.start(); con2.close(); // should be ignored *************** *** 604,608 **** conControl.setReturnValue(txSession, 1); txSession.getTransacted(); ! txSessionControl.setReturnValue(true, 2); txSession.rollback(); txSessionControl.setVoidCallable(2); --- 602,606 ---- conControl.setReturnValue(txSession, 1); txSession.getTransacted(); ! txSessionControl.setReturnValue(true, 4); txSession.rollback(); txSessionControl.setVoidCallable(2); *************** *** 611,616 **** con.createTopicSession(false, Session.CLIENT_ACKNOWLEDGE); conControl.setReturnValue(nonTxSession, 1); - nonTxSession.getTransacted(); - nonTxSessionControl.setReturnValue(false, 2); nonTxSession.close(); nonTxSessionControl.setVoidCallable(1); --- 609,612 ---- *************** *** 631,635 **** Connection con1 = scf.createTopicConnection(); Session session1 = con1.createSession(true, Session.AUTO_ACKNOWLEDGE); ! session1.close(); // should be ignored session1 = con1.createSession(false, Session.CLIENT_ACKNOWLEDGE); session1.close(); // should be ignored --- 627,632 ---- Connection con1 = scf.createTopicConnection(); Session session1 = con1.createSession(true, Session.AUTO_ACKNOWLEDGE); ! session1.getTransacted(); ! session1.close(); // should lead to rollback session1 = con1.createSession(false, Session.CLIENT_ACKNOWLEDGE); session1.close(); // should be ignored *************** *** 640,643 **** --- 637,641 ---- session2.close(); // should be ignored session2 = con2.createSession(true, Session.AUTO_ACKNOWLEDGE); + session2.getTransacted(); session2.close(); // should be ignored con2.start(); Index: JmsTransactionManagerTests.java =================================================================== RCS file: /cvsroot/springframework/spring/test/org/springframework/jms/connection/JmsTransactionManagerTests.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** JmsTransactionManagerTests.java 10 Sep 2007 19:40:37 -0000 1.5 --- JmsTransactionManagerTests.java 30 Jul 2008 20:14:04 -0000 1.6 *************** *** 1,4 **** /* ! * Copyright 2002-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); --- 1,4 ---- /* ! * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); *************** *** 19,23 **** --- 19,26 ---- import javax.jms.Connection; import javax.jms.ConnectionFactory; + import javax.jms.Destination; import javax.jms.JMSException; + import javax.jms.Message; + import javax.jms.MessageProducer; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; *************** *** 31,36 **** --- 34,41 ---- import org.easymock.MockControl; + import org.springframework.jms.StubQueue; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.core.JmsTemplate102; + import org.springframework.jms.core.MessageCreator; import org.springframework.jms.core.SessionCallback; import org.springframework.transaction.TransactionDefinition; *************** *** 361,364 **** --- 366,423 ---- } + public void testTransactionCommitWithMessageProducer() throws JMSException { + Destination dest = new StubQueue(); + + MockControl cfControl = MockControl.createControl(ConnectionFactory.class); + ConnectionFactory cf = (ConnectionFactory) cfControl.getMock(); + MockControl conControl = MockControl.createControl(Connection.class); + Connection con = (Connection) conControl.getMock(); + MockControl sessionControl = MockControl.createControl(Session.class); + Session session = (Session) sessionControl.getMock(); + MockControl producerControl = MockControl.createControl(MessageProducer.class); + MessageProducer producer = (MessageProducer) producerControl.getMock(); + MockControl messageControl = MockControl.createControl(Message.class); + final Message message = (Message) messageControl.getMock(); + + cf.createConnection(); + cfControl.setReturnValue(con, 1); + con.createSession(true, Session.AUTO_ACKNOWLEDGE); + conControl.setReturnValue(session, 1); + session.createProducer(dest); + sessionControl.setReturnValue(producer, 1); + producer.send(message); + producerControl.setVoidCallable(1); + session.getTransacted(); + sessionControl.setReturnValue(true, 1); + session.commit(); + sessionControl.setVoidCallable(1); + producer.close(); + producerControl.setVoidCallable(1); + session.close(); + sessionControl.setVoidCallable(1); + con.close(); + conControl.setVoidCallable(1); + + producerControl.replay(); + sessionControl.replay(); + conControl.replay(); + cfControl.replay(); + + JmsTransactionManager tm = new JmsTransactionManager(cf); + TransactionStatus ts = tm.getTransaction(new DefaultTransactionDefinition()); + JmsTemplate jt = new JmsTemplate(cf); + jt.send(dest, new MessageCreator() { + public Message createMessage(Session session) throws JMSException { + return message; + } + }); + tm.commit(ts); + + producerControl.verify(); + sessionControl.verify(); + conControl.verify(); + cfControl.verify(); + } + public void testTransactionCommit102WithQueue() throws JMSException { MockControl cfControl = MockControl.createControl(QueueConnectionFactory.class); |