View Javadoc

1   /*
2    * $Id: QuartzNamespaceHandlerFlowTestCase.java 22586 2011-08-04 17:29:56Z svacas $
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.quartz.config;
12  
13  import static org.junit.Assert.assertEquals;
14  import static org.junit.Assert.assertNotNull;
15  import static org.junit.Assert.assertNull;
16  import static org.junit.Assert.assertTrue;
17  
18  import org.mule.api.endpoint.InboundEndpoint;
19  import org.mule.api.endpoint.OutboundEndpoint;
20  import org.mule.api.processor.MessageProcessor;
21  import org.mule.construct.Flow;
22  import org.mule.endpoint.DefaultInboundEndpoint;
23  import org.mule.tck.junit4.FunctionalTestCase;
24  import org.mule.transport.quartz.QuartzConnector;
25  import org.mule.transport.quartz.jobs.CustomJobConfig;
26  import org.mule.transport.quartz.jobs.CustomJobFromMessageConfig;
27  import org.mule.transport.quartz.jobs.EndpointPollingJob;
28  import org.mule.transport.quartz.jobs.EndpointPollingJobConfig;
29  import org.mule.transport.quartz.jobs.EventGeneratorJob;
30  import org.mule.transport.quartz.jobs.EventGeneratorJobConfig;
31  import org.mule.transport.quartz.jobs.ScheduledDispatchJob;
32  import org.mule.transport.quartz.jobs.ScheduledDispatchJobConfig;
33  
34  import java.util.List;
35  
36  import org.junit.Test;
37  import org.quartz.impl.StdScheduler;
38  
39  /**
40   * Tests the "quartz" namespace.
41   */
42  public class QuartzNamespaceHandlerFlowTestCase extends FunctionalTestCase
43  {
44      @Override
45      protected String getConfigResources()
46      {
47          return "quartz-namespace-config-flow.xml";
48      }
49  
50      @Test
51      public void testDefaultConfig() throws Exception
52      {
53          QuartzConnector c = (QuartzConnector) muleContext.getRegistry().lookupConnector(
54              "quartzConnectorDefaults");
55          assertNotNull(c);
56  
57          assertNotNull(c.getQuartzScheduler());
58          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
59          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
60          String defaultSchedulerName = "scheduler-" + muleContext.getConfiguration().getId();
61          assertEquals(defaultSchedulerName, scheduler.getSchedulerName());
62  
63          assertTrue(c.isConnected());
64          assertTrue(c.isStarted());
65      }
66  
67      @Test
68      public void testInjectedSchedulerBean() throws Exception
69      {
70          QuartzConnector c = (QuartzConnector) muleContext.getRegistry().lookupConnector("quartzConnector1");
71          assertNotNull(c);
72  
73          assertNotNull(c.getQuartzScheduler());
74          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
75          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
76          assertEquals("MuleScheduler1", scheduler.getSchedulerName());
77  
78          assertTrue(c.isConnected());
79          assertTrue(c.isStarted());
80      }
81  
82      @Test
83      public void testFactoryProperties() throws Exception
84      {
85          QuartzConnector c = (QuartzConnector) muleContext.getRegistry().lookupConnector("quartzConnector2");
86          assertNotNull(c);
87  
88          assertNotNull(c.getQuartzScheduler());
89          assertEquals(StdScheduler.class, c.getQuartzScheduler().getClass());
90          StdScheduler scheduler = (StdScheduler) c.getQuartzScheduler();
91          assertEquals("MuleScheduler2", scheduler.getSchedulerName());
92  
93          assertTrue(c.isConnected());
94          assertTrue(c.isStarted());
95      }
96  
97      @Test
98      public void testEndpoint1Config() throws Exception
99      {
100         Flow flow = (Flow) muleContext.getRegistry().lookupFlowConstruct("testService1");
101 
102         assertNotNull(flow);
103 
104         InboundEndpoint ep = (DefaultInboundEndpoint) flow.getMessageSource();
105         assertNotNull(ep);
106         assertNotNull(ep.getProperty("jobConfig"));
107         assertTrue(ep.getProperty("jobConfig") instanceof EventGeneratorJobConfig);
108         EventGeneratorJobConfig config = (EventGeneratorJobConfig) ep.getProperty("jobConfig");
109         assertEquals("foo", config.getPayload());
110     }
111 
112     @Test
113     public void testEndpoint2Config() throws Exception
114     {
115         Flow flow = (Flow) muleContext.getRegistry().lookupFlowConstruct("testService2");
116 
117         assertNotNull(flow);
118 
119         InboundEndpoint ep = (InboundEndpoint) flow.getMessageSource();
120         assertNotNull(ep.getProperty("jobConfig"));
121         assertTrue(ep.getProperty("jobConfig") instanceof EventGeneratorJobConfig);
122         EventGeneratorJobConfig config = (EventGeneratorJobConfig) ep.getProperty("jobConfig");
123         assertEquals("foo bar", config.getPayload());
124     }
125 
126     @Test
127     public void testEndpoint3Config() throws Exception
128     {
129         Flow flow = (Flow) muleContext.getRegistry().lookupFlowConstruct("testService3");
130 
131         assertNotNull(flow);
132         
133         OutboundEndpoint ep = (OutboundEndpoint) getMessageProcessors(flow).get(1);
134         
135         assertNotNull(ep.getProperty("jobConfig"));
136         assertTrue(ep.getProperty("jobConfig") instanceof CustomJobFromMessageConfig);
137         CustomJobFromMessageConfig config = (CustomJobFromMessageConfig) ep.getProperty("jobConfig");
138         assertEquals("header", config.getEvaluator());
139         assertEquals("jobConfig", config.getExpression());
140         assertNull(config.getCustomEvaluator());
141         // Test grabbing the Job instance
142     }
143 
144     @Test
145     public void testEndpoint4Config() throws Exception
146     {
147         Flow flow = (Flow) muleContext.getRegistry().lookupFlowConstruct("testService4");
148 
149         assertNotNull(flow);
150 
151         OutboundEndpoint ep = (OutboundEndpoint) getMessageProcessors(flow).get(1);
152 
153         assertNotNull(ep.getProperty("jobConfig"));
154         assertTrue(ep.getProperty("jobConfig") instanceof CustomJobConfig);
155         CustomJobConfig config = (CustomJobConfig) ep.getProperty("jobConfig");
156         assertTrue(config.getJob() instanceof EventGeneratorJob);
157     }
158 
159     @Test
160     public void testEndpoint5Config() throws Exception
161     {
162         Flow flow = (Flow) muleContext.getRegistry().lookupFlowConstruct("testService5");
163 
164         assertNotNull(flow);
165         
166         InboundEndpoint ep = (InboundEndpoint) flow.getMessageSource();
167 
168         assertNotNull(ep.getProperty("jobConfig"));
169         assertTrue(ep.getProperty("jobConfig") instanceof EndpointPollingJobConfig);
170         EndpointPollingJobConfig config = (EndpointPollingJobConfig) ep.getProperty("jobConfig");
171         assertEquals(EndpointPollingJob.class, config.getJobClass());
172         assertEquals("file:///N/drop-data/in", config.getEndpointRef());
173         assertEquals(4000, config.getTimeout());
174     }
175 
176     @Test
177     public void testEndpoint6Config() throws Exception
178     {
179         Flow flow = (Flow) muleContext.getRegistry().lookupFlowConstruct("testService6");
180 
181         assertNotNull(flow);
182         
183         OutboundEndpoint ep = (OutboundEndpoint) getMessageProcessors(flow).get(1);
184 
185         assertNotNull(ep.getProperty("jobConfig"));
186         assertTrue(ep.getProperty("jobConfig") instanceof ScheduledDispatchJobConfig);
187         ScheduledDispatchJobConfig config = (ScheduledDispatchJobConfig) ep.getProperty("jobConfig");
188         assertEquals(ScheduledDispatchJob.class, config.getJobClass());
189         assertEquals("scheduledDispatchEndpoint", config.getEndpointRef());
190     }
191 
192     private List<MessageProcessor> getMessageProcessors(Flow flow)
193     {
194         return flow.getMessageProcessors();
195     }
196 
197 }