[ https://issues.apache.org/activemq/browse/AMQ-1504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chris Zeng updated AMQ-1504: ---------------------------- Attachment: MapContainerImplTest.java > Bug in MapContainerImpl and DiskIndexLinkedList > ----------------------------------------------- > > Key: AMQ-1504 > URL: https://issues.apache.org/activemq/browse/AMQ-1504 > Project: ActiveMQ > Issue Type: Test > Components: Message Store > Affects Versions: 4.1.1 > Reporter: Chris Zeng > Attachments: MapContainerImplTest.java > > > package Test; > import java.io.File; > import java.io.IOException; > import java.util.HashMap; > import java.util.Iterator; > import java.util.Map; > import junit.framework.Test; > import junit.framework.TestCase; > import junit.framework.TestSuite; > import org.apache.activemq.command.ActiveMQMessage; > import org.apache.activemq.command.ActiveMQQueue; > import org.apache.activemq.command.ActiveMQTextMessage; > import org.apache.activemq.command.MessageAck; > import org.apache.activemq.command.MessageId; > import org.apache.activemq.kaha.StoreFactory; > import org.apache.activemq.store.MessageStore; > import org.apache.activemq.store.kahadaptor.KahaPersistenceAdapter; > /** > * > * @author chris > * > */ > public class MapContainerImplTest extends TestCase { > /** > * Create the test case > * > * @param testName > * name of the test case > */ > public MapContainerImplTest(String testName) { > super(testName); > } > /** > * @return the suite of tests being tested > */ > public static Test suite() { > return new TestSuite(MapContainerImplTest.class); > } > /** > * bug exists in MapContainerImpl write method in MapContainerImpl > should > * refreshEntry after getPrevIndex > */ > public void testRemoveLast() { > try { > String dir = "C:/Temp/FilePersistenceAdapter"; > StoreFactory.delete(dir + "/kaha.db"); > KahaPersistenceAdapter theAdapter = new > KahaPersistenceAdapter( > new File(dir)); > ActiveMQQueue queue = new ActiveMQQueue("Test"); > MessageStore theStore = > theAdapter.createQueueMessageStore(queue); > ActiveMQTextMessage message = null; > message = new ActiveMQTextMessage(); > message.setJMSMessageID("4"); > message.setText("TEST"); > theStore.addMessage(null, message); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("3"); > message.setText("TEST"); > theStore.addMessage(null, message); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("2"); > message.setText("TEST"); > theStore.addMessage(null, message); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("1"); > message.setText("TEST"); > theStore.addMessage(null, message); > MessageAck ack = null; > ack = new MessageAck(); > ack.setLastMessageId(new MessageId("1")); > theStore.removeMessage(null, ack); > ack = new MessageAck(); > ack.setLastMessageId(new MessageId("2")); > theStore.removeMessage(null, ack); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("5"); > message.setText("TEST"); > theStore.addMessage(null, message); > theAdapter.stop(); > theAdapter = new KahaPersistenceAdapter(new File(dir)); > queue = new ActiveMQQueue("Test"); > theStore = theAdapter.createQueueMessageStore(queue); > > theAdapter.stop(); > > System.out.println("That is ok!"); > > } catch (Exception e) { > e.printStackTrace(); > } > } > /** > * Bug exists in DiskIndexLinkedList. After reading index from file, if > the index is root or last, > * We should update the data in the root or last object instead of > return last or root directly. > * If the index is root, we can not simplly write "root = index", we > should update the > * data in this root object, because others are using "this" object. > */ > public void testRemoveLast_ThenRemoveTheOneBeforeLast() { > try { > String dir = "C:/Temp/FilePersistenceAdapter"; > StoreFactory.delete(dir + "/kaha.db"); > KahaPersistenceAdapter theAdapter = new > KahaPersistenceAdapter( > new File(dir)); > ActiveMQQueue queue = new ActiveMQQueue("Test"); > MessageStore theStore = > theAdapter.createQueueMessageStore(queue); > ActiveMQTextMessage message = null; > message = new ActiveMQTextMessage(); > message.setJMSMessageID("4"); > message.setText("TEST"); > theStore.addMessage(null, message); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("3"); > message.setText("TEST"); > theStore.addMessage(null, message); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("2"); > message.setText("TEST"); > theStore.addMessage(null, message); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("1"); > message.setText("TEST"); > theStore.addMessage(null, message); > MessageAck ack = null; > ack = new MessageAck(); > ack.setLastMessageId(new MessageId("1")); > theStore.removeMessage(null, ack); > ack = new MessageAck(); > ack.setLastMessageId(new MessageId("3")); > theStore.removeMessage(null, ack); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("3"); > message.setText("TEST"); > theStore.addMessage(null, message); > message = new ActiveMQTextMessage(); > message.setJMSMessageID("1"); > message.setText("TEST"); > theStore.addMessage(null, message); > theAdapter.stop(); > theAdapter = new KahaPersistenceAdapter(new File(dir)); > queue = new ActiveMQQueue("Test"); > theStore = theAdapter.createQueueMessageStore(queue); > > theStore.stop(); > > System.out.println("That is ok!"); > } catch (Exception e) { > e.printStackTrace(); > } > } > } > we can not see the out in the console. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.