1   /*
2    * $Id: JmsMuleSideDurableTopicXATxTestCase.java 12181 2008-06-26 20:05:55Z dirk.olmes $
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  package org.mule.transport.jms.integration;
11  
12  import org.mule.api.MuleMessage;
13  import org.mule.module.client.MuleClient;
14  
15  /**
16   * Testing durable topic
17   * with XA transactions
18   */
19  public class JmsMuleSideDurableTopicXATxTestCase extends AbstractJmsFunctionalTestCase
20  {
21  
22      public static final String CONNECTOR1_NAME = "jmsConnectorC1";
23  
24      protected String getConfigResources()
25      {
26          return "providers/activemq/jms-muleside-durable-topic-xa-tx.xml";
27      }
28  
29      public void testMuleXaTopic() throws Exception
30      {
31          // There is a need to guarantee that XaMessageTopicReceiver connected to topic
32          Thread.sleep(3000);
33          
34          MuleMessage result = null;
35          MuleClient client = new MuleClient();
36          client.dispatch("vm://in", DEFAULT_INPUT_MESSAGE, null);
37          result = client.request("vm://out", TIMEOUT);
38          assertNotNull(result);
39          result = client.request("vm://out", TIMEOUT);
40          assertNotNull(result);
41          result = client.request("vm://out", SMALL_TIMEOUT);
42          assertNull(result);
43  
44          muleContext.getRegistry().lookupConnector(CONNECTOR1_NAME).stop();
45          assertEquals(muleContext.getRegistry().lookupConnector(CONNECTOR1_NAME).isStarted(), false);
46          logger.info(CONNECTOR1_NAME + " is stopped");
47          client.dispatch("vm://in", DEFAULT_INPUT_MESSAGE, null);
48          Thread.sleep(1000);
49          muleContext.getRegistry().lookupConnector(CONNECTOR1_NAME).start();
50          Thread.sleep(1000);
51          logger.info(CONNECTOR1_NAME + " is started");
52          result = client.request("vm://out", TIMEOUT);
53          assertNotNull(result);
54          logger.info("Received " + result.getPayload());
55          result = client.request("vm://out", TIMEOUT);
56          assertNotNull(result);
57          logger.info("!Received " + result.getPayload());
58          result = client.request("vm://out", SMALL_TIMEOUT);
59          assertNull(result);
60      }
61  }