/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.camel.component.sjms; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.ExchangePattern; import org.apache.camel.ResolveEndpointFailedException; import org.apache.camel.test.junit4.CamelTestSupport; import org.junit.Test; public class SjmsEndpointTest extends CamelTestSupport { @Override protected boolean useJmx() { return true; } @Test public void testDefaults() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:test"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint sjms = (SjmsEndpoint)endpoint; assertEquals(sjms.getEndpointUri(), "sjms://test"); assertEquals(sjms.createExchange().getPattern(), ExchangePattern.InOnly); } @Test public void testQueueEndpoint() throws Exception { Endpoint sjms = context.getEndpoint("sjms:queue:test"); assertNotNull(sjms); assertEquals(sjms.getEndpointUri(), "sjms://queue:test"); assertTrue(sjms instanceof SjmsEndpoint); } @Test public void testJndiStyleEndpointName() throws Exception { SjmsEndpoint sjms = context.getEndpoint("sjms:/jms/test/hov.t1.dev:topic", SjmsEndpoint.class); assertNotNull(sjms); assertFalse(sjms.isTopic()); assertEquals("/jms/test/hov.t1.dev:topic", sjms.getDestinationName()); } @Test public void testSetTransacted() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:queue:test?transacted=true"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertTrue(qe.isTransacted()); } @Test public void testAsyncProducer() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:queue:test?synchronous=true"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertTrue(qe.isSynchronous()); } @Test public void testNamedReplyTo() throws Exception { String namedReplyTo = "reply.to.queue"; Endpoint endpoint = context.getEndpoint("sjms:queue:test?namedReplyTo=" + namedReplyTo); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertEquals(qe.getNamedReplyTo(), namedReplyTo); assertEquals(qe.createExchange().getPattern(), ExchangePattern.InOut); } @Test public void testDefaultExchangePattern() throws Exception { try { SjmsEndpoint sjms = (SjmsEndpoint)context.getEndpoint("sjms:queue:test"); assertNotNull(sjms); assertEquals(ExchangePattern.InOnly, sjms.getExchangePattern()); // assertTrue(sjms.createExchange().getPattern().equals(ExchangePattern.InOnly)); } catch (Exception e) { fail("Exception thrown: " + e.getLocalizedMessage()); } } @Test public void testInOnlyExchangePattern() throws Exception { try { Endpoint sjms = context.getEndpoint("sjms:queue:test?exchangePattern=" + ExchangePattern.InOnly); assertNotNull(sjms); assertTrue(sjms.createExchange().getPattern().equals(ExchangePattern.InOnly)); } catch (Exception e) { fail("Exception thrown: " + e.getLocalizedMessage()); } } @Test public void testInOutExchangePattern() throws Exception { try { Endpoint sjms = context.getEndpoint("sjms:queue:test?exchangePattern=" + ExchangePattern.InOut); assertNotNull(sjms); assertTrue(sjms.createExchange().getPattern().equals(ExchangePattern.InOut)); } catch (Exception e) { fail("Exception thrown: " + e.getLocalizedMessage()); } } @Test(expected = ResolveEndpointFailedException.class) public void testUnsupportedMessageExchangePattern() throws Exception { context.getEndpoint("sjms:queue:test2?messageExchangePattern=" + ExchangePattern.OutOnly); } @Test public void testNamedReplyToAndMEPMatch() throws Exception { String namedReplyTo = "reply.to.queue"; Endpoint endpoint = context.getEndpoint("sjms:queue:test?namedReplyTo=" + namedReplyTo + "&exchangePattern=" + ExchangePattern.InOut); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertEquals(qe.getNamedReplyTo(), namedReplyTo); assertEquals(qe.createExchange().getPattern(), ExchangePattern.InOut); } @Test(expected = Exception.class) public void testNamedReplyToAndMEPMismatch() throws Exception { context.getEndpoint("sjms:queue:test?namedReplyTo=reply.to.queue&exchangePattern=" + ExchangePattern.InOnly); } @Test public void testDestinationName() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:queue:test?synchronous=true"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertTrue(qe.isSynchronous()); } @Test public void testTransactedBatchCountDefault() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:queue:test?transacted=true"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertTrue(qe.getTransactionBatchCount() == -1); } @Test public void testTransactedBatchCountModified() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:queue:test?transacted=true&transactionBatchCount=10"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertTrue(qe.getTransactionBatchCount() == 10); } @Test public void testTransactedBatchTimeoutDefault() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:queue:test?transacted=true"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertTrue(qe.getTransactionBatchTimeout() == 5000); } @Test public void testTransactedBatchTimeoutModified() throws Exception { Endpoint endpoint = context.getEndpoint("sjms:queue:test?transacted=true&transactionBatchTimeout=3000"); assertNotNull(endpoint); assertTrue(endpoint instanceof SjmsEndpoint); SjmsEndpoint qe = (SjmsEndpoint)endpoint; assertTrue(qe.getTransactionBatchTimeout() == 3000); } protected CamelContext createCamelContext() throws Exception { CamelContext camelContext = super.createCamelContext(); ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://broker?broker.persistent=false&broker.useJmx=false"); SjmsComponent component = new SjmsComponent(); component.setConnectionCount(3); component.setConnectionFactory(connectionFactory); camelContext.addComponent("sjms", component); return camelContext; } }