You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ch...@apache.org on 2007/01/30 19:17:10 UTC

svn commit: r501500 - in /incubator/activemq/branches/activemq-4.1/activemq-core/src: main/java/org/apache/activemq/ActiveMQSession.java test/java/org/apache/activemq/command/MessageCompressionTest.java

Author: chirino
Date: Tue Jan 30 10:17:09 2007
New Revision: 501500

URL: http://svn.apache.org/viewvc?view=rev&rev=501500
Log:
Fix for https://issues.apache.org/activemq/browse/AMQ-1140

We need to make sure that the connection is set on the message so that it knows what compression options to apply


Added:
    incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java
Modified:
    incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java

Modified: incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
URL: http://svn.apache.org/viewvc/incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java?view=diff&rev=501500&r1=501499&r2=501500
==============================================================================
--- incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java (original)
+++ incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java Tue Jan 30 10:17:09 2007
@@ -1535,7 +1535,8 @@
 
         if ( connection.isCopyMessageOnSend() ){
             msg = (ActiveMQMessage) msg.copy();
-        }        
+        }
+        msg.setConnection(connection);
         msg.onSend();
         msg.setProducerId(msg.getMessageId().getProducerId());
 

Added: incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java
URL: http://svn.apache.org/viewvc/incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java?view=auto&rev=501500
==============================================================================
--- incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java (added)
+++ incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java Tue Jan 30 10:17:09 2007
@@ -0,0 +1,123 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.command;
+
+import java.net.URI;
+
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.ActiveMQConnection;
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.TransportConnector;
+
+public class MessageCompressionTest extends TestCase {
+	
+	protected BrokerService broker;
+	private ActiveMQQueue queue;
+    private static final String BROKER_URL = "tcp://localhost:61216";
+
+    // The following text should compress well
+    private static final String TEXT = 
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. " +
+    	 "The quick red fox jumped over the lazy brown dog. ";
+    
+	protected void setUp() throws Exception {
+		broker = new BrokerService();
+		
+		TransportConnector tc = new TransportConnector();
+        tc.setUri(new URI(BROKER_URL));
+        tc.setName("tcp");
+
+        queue = new ActiveMQQueue("TEST."+System.currentTimeMillis());
+        
+        broker.addConnector(tc);
+        broker.start();
+
+	}
+	
+    protected void tearDown() throws Exception {
+        if (broker != null) {
+            broker.stop();
+        }
+    }
+	
+	public void testTextMessageCompression() throws Exception {
+		
+        ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(BROKER_URL);
+        factory.setUseCompression(true);
+    	sendTestMessage(factory, TEXT);
+    	ActiveMQTextMessage message = receiveTestMessage(factory);
+    	int compressedSize = message.getContent().getLength();
+    	
+        factory = new ActiveMQConnectionFactory(BROKER_URL);
+        factory.setUseCompression(false);
+    	sendTestMessage(factory, TEXT);
+    	message = receiveTestMessage(factory);
+    	int unCompressedSize = message.getContent().getLength();
+
+    	assertTrue("expected: compressed Size '"+compressedSize+"' < unCompressedSize '"+unCompressedSize+"'", compressedSize < unCompressedSize);
+    }
+
+	private void sendTestMessage(ActiveMQConnectionFactory factory, String message) throws JMSException {
+		ActiveMQConnection connection = (ActiveMQConnection) factory.createConnection();
+    	Session session = connection.createSession(false, 0);
+		MessageProducer producer = session.createProducer(queue);
+		producer.send(session.createTextMessage(message));
+		connection.close();
+	}
+	
+	private ActiveMQTextMessage receiveTestMessage(ActiveMQConnectionFactory factory) throws JMSException {
+		ActiveMQConnection connection = (ActiveMQConnection) factory.createConnection();
+		connection.start();
+    	Session session = connection.createSession(false, 0);
+		MessageConsumer consumer = session.createConsumer(queue);
+		ActiveMQTextMessage rc = (ActiveMQTextMessage) consumer.receive();
+		connection.close();
+		return rc;
+	}
+	
+	
+//	public void testJavaUtilZip() throws Exception {
+//		String str = "When the going gets weird, the weird turn pro.";
+//		byte[] bytes = str.getBytes();
+//		
+//		ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length);
+//		DeflaterOutputStream dos = new DeflaterOutputStream(baos);
+//		dos.
+//	}
+}
\ No newline at end of file