View Javadoc

1   /*
2    * $Id: JmsNamespaceHandlerTestCase.java 22552 2011-07-25 07:18:19Z claude.mamo $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  
11  package org.mule.transport.jms.config;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertFalse;
15  import static org.junit.Assert.assertNotNull;
16  import static org.junit.Assert.assertNull;
17  import static org.junit.Assert.assertTrue;
18  
19  import org.mule.api.MuleException;
20  import org.mule.api.endpoint.EndpointException;
21  import org.mule.api.endpoint.ImmutableEndpoint;
22  import org.mule.api.endpoint.InboundEndpoint;
23  import org.mule.api.lifecycle.InitialisationException;
24  import org.mule.api.routing.filter.Filter;
25  import org.mule.construct.Flow;
26  import org.mule.routing.filters.logic.NotFilter;
27  import org.mule.service.ServiceCompositeMessageSource;
28  import org.mule.tck.AbstractServiceAndFlowTestCase;
29  import org.mule.tck.testmodels.mule.TestTransactionFactory;
30  import org.mule.transaction.MuleTransactionConfig;
31  import org.mule.transaction.XaTransactionFactory;
32  import org.mule.transport.jms.JmsConnector;
33  import org.mule.transport.jms.JmsConstants;
34  import org.mule.transport.jms.filters.JmsPropertyFilter;
35  import org.mule.transport.jms.filters.JmsSelectorFilter;
36  import org.mule.transport.jms.test.TestConnectionFactory;
37  import org.mule.transport.jms.test.TestRedeliveryHandler;
38  import org.mule.transport.jms.test.TestRedeliveryHandlerFactory;
39  
40  import java.util.Arrays;
41  import java.util.Collection;
42  
43  import javax.jms.Session;
44  
45  import org.junit.Test;
46  import org.junit.runners.Parameterized.Parameters;
47  
48  /**
49   * Tests the "jms" namespace.
50   */
51  public class JmsNamespaceHandlerTestCase extends AbstractServiceAndFlowTestCase
52  {
53      public JmsNamespaceHandlerTestCase(ConfigVariant variant, String configResources)
54      {
55          super(variant, configResources);
56          setStartContext(false);
57      }
58  
59      @Parameters
60      public static Collection<Object[]> parameters()
61      {
62          return Arrays.asList(new Object[][]{{ConfigVariant.SERVICE, "jms-namespace-config-service.xml"},
63              {ConfigVariant.FLOW, "jms-namespace-config-flow.xml"}});
64      }
65  
66      @Test
67      public void testDefaultConfig() throws Exception
68      {
69          JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsConnectorDefaults");
70          assertNotNull(c);
71  
72          assertNotNull(c.getConnectionFactory());
73          assertTrue(c.getConnectionFactory() instanceof TestConnectionFactory);
74          assertEquals(Session.AUTO_ACKNOWLEDGE, c.getAcknowledgementMode());
75          assertNull(c.getUsername());
76          assertNull(c.getPassword());
77  
78          assertNotNull(c.getRedeliveryHandlerFactory());
79          assertTrue(c.getRedeliveryHandlerFactory() instanceof TestRedeliveryHandlerFactory);
80          assertTrue(c.getRedeliveryHandlerFactory().create() instanceof TestRedeliveryHandler);
81  
82          assertNull(c.getClientId());
83          assertFalse(c.isDurable());
84          assertFalse(c.isNoLocal());
85          assertFalse(c.isPersistentDelivery());
86          assertEquals(0, c.getMaxRedelivery());
87          assertFalse(c.isCacheJmsSessions());
88          assertTrue(c.isEagerConsumer());
89          assertEquals(4, c.getNumberOfConcurrentTransactedReceivers());
90          assertFalse(c.isEmbeddedMode());
91      }
92  
93      @Test
94      public void testConnectorConfig() throws Exception
95      {
96          JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsConnector1");
97          assertNotNull(c);
98  
99          assertNotNull(c.getConnectionFactory());
100 
101         assertTrue(c.getConnectionFactory() instanceof TestConnectionFactory);
102         assertEquals(Session.DUPS_OK_ACKNOWLEDGE, c.getAcknowledgementMode());
103         assertEquals("myuser", c.getUsername());
104         assertEquals("mypass", c.getPassword());
105 
106         assertNotNull(c.getRedeliveryHandlerFactory());
107         assertTrue(c.getRedeliveryHandlerFactory().create() instanceof TestRedeliveryHandler);
108 
109         assertEquals("myClient", c.getClientId());
110         assertTrue(c.isDurable());
111         assertTrue(c.isNoLocal());
112         assertTrue(c.isPersistentDelivery());
113         assertEquals(5, c.getMaxRedelivery());
114         assertTrue(c.isCacheJmsSessions());
115         assertFalse(c.isEagerConsumer());
116 
117         assertEquals("1.1", c.getSpecification()); // 1.0.2b is the default, should
118                                                    // be changed in the config
119         // test properties, default is 4
120         assertEquals(7, c.getNumberOfConcurrentTransactedReceivers());
121         assertTrue(c.isEmbeddedMode());
122     }
123 
124     @Test
125     public void testCustomConnectorConfig() throws Exception
126     {
127         JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsConnector2");
128         assertNotNull(c);
129 
130         assertEquals("1.1", c.getSpecification()); // 1.0.2b is the default, should
131                                                    // be changed in the config
132     }
133 
134     @Test
135     public void testTestConnectorConfig() throws Exception
136     {
137         JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsConnector3");
138         assertNotNull(c);
139 
140         assertNotNull(c.getConnectionFactory());
141 
142         assertTrue(c.getConnectionFactory() instanceof TestConnectionFactory);
143         assertEquals(Session.DUPS_OK_ACKNOWLEDGE, c.getAcknowledgementMode());
144 
145         assertNotNull(c.getRedeliveryHandlerFactory());
146         assertTrue(c.getRedeliveryHandlerFactory().create() instanceof TestRedeliveryHandler);
147 
148         assertEquals("myClient", c.getClientId());
149         assertTrue(c.isDurable());
150         assertTrue(c.isNoLocal());
151         assertTrue(c.isPersistentDelivery());
152         assertEquals(5, c.getMaxRedelivery());
153         assertTrue(c.isCacheJmsSessions());
154         assertFalse(c.isEagerConsumer());
155 
156         assertEquals("1.1", c.getSpecification()); // 1.0.2b is the default, should
157                                                    // be changed in the config
158     }
159 
160     @Test
161     public void testEndpointConfig() throws MuleException
162     {
163         ImmutableEndpoint endpoint1 = muleContext.getRegistry()
164             .lookupEndpointBuilder("endpoint1")
165             .buildInboundEndpoint();
166         assertNotNull(endpoint1);
167         Filter filter1 = endpoint1.getFilter();
168         assertNotNull(filter1);
169         assertTrue(filter1 instanceof JmsSelectorFilter);
170         assertEquals(1, endpoint1.getProperties().size());
171         assertEquals("true", endpoint1.getProperty(JmsConstants.DISABLE_TEMP_DESTINATIONS_PROPERTY));
172 
173         ImmutableEndpoint endpoint2 = muleContext.getRegistry()
174             .lookupEndpointBuilder("endpoint2")
175             .buildOutboundEndpoint();
176         assertNotNull(endpoint2);
177         Filter filter2 = endpoint2.getFilter();
178         assertNotNull(filter2);
179         assertTrue(filter2 instanceof NotFilter);
180         Filter filter3 = ((NotFilter) filter2).getFilter();
181         assertNotNull(filter3);
182         assertTrue(filter3 instanceof JmsPropertyFilter);
183 
184         InboundEndpoint inboundEndpoint;
185 
186         if (variant.equals(ConfigVariant.FLOW))
187         {
188             inboundEndpoint = (InboundEndpoint) ((Flow) muleContext.getRegistry()
189                             .lookupObject("testService"))
190                             .getMessageSource();
191         }
192         else
193         {
194             inboundEndpoint = ((ServiceCompositeMessageSource) muleContext.getRegistry()
195                 .lookupService("testService")
196                 .getMessageSource()).getEndpoints().get(0);
197         }
198 
199         assertNotNull(inboundEndpoint);
200         assertEquals(1, inboundEndpoint.getProperties().size());
201         assertEquals("testCustomDurableName", inboundEndpoint.getProperty(JmsConstants.DURABLE_NAME_PROPERTY));
202     }
203 
204     @Test
205     public void testCustomTransactions() throws EndpointException, InitialisationException
206     {
207         ImmutableEndpoint endpoint3 = muleContext.getRegistry()
208             .lookupEndpointBuilder("endpoint3")
209             .buildInboundEndpoint();
210         assertNotNull(endpoint3);
211         TestTransactionFactory factory = (TestTransactionFactory) endpoint3.getTransactionConfig()
212             .getFactory();
213         assertNotNull(factory);
214         assertEquals("foo", factory.getValue());
215     }
216 
217     @Test
218     public void testXaTransactions() throws Exception
219     {
220         ImmutableEndpoint endpoint = muleContext.getRegistry()
221             .lookupEndpointBuilder("endpoint4")
222             .buildInboundEndpoint();
223         assertNotNull(endpoint);
224         assertEquals(XaTransactionFactory.class, endpoint.getTransactionConfig().getFactory().getClass());
225         assertEquals(MuleTransactionConfig.ACTION_ALWAYS_JOIN, endpoint.getTransactionConfig().getAction());
226     }
227 
228     @Test
229     public void testJndiConnectorAtributes() throws Exception
230     {
231         JmsConnector connector = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsJndiConnector");
232         assertNotNull(connector);
233 
234         assertEquals("org.mule.transport.jms.test.JmsTestContextFactory", connector.getJndiInitialFactory());
235         assertEquals("jndi://test", connector.getJndiProviderUrl());
236         assertEquals("jms/connectionFactory", connector.getConnectionFactoryJndiName());
237         assertEquals("org.mule.transport.jms.test.TestConnectionFactory", connector.getConnectionFactory()
238             .getClass()
239             .getName());
240         assertTrue(connector.isJndiDestinations());
241         assertTrue(connector.isForceJndiDestinations());
242         assertEquals("value", connector.getJndiProviderProperties().get("key"));
243         assertEquals("customValue", connector.getConnectionFactoryProperties().get("customProperty"));
244         assertEquals("customValue",
245             ((TestConnectionFactory) connector.getConnectionFactory()).getCustomProperty());
246     }
247 
248     @Test
249     public void testActiveMqConnectorConfig() throws Exception
250     {
251         JmsConnector c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsActiveMqConnector");
252         assertNotNull(c);
253 
254         assertEquals(1, c.getNumberOfConsumers());
255 
256         c = (JmsConnector) muleContext.getRegistry().lookupConnector("jmsActiveMqConnectorXa");
257         assertNotNull(c);
258 
259         assertEquals(1, c.getNumberOfConsumers());
260     }
261 }