You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Chris Zeng (JIRA)" <ji...@apache.org> on 2007/11/27 09:17:26 UTC
[jira] Updated: (AMQ-1504) Bug in MapContainerImpl and
DiskIndexLinkedList
[ 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.