Issue Details (XML | Word | Printable)

Key: AMQ-1504
Type: Test Test
Status: Resolved Resolved
Resolution: Duplicate
Priority: Major Major
Assignee: Unassigned
Reporter: Chris Zeng
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
ActiveMQ

Bug in MapContainerImpl and DiskIndexLinkedList

Created: 27/Nov/07 12:14 AM   Updated: 28/Nov/07 12:28 PM
Return to search
Component/s: Message Store
Affects Version/s: 4.1.1
Fix Version/s: 5.0.0

Time Tracking:
Not Specified

File Attachments:
  Size
Java Source File Licensed for inclusion in ASF works MapContainerImplTest.java 2007-11-27 12:16 AM Chris Zeng 5 kB


 Description  « Hide
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()
    Unknown macro: { 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.



 All   Comments   Work Log   Change History   Subversion Commits   FishEye   Crucible      Sort Order: Ascending order - Click to sort in descending order
No related commits found.