1   /*
2    * $$Id: ServiceTestCase.java 12237 2008-07-04 04:35:49Z dfeist $$
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.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.registry.Registry;
15  import org.mule.api.service.Service;
16  import org.mule.api.transport.Connector;
17  import org.mule.config.QueueProfile;
18  import org.mule.model.seda.SedaModel;
19  import org.mule.model.seda.SedaService;
20  import org.mule.tck.AbstractMuleTestCase;
21  import org.mule.tck.testmodels.mule.TestConnector;
22  import org.mule.transport.AbstractConnector;
23  
24  public class ServiceTestCase extends AbstractMuleTestCase
25  {
26  
27      private Connector testConnector;
28      private Service service;
29  
30      // @Override
31      protected void doSetUp() throws Exception
32      {
33          super.doSetUp();
34          Registry registry = muleContext.getRegistry();
35  
36          testConnector = new TestConnector();
37          testConnector.setName("customTestConnector");
38          registry.registerConnector(testConnector);
39  
40          InboundEndpoint inboundEndpoint1 = registry.lookupEndpointFactory().getInboundEndpoint(
41              "test://test1?connector=customTestConnector");
42          InboundEndpoint inboundEndpoint2 = registry.lookupEndpointFactory().getInboundEndpoint(
43              "test://test2?connector=customTestConnector");
44  
45          service = new SedaService();
46          service.setName("testService");
47          service.getInboundRouter().addEndpoint(inboundEndpoint1);
48          service.getInboundRouter().addEndpoint(inboundEndpoint2);
49          service.setModel(new SedaModel());
50          ((SedaService) service).setQueueProfile(new QueueProfile());
51          registry.registerService(service);
52  
53      }
54  
55      public void testUnregisterListenersOnServiceDisposal() throws Exception
56      {
57          // Start muleContext, this starts connectors and services
58          muleContext.start();
59  
60          // Assert that connector has two receivers registered, one for each endpoint
61          assertEquals(2, ((AbstractConnector) testConnector).getReceivers().size());
62  
63          service.dispose();
64  
65          // Assert that connector has no receivers registered after service disposal
66          assertEquals(0, ((AbstractConnector) testConnector).getReceivers().size());
67  
68      }
69  
70      public void testUnregisterListenersOnServiceStop() throws Exception
71      {
72  
73          // Start muleContext, this starts connectors and services
74          muleContext.start();
75  
76          // Assert that connector has two receivers registered, one for each endpoint
77          assertEquals(2, ((AbstractConnector) testConnector).getReceivers().size());
78  
79          service.stop();
80  
81          // Assert that connector has no receivers registered after service disposal
82          assertEquals(0, ((AbstractConnector) testConnector).getReceivers().size());
83  
84      }
85  
86  }