View Javadoc

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