View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.transport.quartz.config;
8   
9   import org.mule.api.endpoint.InboundEndpoint;
10  import org.mule.api.endpoint.OutboundEndpoint;
11  import org.mule.api.routing.OutboundRouterCollection;
12  import org.mule.api.service.Service;
13  import org.mule.routing.outbound.AbstractOutboundRouter;
14  import org.mule.service.ServiceCompositeMessageSource;
15  import org.mule.tck.junit4.FunctionalTestCase;
16  import org.mule.transport.quartz.QuartzConnector;
17  import org.mule.transport.quartz.jobs.CustomJobConfig;
18  import org.mule.transport.quartz.jobs.CustomJobFromMessageConfig;
19  import org.mule.transport.quartz.jobs.EndpointPollingJob;
20  import org.mule.transport.quartz.jobs.EndpointPollingJobConfig;
21  import org.mule.transport.quartz.jobs.EventGeneratorJob;
22  import org.mule.transport.quartz.jobs.EventGeneratorJobConfig;
23  import org.mule.transport.quartz.jobs.ScheduledDispatchJob;
24  import org.mule.transport.quartz.jobs.ScheduledDispatchJobConfig;
25  
26  import org.junit.Test;
27  import org.quartz.impl.StdScheduler;
28  
29  import static org.junit.Assert.assertEquals;
30  import static org.junit.Assert.assertNotNull;
31  import static org.junit.Assert.assertNull;
32  import static org.junit.Assert.assertTrue;
33  
34  
35  /**
36   * Tests the "quartz" namespace.
37   */
38  public class QuartzNamespaceHandlerTestCase extends FunctionalTestCase
39  {
40  
41      @Override
42      protected String getConfigResources()
43      {
44          return "quartz-namespace-config.xml";
45      }
46  
47      @Test
48      public void testDefaultConfig() throws Exception
49      {
50          QuartzConnector c = (QuartzConnector)muleContext.getRegistry().lookupConnector("quartzConnectorDefaults");
51          assertNotNull(c);
52          
53          assertNotNull(c.getQuartzScheduler());
54          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
55          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
56          String defaultSchedulerName = "scheduler-" + muleContext.getConfiguration().getId();
57          assertEquals(defaultSchedulerName, scheduler.getSchedulerName());
58          
59          assertTrue(c.isConnected());
60          assertTrue(c.isStarted());
61      }
62      
63      @Test
64      public void testInjectedSchedulerBean() throws Exception
65      {
66          QuartzConnector c = (QuartzConnector)muleContext.getRegistry().lookupConnector("quartzConnector1");
67          assertNotNull(c);
68          
69          assertNotNull(c.getQuartzScheduler());
70          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
71          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
72          assertEquals("MuleScheduler1", scheduler.getSchedulerName());
73          
74          assertTrue(c.isConnected());
75          assertTrue(c.isStarted());
76      }
77      
78      @Test
79      public void testFactoryProperties() throws Exception
80      {
81          QuartzConnector c = (QuartzConnector)muleContext.getRegistry().lookupConnector("quartzConnector2");
82          assertNotNull(c);
83          
84          assertNotNull(c.getQuartzScheduler());
85          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
86          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
87          assertEquals("MuleScheduler2", scheduler.getSchedulerName());
88          
89          assertTrue(c.isConnected());
90          assertTrue(c.isStarted());
91      }
92  
93      @Test
94      public void testEndpoint1Config() throws Exception
95      {
96          Service service = muleContext.getRegistry().lookupService("testService1");
97          assertNotNull(service);
98  
99          InboundEndpoint ep = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoint("qEP1");
100         assertNotNull(ep);
101         assertNotNull(ep.getProperty("jobConfig"));
102         assertTrue(ep.getProperty("jobConfig") instanceof EventGeneratorJobConfig);
103         EventGeneratorJobConfig config = (EventGeneratorJobConfig)ep.getProperty("jobConfig");
104         assertEquals("foo", config.getPayload());
105     }
106 
107     @Test
108     public void testEndpoint2Config() throws Exception
109     {
110         Service service = muleContext.getRegistry().lookupService("testService2");
111         assertNotNull(service);
112 
113         InboundEndpoint ep = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoint("qEP2");
114         assertNotNull(ep.getProperty("jobConfig"));
115         assertTrue(ep.getProperty("jobConfig") instanceof EventGeneratorJobConfig);
116         EventGeneratorJobConfig config = (EventGeneratorJobConfig)ep.getProperty("jobConfig");
117         assertEquals("foo bar", config.getPayload());
118     }
119 
120     @Test
121     public void testEndpoint3Config() throws Exception
122     {
123         Service service = muleContext.getRegistry().lookupService("testService3");
124         assertNotNull(service);
125 
126         OutboundEndpoint ep = (OutboundEndpoint) ((AbstractOutboundRouter)getOutboundRouterCollection(service).getRoutes().get(0)).getRoute("qEP3");
127         assertNotNull(ep.getProperty("jobConfig"));
128         assertTrue(ep.getProperty("jobConfig") instanceof CustomJobFromMessageConfig);
129         CustomJobFromMessageConfig config = (CustomJobFromMessageConfig)ep.getProperty("jobConfig");
130         assertEquals("header", config.getEvaluator());
131         assertEquals("jobConfig", config.getExpression());
132         assertNull(config.getCustomEvaluator());
133         //Test grabbing the Job instance
134     }
135 
136     @Test
137     public void testEndpoint4Config() throws Exception
138     {
139         Service service = muleContext.getRegistry().lookupService("testService4");
140         assertNotNull(service);
141 
142         OutboundEndpoint ep = (OutboundEndpoint) ((AbstractOutboundRouter)getOutboundRouterCollection(service).getRoutes().get(0)).getRoute("qEP4");
143 
144         assertNotNull(ep.getProperty("jobConfig"));
145         assertTrue(ep.getProperty("jobConfig") instanceof CustomJobConfig);
146         CustomJobConfig config = (CustomJobConfig)ep.getProperty("jobConfig");
147         assertTrue(config.getJob() instanceof EventGeneratorJob);
148     }
149 
150     @Test
151     public void testEndpoint5Config() throws Exception
152     {
153         Service service = muleContext.getRegistry().lookupService("testService5");
154         assertNotNull(service);
155 
156         InboundEndpoint ep = ((ServiceCompositeMessageSource) service.getMessageSource()).getEndpoint("qEP5");
157         assertNotNull(ep.getProperty("jobConfig"));
158         assertTrue(ep.getProperty("jobConfig") instanceof EndpointPollingJobConfig);
159         EndpointPollingJobConfig config = (EndpointPollingJobConfig)ep.getProperty("jobConfig");
160         assertEquals(EndpointPollingJob.class, config.getJobClass());
161         assertEquals("file:///N/drop-data/in", config.getEndpointRef());
162         assertEquals(4000, config.getTimeout());
163     }
164 
165     @Test
166     public void testEndpoint6Config() throws Exception
167     {
168         Service service = muleContext.getRegistry().lookupService("testService6");
169         assertNotNull(service);
170 
171         OutboundEndpoint ep = (OutboundEndpoint) ((AbstractOutboundRouter) getOutboundRouterCollection(
172             service).getRoutes().get(0)).getRoute("qEP6");
173         
174         assertNotNull(ep.getProperty("jobConfig"));
175         assertTrue(ep.getProperty("jobConfig") instanceof ScheduledDispatchJobConfig);
176         ScheduledDispatchJobConfig config = (ScheduledDispatchJobConfig)ep.getProperty("jobConfig");
177         assertEquals(ScheduledDispatchJob.class, config.getJobClass());
178         assertEquals("scheduledDispatchEndpoint", config.getEndpointRef());
179     }
180     
181     private OutboundRouterCollection getOutboundRouterCollection(Service service)
182     {
183         return (OutboundRouterCollection) service.getOutboundMessageProcessor();
184     }
185     
186 }