View Javadoc

1   /*
2    * $Id: MuleTestNamespaceTestCase.java 22449 2011-07-19 07:40:43Z justin.calleja $
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  package org.mule.test.tck;
11  
12  import static org.junit.Assert.assertEquals;
13  import static org.junit.Assert.assertFalse;
14  import static org.junit.Assert.assertNotNull;
15  import static org.junit.Assert.assertNull;
16  import static org.junit.Assert.assertTrue;
17  
18  import java.io.IOException;
19  import java.util.Arrays;
20  import java.util.Collection;
21  
22  import org.junit.Test;
23  import org.junit.runners.Parameterized.Parameters;
24  import org.mule.api.transport.Connector;
25  import org.mule.tck.AbstractServiceAndFlowTestCase;
26  import org.mule.tck.functional.CounterCallback;
27  import org.mule.tck.functional.FunctionalTestComponent;
28  import org.mule.tck.functional.ResponseWriterCallback;
29  import org.mule.tck.testmodels.mule.TestConnector;
30  import org.mule.transport.ConfigurableKeyedObjectPool;
31  import org.mule.transport.ConfigurableKeyedObjectPoolFactory;
32  import org.mule.transport.DefaultConfigurableKeyedObjectPool;
33  import org.mule.transport.DefaultConfigurableKeyedObjectPoolFactory;
34  
35  public class MuleTestNamespaceTestCase extends AbstractServiceAndFlowTestCase
36  {
37      public MuleTestNamespaceTestCase(ConfigVariant variant, String configResources)
38      {
39          super(variant, configResources);
40      }
41      
42      @Parameters
43      public static Collection<Object[]> parameters()
44      {
45          return Arrays.asList(new Object[][]{
46              {ConfigVariant.SERVICE, "test-namespace-config-service.xml"},
47              {ConfigVariant.FLOW, "test-namespace-config-flow.xml"}
48          });
49      }
50  
51      @Test
52      public void testComponent1Config() throws Exception
53      {
54          Object object = getComponent("testService1");
55          assertNotNull(object);
56          assertTrue(object instanceof FunctionalTestComponent);
57          FunctionalTestComponent ftc = (FunctionalTestComponent) object;
58  
59          assertFalse(ftc.isEnableMessageHistory());
60          assertFalse(ftc.isEnableNotifications());
61          assertNull(ftc.getAppendString());
62          assertEquals("Foo Bar Car Jar", ftc.getReturnData());
63          assertNotNull(ftc.getEventCallback());
64          assertTrue(ftc.getEventCallback() instanceof CounterCallback);
65      }
66  
67      @Test
68      public void testComponent2Config() throws Exception
69      {
70          String testData = loadResourceAsString("test-data.txt");
71          Object object = getComponent("testService2");
72          assertNotNull(object);
73          assertTrue(object instanceof FunctionalTestComponent);
74          FunctionalTestComponent ftc = (FunctionalTestComponent) object;
75  
76          assertTrue(ftc.isThrowException());
77          assertNotNull(ftc.getExceptionToThrow());
78          assertTrue(ftc.getExceptionToThrow().isAssignableFrom(IOException.class));
79          assertEquals("boom", ftc.getExceptionText());
80  
81          assertEquals(testData, ftc.getReturnData());
82  
83          assertTrue(ftc.isEnableMessageHistory());
84          assertTrue(ftc.isEnableNotifications());
85          assertNull(ftc.getAppendString());
86          assertNotNull(ftc.getEventCallback());
87          assertTrue(ftc.getEventCallback() instanceof ResponseWriterCallback);
88      }
89  
90      @Test
91      public void testComponent3Config() throws Exception
92      {
93          Object object = getComponent("testService3");
94          assertNotNull(object);
95          assertTrue(object instanceof FunctionalTestComponent);
96          FunctionalTestComponent ftc = (FunctionalTestComponent) object;
97  
98          assertFalse(ftc.isEnableMessageHistory());
99          assertTrue(ftc.isEnableNotifications());
100         assertEquals(" #[mule:context.serviceName]", ftc.getAppendString());
101         assertNull(ftc.getReturnData());
102         assertNull(ftc.getEventCallback());
103     }
104 
105     @Test
106     public void testConnectorUsingDefaultDispatcherPoolFactory()
107     {
108         Connector connector = muleContext.getRegistry().lookupConnector("testConnectorWithDefaultFactory");
109 
110         assertTrue(connector instanceof TestConnector);
111         TestConnector testConnector = (TestConnector) connector;
112         assertEquals(DefaultConfigurableKeyedObjectPoolFactory.class, testConnector.getDispatcherPoolFactory().getClass());
113         assertEquals(DefaultConfigurableKeyedObjectPool.class, testConnector.getDispatchers().getClass());
114     }
115 
116     @Test
117     public void testConnectorUsingOverriddenDispatcherPoolFactory()
118     {
119         Connector connector = muleContext.getRegistry().lookupConnector("testConnectorWithOverriddenFactory");
120 
121         assertTrue(connector instanceof TestConnector);
122         TestConnector testConnector = (TestConnector) connector;
123         assertEquals(StubDispatcherPoolFactory.class, testConnector.getDispatcherPoolFactory().getClass());
124         assertEquals(StubConfigurableKeyedObjectPool.class, testConnector.getDispatchers().getClass());
125     }
126 
127     public static class StubConfigurableKeyedObjectPool extends DefaultConfigurableKeyedObjectPool
128     {
129         // no custom methods
130     }
131 
132     public static class StubDispatcherPoolFactory implements ConfigurableKeyedObjectPoolFactory
133     {
134         @Override
135         public ConfigurableKeyedObjectPool createObjectPool()
136         {
137             return new StubConfigurableKeyedObjectPool();
138         }
139     }
140 }