View Javadoc

1   /*
2    * $Id: ServiceTestCase.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.service;
12  
13  import org.mule.api.endpoint.InboundEndpoint;
14  import org.mule.api.model.Model;
15  import org.mule.api.registry.MuleRegistry;
16  import org.mule.api.service.Service;
17  import org.mule.api.source.CompositeMessageSource;
18  import org.mule.api.transport.Connector;
19  import org.mule.config.QueueProfile;
20  import org.mule.model.seda.SedaModel;
21  import org.mule.model.seda.SedaService;
22  import org.mule.tck.AbstractMuleTestCase;
23  import org.mule.tck.testmodels.mule.TestConnector;
24  import org.mule.transport.AbstractConnector;
25  
26  public class ServiceTestCase extends AbstractMuleTestCase
27  {
28      private Connector testConnector;
29      private Service service;
30  
31      @Override
32      protected void doSetUp() throws Exception
33      {
34          super.doSetUp();
35  
36          testConnector = new TestConnector(muleContext);
37          testConnector.setName("customTestConnector");
38          muleContext.getRegistry().registerConnector(testConnector);
39  
40          InboundEndpoint inboundEndpoint1 = muleContext.getEndpointFactory().getInboundEndpoint(
41              "test://test1?connector=customTestConnector");
42          InboundEndpoint inboundEndpoint2 = muleContext.getEndpointFactory().getInboundEndpoint(
43              "test://test2?connector=customTestConnector");
44  
45          service = new SedaService(muleContext);
46          service.setName("testService");
47          ((CompositeMessageSource) service.getMessageSource()).addSource(inboundEndpoint1);
48          ((CompositeMessageSource) service.getMessageSource()).addSource(inboundEndpoint2);
49          Model model = new SedaModel();
50          model.setMuleContext(muleContext);
51          model.initialise();
52          service.setModel(model);
53          ((SedaService) service).setQueueProfile(new QueueProfile());
54          muleContext.getRegistry().registerService(service);
55  
56      }
57  
58      @Override
59      protected void doTearDown() throws Exception
60      {
61          muleContext.getRegistry().unregisterObject(service.getName(), MuleRegistry.LIFECYCLE_BYPASS_FLAG);
62      }
63  
64      public void testUnregisterListenersOnServiceDisposal() throws Exception
65      {
66          // Start muleContext, this starts connectors and services
67          muleContext.start();
68  
69          // Assert that connector has two receivers registered, one for each endpoint
70          assertEquals(2, ((AbstractConnector) testConnector).getReceivers().size());
71  
72          service.stop();
73          service.dispose();
74  
75          // Assert that connector has no receivers registered after service disposal
76          assertEquals(0, ((AbstractConnector) testConnector).getReceivers().size());
77      }
78  
79      public void testUnregisterListenersOnServiceStop() throws Exception
80      {
81  
82          // Start muleContext, this starts connectors and services
83          muleContext.start();
84  
85          // Assert that connector has two receivers registered, one for each endpoint
86          assertEquals(2, ((AbstractConnector) testConnector).getReceivers().size());
87  
88          service.stop();
89  
90          // Assert that connector has no receivers registered after service disposal
91          assertEquals(0, ((AbstractConnector) testConnector).getReceivers().size());
92      }
93  }