/clustering/jgroups/src/test/java/org/jboss/as/clustering/jgroups/ManagedSocketFactoryTest.java

https://github.com/samuelo/jboss-as · Java · 221 lines · 150 code · 47 blank · 24 comment · 0 complexity · 966b57538be2c8363fac3d28c3a25071 MD5 · raw file

  1. /*
  2. * JBoss, Home of Professional Open Source.
  3. * Copyright 2011, Red Hat, Inc., and individual contributors
  4. * as indicated by the @author tags. See the copyright.txt file in the
  5. * distribution for a full listing of individual contributors.
  6. *
  7. * This is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU Lesser General Public License as
  9. * published by the Free Software Foundation; either version 2.1 of
  10. * the License, or (at your option) any later version.
  11. *
  12. * This software is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with this software; if not, write to the Free
  19. * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  20. * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  21. */
  22. package org.jboss.as.clustering.jgroups;
  23. import static org.mockito.Mockito.*;
  24. import static org.junit.Assert.*;
  25. import java.io.IOException;
  26. import java.net.DatagramSocket;
  27. import java.net.InetAddress;
  28. import java.net.InetSocketAddress;
  29. import java.net.MulticastSocket;
  30. import java.net.ServerSocket;
  31. import java.net.Socket;
  32. import java.net.SocketAddress;
  33. import org.jboss.as.network.SocketBindingManager;
  34. import org.jgroups.util.SocketFactory;
  35. import org.junit.Before;
  36. import org.junit.Test;
  37. /**
  38. * @author Paul Ferraro
  39. */
  40. public class ManagedSocketFactoryTest {
  41. private SocketFactory factory = mock(SocketFactory.class);
  42. private SocketBindingManager manager = mock(SocketBindingManager.class);
  43. private SocketBindingManager.NamedManagedBindingRegistry registry = mock(SocketBindingManager.NamedManagedBindingRegistry.class);
  44. private ManagedSocketFactory subject = new ManagedSocketFactory(this.factory, this.manager);
  45. @Before
  46. public void setUp() {
  47. when(this.manager.getNamedRegistry()).thenReturn(registry);
  48. }
  49. @Test
  50. public void createSocket() throws IOException {
  51. Socket socket1 = new Socket();
  52. Socket socket2 = new Socket();
  53. Socket socket3 = new Socket();
  54. Socket socket4 = new Socket();
  55. Socket socket5 = new Socket();
  56. InetAddress localhost = InetAddress.getLocalHost();
  57. when(this.factory.createSocket("test")).thenReturn(socket1);
  58. when(this.factory.createSocket("test", localhost, 1)).thenReturn(socket2);
  59. when(this.factory.createSocket("test", "host", 1)).thenReturn(socket3);
  60. when(this.factory.createSocket("test", localhost, 1, localhost, 2)).thenReturn(socket4);
  61. when(this.factory.createSocket("test", "host", 1, localhost, 2)).thenReturn(socket5);
  62. Socket result1 = this.subject.createSocket("test");
  63. Socket result2 = this.subject.createSocket("test", localhost, 1);
  64. Socket result3 = this.subject.createSocket("test", "host", 1);
  65. Socket result4 = this.subject.createSocket("test", localhost, 1, localhost, 2);
  66. Socket result5 = this.subject.createSocket("test", "host", 1, localhost, 2);
  67. verify(this.manager.getNamedRegistry()).registerSocket("test", socket1);
  68. verify(this.manager.getNamedRegistry()).registerSocket("test", socket2);
  69. verify(this.manager.getNamedRegistry()).registerSocket("test", socket3);
  70. verify(this.manager.getNamedRegistry()).registerSocket("test", socket4);
  71. verify(this.manager.getNamedRegistry()).registerSocket("test", socket5);
  72. assertSame(socket1, result1);
  73. assertSame(socket2, result2);
  74. assertSame(socket3, result3);
  75. assertSame(socket4, result4);
  76. assertSame(socket5, result5);
  77. }
  78. @Test
  79. public void createServerSocket() throws IOException {
  80. ServerSocket socket1 = new ServerSocket();
  81. ServerSocket socket2 = new ServerSocket();
  82. ServerSocket socket3 = new ServerSocket();
  83. ServerSocket socket4 = new ServerSocket();
  84. InetAddress localhost = InetAddress.getLocalHost();
  85. when(this.factory.createServerSocket("test")).thenReturn(socket1);
  86. when(this.factory.createServerSocket("test", 1)).thenReturn(socket2);
  87. when(this.factory.createServerSocket("test", 1, 0)).thenReturn(socket3);
  88. when(this.factory.createServerSocket("test", 1, 0, localhost)).thenReturn(socket4);
  89. ServerSocket result1 = this.subject.createServerSocket("test");
  90. ServerSocket result2 = this.subject.createServerSocket("test", 1);
  91. ServerSocket result3 = this.subject.createServerSocket("test", 1, 0);
  92. ServerSocket result4 = this.subject.createServerSocket("test", 1, 0, localhost);
  93. verify(this.manager.getNamedRegistry()).registerSocket("test", socket1);
  94. verify(this.manager.getNamedRegistry()).registerSocket("test", socket2);
  95. verify(this.manager.getNamedRegistry()).registerSocket("test", socket3);
  96. verify(this.manager.getNamedRegistry()).registerSocket("test", socket4);
  97. assertSame(socket1, result1);
  98. assertSame(socket2, result2);
  99. assertSame(socket3, result3);
  100. assertSame(socket4, result4);
  101. }
  102. @Test
  103. public void createDatagram() throws IOException {
  104. DatagramSocket socket1 = new DatagramSocket();
  105. DatagramSocket socket2 = new DatagramSocket();
  106. DatagramSocket socket3 = new DatagramSocket();
  107. DatagramSocket socket4 = new DatagramSocket();
  108. InetAddress localhost = InetAddress.getLocalHost();
  109. SocketAddress socketAddress = new InetSocketAddress(localhost, 1);
  110. when(this.factory.createDatagramSocket("test")).thenReturn(socket1);
  111. when(this.factory.createDatagramSocket("test", 1)).thenReturn(socket2);
  112. when(this.factory.createDatagramSocket("test", socketAddress)).thenReturn(socket3);
  113. when(this.factory.createDatagramSocket("test", 1, localhost)).thenReturn(socket4);
  114. DatagramSocket result1 = this.subject.createDatagramSocket("test");
  115. DatagramSocket result2 = this.subject.createDatagramSocket("test", 1);
  116. DatagramSocket result3 = this.subject.createDatagramSocket("test", socketAddress);
  117. DatagramSocket result4 = this.subject.createDatagramSocket("test", 1, localhost);
  118. verify(this.manager.getNamedRegistry()).registerSocket("test", socket1);
  119. verify(this.manager.getNamedRegistry()).registerSocket("test", socket2);
  120. verify(this.manager.getNamedRegistry()).registerSocket("test", socket3);
  121. verify(this.manager.getNamedRegistry()).registerSocket("test", socket4);
  122. assertSame(socket1, result1);
  123. assertSame(socket2, result2);
  124. assertSame(socket3, result3);
  125. assertSame(socket4, result4);
  126. }
  127. @Test
  128. public void createMulticastSocket() throws IOException {
  129. MulticastSocket socket1 = new MulticastSocket();
  130. MulticastSocket socket2 = new MulticastSocket();
  131. MulticastSocket socket3 = new MulticastSocket();
  132. SocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(), 1);
  133. when(this.factory.createMulticastSocket("test")).thenReturn(socket1);
  134. when(this.factory.createMulticastSocket("test", 1)).thenReturn(socket2);
  135. when(this.factory.createMulticastSocket("test", address)).thenReturn(socket3);
  136. MulticastSocket result1 = this.subject.createMulticastSocket("test");
  137. MulticastSocket result2 = this.subject.createMulticastSocket("test", 1);
  138. MulticastSocket result3 = this.subject.createMulticastSocket("test", address);
  139. verify(this.manager.getNamedRegistry()).registerSocket("test", socket1);
  140. verify(this.manager.getNamedRegistry()).registerSocket("test", socket2);
  141. verify(this.manager.getNamedRegistry()).registerSocket("test", socket3);
  142. assertSame(socket1, result1);
  143. assertSame(socket2, result2);
  144. assertSame(socket3, result3);
  145. }
  146. @Test
  147. public void closeSocket() throws IOException {
  148. Socket socket = new Socket();
  149. this.subject.close(socket);
  150. verify(this.factory).close(socket);
  151. verify(this.manager.getNamedRegistry()).unregisterBinding((String) null);
  152. }
  153. @Test
  154. public void closeServerSocket() throws IOException {
  155. ServerSocket socket = new ServerSocket();
  156. this.subject.close(socket);
  157. verify(this.factory).close(socket);
  158. verify(this.manager.getNamedRegistry()).unregisterBinding((String) null);
  159. }
  160. @Test
  161. public void closeDatagramSocket() throws IOException {
  162. DatagramSocket socket = new DatagramSocket();
  163. this.subject.close(socket);
  164. verify(this.factory).close(socket);
  165. verify(this.manager.getNamedRegistry()).unregisterBinding((String) null);
  166. }
  167. @Test
  168. public void closeMulticastSocket() throws IOException {
  169. MulticastSocket socket = new MulticastSocket();
  170. this.subject.close(socket);
  171. verify(this.factory).close(socket);
  172. verify(this.manager.getNamedRegistry()).unregisterBinding((String) null);
  173. }
  174. }