View Javadoc

1   /*
2    * $Id: FixedHostRmiClienSocketFactoryTestCase.java 23242 2011-10-22 15:27:31Z svacas $
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.management.agents;
12  
13  import org.mule.module.management.agent.FixedHostRmiClientSocketFactory;
14  import org.mule.tck.junit4.AbstractMuleTestCase;
15  import org.mule.tck.junit4.rule.DynamicPort;
16  
17  import java.io.IOException;
18  import java.net.InetAddress;
19  import java.net.InetSocketAddress;
20  import java.net.ServerSocket;
21  import java.net.Socket;
22  import java.nio.channels.ServerSocketChannel;
23  
24  import org.junit.After;
25  import org.junit.Before;
26  import org.junit.Rule;
27  import org.junit.Test;
28  
29  import static org.junit.Assert.assertEquals;
30  
31  public class FixedHostRmiClienSocketFactoryTestCase extends AbstractMuleTestCase
32  {
33  
34      @Rule
35      public DynamicPort dynamicPort = new DynamicPort("port1");
36  
37      protected volatile ServerSocket serverSocket;
38  
39      @After
40      public void stopServerSocke() throws IOException
41      {
42          if (null != serverSocket)
43          {
44              serverSocket.close();
45          }
46      }
47  
48      @Test
49      public void testHostConstructorOverride() throws Exception
50      {
51          final String overrideHost = "127.0.0.1";
52          final FixedHostRmiClientSocketFactory factory = new FixedHostRmiClientSocketFactory(overrideHost);
53          assertEquals(overrideHost, factory.getOverrideHost());
54  
55          final Socket clientSocket = factory.createSocket("www.example.com", dynamicPort.getNumber());
56          final InetAddress address = clientSocket.getInetAddress();
57          final String socketHost = address.getHostAddress();
58          assertEquals(overrideHost, socketHost);
59      }
60  
61      /**
62       * Setter property may be used to dynamically switch the client socket host.
63       */
64      @Test
65      public void testHostSetterOverride() throws Exception
66      {
67          final String overrideHost = "127.0.0.1";
68          final FixedHostRmiClientSocketFactory factory =
69                  new FixedHostRmiClientSocketFactory();
70          factory.setOverrideHost(overrideHost);
71  
72          assertEquals(overrideHost, factory.getOverrideHost());
73          Socket clientSocket = null;
74          try
75          {
76              clientSocket = factory.createSocket("www.example.com", dynamicPort.getNumber());
77              final InetAddress address = clientSocket.getInetAddress();
78              final String socketHost = address.getHostAddress();
79              assertEquals(overrideHost, socketHost);
80          }
81          finally
82          {
83              if (null != clientSocket && !clientSocket.isClosed())
84              {
85                  clientSocket.close();
86              }
87          }
88      }
89  
90  
91      /**
92       * Simple socket to have something to ping.
93       */
94      @Before
95      public void setupDummyServer() throws IOException
96      {
97          ServerSocketChannel ssChannel = ServerSocketChannel.open();
98          ssChannel.configureBlocking(false);
99          serverSocket = ssChannel.socket();
100         serverSocket.bind(new InetSocketAddress(dynamicPort.getNumber()));
101     }
102 }