View Javadoc

1   /*
2    * $Id: MuleEndpointConfigurationServiceTestCase.java 22448 2011-07-19 06:58:47Z dirk.olmes $
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.test.integration;
12  
13  import org.mule.DefaultMuleEvent;
14  import org.mule.DefaultMuleMessage;
15  import org.mule.MessageExchangePattern;
16  import org.mule.api.MuleEvent;
17  import org.mule.api.endpoint.ImmutableEndpoint;
18  import org.mule.api.endpoint.InboundEndpoint;
19  import org.mule.api.endpoint.OutboundEndpoint;
20  import org.mule.api.routing.OutboundRouter;
21  import org.mule.api.routing.OutboundRouterCollection;
22  import org.mule.api.service.Service;
23  import org.mule.module.xml.transformer.ObjectToXml;
24  import org.mule.service.ServiceCompositeMessageSource;
25  import org.mule.tck.MuleTestUtils;
26  import org.mule.tck.junit4.FunctionalTestCase;
27  import org.mule.transport.tcp.TcpConnector;
28  import org.mule.transport.vm.VMConnector;
29  
30  import org.junit.Test;
31  
32  import static org.junit.Assert.assertEquals;
33  import static org.junit.Assert.assertFalse;
34  import static org.junit.Assert.assertNotNull;
35  import static org.junit.Assert.assertTrue;
36  
37  /**
38   * Test the creation of various targets from the service descriptor
39   */
40  public class MuleEndpointConfigurationServiceTestCase extends FunctionalTestCase
41  {
42      @Override
43      protected String getConfigResources()
44      {
45          return "org/mule/test/integration/test-endpoints-config-service.xml";
46      }
47  
48      @Test
49      public void testComponent3RouterEndpoints() throws Exception
50      {
51          Service service = muleContext.getRegistry().lookupService("TestComponent3");
52  
53          assertNotNull(service);
54          OutboundRouterCollection outboundRouter = (OutboundRouterCollection) service.getOutboundMessageProcessor();
55          assertNotNull(outboundRouter);
56          assertEquals(2, outboundRouter.getRoutes().size());
57          // first Router
58          OutboundRouter router1 = (OutboundRouter) outboundRouter.getRoutes().get(0);
59          assertEquals(1, router1.getRoutes().size());
60          ImmutableEndpoint endpoint = (ImmutableEndpoint) router1.getRoutes().get(0);
61          assertEquals("tcp", endpoint.getConnector().getProtocol().toLowerCase());
62          assertEquals("tcp://localhost:60201", endpoint.getEndpointURI().getAddress());
63          assertTrue(endpoint instanceof OutboundEndpoint);
64  
65          // second Router
66          OutboundRouter router2 = (OutboundRouter) outboundRouter.getRoutes().get(1);
67          assertEquals(2, router2.getRoutes().size());
68          endpoint = (ImmutableEndpoint) router2.getRoutes().get(0);
69          assertEquals("udp", endpoint.getConnector().getProtocol().toLowerCase());
70          assertEquals("udp://localhost:56731", endpoint.getEndpointURI().getAddress());
71          assertTrue(endpoint instanceof OutboundEndpoint);
72          endpoint = (ImmutableEndpoint) router2.getRoutes().get(1);
73          assertEquals("test", endpoint.getConnector().getProtocol().toLowerCase());
74          assertEquals("test.queue2", endpoint.getEndpointURI().getAddress());
75          assertTrue(endpoint instanceof OutboundEndpoint);
76  
77      }
78  
79      @Test
80      public void testComponent4InboundEndpoint() throws Exception
81      {
82          Service service = muleContext.getRegistry().lookupService("TestComponent4");
83  
84          assertNotNull(service);
85          assertNotNull(((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoints());
86          assertEquals(1,
87              ((ServiceCompositeMessageSource) (service).getMessageSource()).getEndpoints().size());
88          ImmutableEndpoint endpoint = ((ServiceCompositeMessageSource) (service).getMessageSource()).getEndpoints()
89              .get(0);
90          assertNotNull(endpoint);
91          assertEquals(VMConnector.VM, endpoint.getConnector().getProtocol().toLowerCase());
92          assertEquals("queue4", endpoint.getEndpointURI().getAddress());
93          assertFalse(endpoint.getTransformers().isEmpty());
94          assertTrue(endpoint.getTransformers().get(0) instanceof ObjectToXml);
95          assertTrue(endpoint instanceof InboundEndpoint);
96      }
97  
98      @Test
99      public void testComponent4OutboundEndpoint() throws Exception
100     {
101         Service service = muleContext.getRegistry().lookupService("TestComponent4");
102 
103         assertNotNull(service);
104         OutboundRouterCollection outboundRouter = (OutboundRouterCollection) service.getOutboundMessageProcessor();
105         assertNotNull(outboundRouter);
106         assertEquals(1, outboundRouter.getRoutes().size());
107         // first Router
108         OutboundRouter router = (OutboundRouter) outboundRouter.getRoutes().get(0);
109         assertEquals(1, router.getRoutes().size());
110         ImmutableEndpoint endpoint = (ImmutableEndpoint) router.getRoutes().get(0);
111         assertEquals("udp", endpoint.getConnector().getProtocol().toLowerCase());
112         assertEquals("udp://localhost:56731", endpoint.getEndpointURI().getAddress());
113         // cannot get this to work and get axis tests to work
114         // (axis seems to use undefined transformers in some strange way)
115         // assertTrue(TransformerUtils.isDefined(endpoint.getTransformers()));
116         assertTrue(endpoint instanceof OutboundEndpoint);
117     }
118 
119     @Test
120     public void testComponent5RouterEndpoints() throws Exception
121     {
122         Service service = muleContext.getRegistry().lookupService("TestComponent5");
123 
124         assertNotNull(service);
125         OutboundRouterCollection outboundRouter = (OutboundRouterCollection) service.getOutboundMessageProcessor();
126         assertNotNull(outboundRouter);
127         assertEquals(1, outboundRouter.getRoutes().size());
128         // first Router
129         OutboundRouter router = (OutboundRouter) outboundRouter.getRoutes().get(0);
130         assertEquals(1, router.getRoutes().size());
131         ImmutableEndpoint endpoint = (ImmutableEndpoint) router.getRoutes().get(0);
132         assertEquals(TcpConnector.TCP, endpoint.getConnector().getProtocol().toLowerCase());
133         assertEquals("tcp://localhost:45431", endpoint.getEndpointURI().getAddress());
134         // cannot get this to work and get axis tests to work
135         // (axis seems to use undefined transformers in some strange way)
136         // assertTrue(TransformerUtils.isDefined(endpoint.getTransformers()));
137         assertTrue(endpoint instanceof OutboundEndpoint);
138     }
139 
140     @Test
141     public void testEndpointFromURI() throws Exception
142     {
143         ImmutableEndpoint ep = muleContext.getEndpointFactory().getInboundEndpoint(
144             "test://hello?exchangePattern=request-response&responseTimeout=2002&connector=testConnector1");
145         assertEquals(MessageExchangePattern.REQUEST_RESPONSE, ep.getExchangePattern());
146         assertEquals(2002, ep.getResponseTimeout());
147         assertTrue(ep instanceof InboundEndpoint);
148 
149         // Test MuleEvent timeout proporgation
150         MuleEvent event = new DefaultMuleEvent(new DefaultMuleMessage("hello", muleContext),
151             (InboundEndpoint) ep, MuleTestUtils.getTestSession(muleContext));
152         assertEquals(2002, event.getTimeout());
153 
154         ImmutableEndpoint ep2 = muleContext.getEndpointFactory().getInboundEndpoint(
155             "test://hello?connector=testConnector1");
156 
157         event = new DefaultMuleEvent(new DefaultMuleMessage("hello", muleContext), (InboundEndpoint) ep2,
158             MuleTestUtils.getTestSession(muleContext));
159         // default event timeout set in the test config file
160         assertEquals(1001, event.getTimeout());
161     }
162 }