1   /*
2    * $Id: SedaServiceTestCase.java 11376 2008-03-16 17:44:10Z 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.model.seda;
12  
13  import org.mule.api.MuleRuntimeException;
14  import org.mule.component.DefaultJavaComponent;
15  import org.mule.object.PrototypeObjectFactory;
16  import org.mule.tck.AbstractMuleTestCase;
17  
18  import javax.resource.spi.work.Work;
19  import javax.resource.spi.work.WorkEvent;
20  import javax.resource.spi.work.WorkException;
21  
22  public class SedaServiceTestCase extends AbstractMuleTestCase // AbstractServiceTestCase
23  {
24      // Cannot extend AbstractServiceTestCase because of inconsistent behaviour. See
25      // MULE-2843
26  
27      // protected void doSetUp() throws Exception
28      // {
29      // service = new SedaService();
30      // service.setName("seda");
31      // service.setServiceFactory(new PrototypeObjectFactory(Object.class));
32      // service.setMuleContext(muleContext);
33      // service.setModel(new SedaModel());
34      // service.getModel().setMuleContext(muleContext);
35      // service.getModel().initialise();
36      // }
37      //
38      // protected void doTearDown() throws Exception
39      // {
40      // service = null;
41      //    }
42  
43      public void testSedaModelEventTimeoutDefault() throws Exception
44      {
45          SedaService service = new SedaService();
46          service.setName("test");
47          service.setComponent(new DefaultJavaComponent(new PrototypeObjectFactory(Object.class)));
48          service.setModel(new SedaModel());
49          service.setMuleContext(muleContext);
50          service.getModel().setMuleContext(muleContext);
51  
52          service.getModel().initialise();
53          service.initialise();
54  
55          assertNotNull(service.getQueueTimeout());
56          assertTrue(service.getQueueTimeout().intValue() != 0);
57      }
58  
59      public void testSpiWorkThrowableHandling() throws Exception
60      {
61          try
62          {
63              // getTestComponent() currently already returns a SedaService, but
64              // here we are safe-guarding for any future changes
65              SedaService service = new SedaService();
66              service.setName("test");
67              service.setComponent(new DefaultJavaComponent(new PrototypeObjectFactory(Object.class)));
68              service.setModel(new SedaModel());
69  
70              service.handleWorkException(getTestWorkEvent(), "workRejected");
71          }
72          catch (MuleRuntimeException mrex)
73          {
74              assertNotNull(mrex);
75              assertTrue(mrex.getCause().getClass() == Throwable.class);
76              assertEquals("testThrowable", mrex.getCause().getMessage());
77          }
78      }
79  
80      private WorkEvent getTestWorkEvent()
81      {
82          return new WorkEvent(this, // source
83              WorkEvent.WORK_REJECTED, getTestWork(), new WorkException(new Throwable("testThrowable")));
84      }
85  
86      private Work getTestWork()
87      {
88          return new Work()
89          {
90              public void release()
91              {
92                  // noop
93              }
94  
95              public void run()
96              {
97                  // noop
98              }
99          };
100     }
101 }