View Javadoc
1   /*
2    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
3    * The software in this package is published under the terms of the CPAL v1.0
4    * license, a copy of which has been included with this distribution in the
5    * LICENSE.txt file.
6    */
7   package org.mule.test.usecases;
8   
9   import org.mule.DefaultMuleMessage;
10  import org.mule.api.MuleMessage;
11  import org.mule.module.client.MuleClient;
12  import org.mule.tck.junit4.FunctionalTestCase;
13  import org.mule.tck.junit4.rule.DynamicPort;
14  import org.mule.transport.NullPayload;
15  
16  import org.junit.ClassRule;
17  import org.junit.Test;
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertFalse;
21  import static org.junit.Assert.assertNotNull;
22  import static org.junit.Assert.assertNull;
23  
24  /**
25   * see MULE-2721
26   */ 
27  public class ReplyToTestCase extends FunctionalTestCase
28  {
29      
30      private static final long RECEIVE_DELAY = 3000;
31  
32      @ClassRule
33      public static DynamicPort dynamicPort1 = new DynamicPort("port1");
34  
35      @ClassRule
36      public static DynamicPort dynamicPort2 = new DynamicPort("port2");
37  
38      public ReplyToTestCase()
39      {
40          setDisposeContextPerClass(true);
41      }
42  
43      @Override
44      protected String getConfigResources()
45      {
46          return "org/mule/test/usecases/replyto.xml";
47      }
48  
49      @Test
50      public void testVm() throws Exception
51      {
52          MuleClient client = new MuleClient(muleContext);
53          
54          MuleMessage msg = new DefaultMuleMessage("testing", muleContext);
55          msg.setReplyTo("ReplyTo");
56          
57          // Send asynchronous request
58          client.dispatch("EchoVm", msg, null);
59  
60          // Wait for asynchronous response
61          MuleMessage result = client.request("ReplyTo", RECEIVE_DELAY);
62          assertNotNull("Result is null", result);
63          assertFalse("Result is null", result.getPayload() instanceof NullPayload);
64          assertEquals("testing", result.getPayload());
65  
66          // Make sure there are no more responses
67          result = client.request("ReplyTo", RECEIVE_DELAY);
68          assertNull("Extra message received at replyTo destination: " + result, result);        
69      }
70  
71      @Test
72      public void testAxis() throws Exception
73      {
74          MuleClient client = new MuleClient(muleContext);
75          
76          MuleMessage msg = new DefaultMuleMessage("testing", muleContext);
77          msg.setReplyTo("ReplyTo");
78          
79          // Send asynchronous request
80          client.dispatch("EchoAxisSend", msg, null);
81  
82          // Wait for asynchronous response
83          MuleMessage result = client.request("ReplyTo", RECEIVE_DELAY);
84          assertNotNull("Result is null", result);
85          assertFalse("Result is null", result.getPayload() instanceof NullPayload);
86          assertEquals("testing", result.getPayload());
87  
88          // Make sure there are no more responses
89          result = client.request("ReplyTo", RECEIVE_DELAY);
90          assertNull("Extra message received at replyTo destination: " + result, result);        
91      }
92  
93      @Test
94      public void testCxf() throws Exception
95      {
96          MuleClient client = new MuleClient(muleContext);
97          
98          MuleMessage msg = new DefaultMuleMessage("testing", muleContext);
99          msg.setReplyTo("ReplyTo");
100         
101         // Send asynchronous request
102         client.dispatch("EchoCxfSend", msg, null);
103 
104         // Wait for asynchronous response
105         MuleMessage result = client.request("ReplyTo", RECEIVE_DELAY);
106         assertNotNull("Result is null", result);
107         assertFalse("Result is null", result.getPayload() instanceof NullPayload);
108         assertEquals("testing", result.getPayload());
109 
110         // Make sure there are no more responses
111         result = client.request("ReplyTo", RECEIVE_DELAY);
112         assertNull("Extra message received at replyTo destination: " + result, result);        
113     }
114 }