/wildfly/jgroups/src/test/java/org/infinispan/server/jgroups/ManagedSocketFactoryTest.java

https://github.com/wburns/infinispan · Java · 223 lines · 152 code · 47 blank · 24 comment · 0 complexity · e190c0fe6661d135bc85fa2cfa42483a 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.infinispan.server.jgroups;
  23. import static org.junit.Assert.assertSame;
  24. import static org.mockito.Mockito.mock;
  25. import static org.mockito.Mockito.verify;
  26. import static org.mockito.Mockito.when;
  27. import java.io.IOException;
  28. import java.net.DatagramSocket;
  29. import java.net.InetAddress;
  30. import java.net.InetSocketAddress;
  31. import java.net.MulticastSocket;
  32. import java.net.ServerSocket;
  33. import java.net.Socket;
  34. import java.net.SocketAddress;
  35. import org.jboss.as.network.SocketBindingManager;
  36. import org.jgroups.util.SocketFactory;
  37. import org.junit.Before;
  38. import org.junit.Test;
  39. /**
  40. * @author Paul Ferraro
  41. */
  42. public class ManagedSocketFactoryTest {
  43. private SocketFactory factory = mock(SocketFactory.class);
  44. private SocketBindingManager manager = mock(SocketBindingManager.class);
  45. private SocketBindingManager.UnnamedBindingRegistry registry = mock(SocketBindingManager.UnnamedBindingRegistry.class);
  46. private ManagedSocketFactory subject = new ManagedSocketFactory(this.factory, this.manager);
  47. @Before
  48. public void setUp() {
  49. when(this.manager.getUnnamedRegistry()).thenReturn(registry);
  50. }
  51. @Test
  52. public void createSocket() throws IOException {
  53. Socket socket1 = new Socket();
  54. Socket socket2 = new Socket();
  55. Socket socket3 = new Socket();
  56. Socket socket4 = new Socket();
  57. Socket socket5 = new Socket();
  58. InetAddress localhost = InetAddress.getLocalHost();
  59. when(this.factory.createSocket("test")).thenReturn(socket1);
  60. when(this.factory.createSocket("test", localhost, 1)).thenReturn(socket2);
  61. when(this.factory.createSocket("test", "host", 1)).thenReturn(socket3);
  62. when(this.factory.createSocket("test", localhost, 1, localhost, 2)).thenReturn(socket4);
  63. when(this.factory.createSocket("test", "host", 1, localhost, 2)).thenReturn(socket5);
  64. Socket result1 = this.subject.createSocket("test");
  65. Socket result2 = this.subject.createSocket("test", localhost, 1);
  66. Socket result3 = this.subject.createSocket("test", "host", 1);
  67. Socket result4 = this.subject.createSocket("test", localhost, 1, localhost, 2);
  68. Socket result5 = this.subject.createSocket("test", "host", 1, localhost, 2);
  69. verify(this.manager.getUnnamedRegistry()).registerSocket(socket1);
  70. verify(this.manager.getUnnamedRegistry()).registerSocket(socket2);
  71. verify(this.manager.getUnnamedRegistry()).registerSocket(socket3);
  72. verify(this.manager.getUnnamedRegistry()).registerSocket(socket4);
  73. verify(this.manager.getUnnamedRegistry()).registerSocket(socket5);
  74. assertSame(socket1, result1);
  75. assertSame(socket2, result2);
  76. assertSame(socket3, result3);
  77. assertSame(socket4, result4);
  78. assertSame(socket5, result5);
  79. }
  80. @Test
  81. public void createServerSocket() throws IOException {
  82. ServerSocket socket1 = new ServerSocket();
  83. ServerSocket socket2 = new ServerSocket();
  84. ServerSocket socket3 = new ServerSocket();
  85. ServerSocket socket4 = new ServerSocket();
  86. InetAddress localhost = InetAddress.getLocalHost();
  87. when(this.factory.createServerSocket("test")).thenReturn(socket1);
  88. when(this.factory.createServerSocket("test", 1)).thenReturn(socket2);
  89. when(this.factory.createServerSocket("test", 1, 0)).thenReturn(socket3);
  90. when(this.factory.createServerSocket("test", 1, 0, localhost)).thenReturn(socket4);
  91. ServerSocket result1 = this.subject.createServerSocket("test");
  92. ServerSocket result2 = this.subject.createServerSocket("test", 1);
  93. ServerSocket result3 = this.subject.createServerSocket("test", 1, 0);
  94. ServerSocket result4 = this.subject.createServerSocket("test", 1, 0, localhost);
  95. verify(this.manager.getUnnamedRegistry()).registerSocket(socket1);
  96. verify(this.manager.getUnnamedRegistry()).registerSocket(socket2);
  97. verify(this.manager.getUnnamedRegistry()).registerSocket(socket3);
  98. verify(this.manager.getUnnamedRegistry()).registerSocket(socket4);
  99. assertSame(socket1, result1);
  100. assertSame(socket2, result2);
  101. assertSame(socket3, result3);
  102. assertSame(socket4, result4);
  103. }
  104. @Test
  105. public void createDatagram() throws IOException {
  106. DatagramSocket socket1 = new DatagramSocket();
  107. DatagramSocket socket2 = new DatagramSocket();
  108. DatagramSocket socket3 = new DatagramSocket();
  109. DatagramSocket socket4 = new DatagramSocket();
  110. InetAddress localhost = InetAddress.getLocalHost();
  111. SocketAddress socketAddress = new InetSocketAddress(localhost, 1);
  112. when(this.factory.createDatagramSocket("test")).thenReturn(socket1);
  113. when(this.factory.createDatagramSocket("test", 1)).thenReturn(socket2);
  114. when(this.factory.createDatagramSocket("test", socketAddress)).thenReturn(socket3);
  115. when(this.factory.createDatagramSocket("test", 1, localhost)).thenReturn(socket4);
  116. DatagramSocket result1 = this.subject.createDatagramSocket("test");
  117. DatagramSocket result2 = this.subject.createDatagramSocket("test", 1);
  118. DatagramSocket result3 = this.subject.createDatagramSocket("test", socketAddress);
  119. DatagramSocket result4 = this.subject.createDatagramSocket("test", 1, localhost);
  120. verify(this.manager.getUnnamedRegistry()).registerSocket(socket1);
  121. verify(this.manager.getUnnamedRegistry()).registerSocket(socket2);
  122. verify(this.manager.getUnnamedRegistry()).registerSocket(socket3);
  123. verify(this.manager.getUnnamedRegistry()).registerSocket(socket4);
  124. assertSame(socket1, result1);
  125. assertSame(socket2, result2);
  126. assertSame(socket3, result3);
  127. assertSame(socket4, result4);
  128. }
  129. @Test
  130. public void createMulticastSocket() throws IOException {
  131. MulticastSocket socket1 = new MulticastSocket();
  132. MulticastSocket socket2 = new MulticastSocket();
  133. MulticastSocket socket3 = new MulticastSocket();
  134. SocketAddress address = new InetSocketAddress(InetAddress.getLocalHost(), 1);
  135. when(this.factory.createMulticastSocket("test")).thenReturn(socket1);
  136. when(this.factory.createMulticastSocket("test", 1)).thenReturn(socket2);
  137. when(this.factory.createMulticastSocket("test", address)).thenReturn(socket3);
  138. MulticastSocket result1 = this.subject.createMulticastSocket("test");
  139. MulticastSocket result2 = this.subject.createMulticastSocket("test", 1);
  140. MulticastSocket result3 = this.subject.createMulticastSocket("test", address);
  141. verify(this.manager.getUnnamedRegistry()).registerSocket(socket1);
  142. verify(this.manager.getUnnamedRegistry()).registerSocket(socket2);
  143. verify(this.manager.getUnnamedRegistry()).registerSocket(socket3);
  144. assertSame(socket1, result1);
  145. assertSame(socket2, result2);
  146. assertSame(socket3, result3);
  147. }
  148. @Test
  149. public void closeSocket() throws IOException {
  150. Socket socket = new Socket();
  151. this.subject.close(socket);
  152. verify(this.factory).close(socket);
  153. verify(this.manager.getUnnamedRegistry()).unregisterSocket(socket);
  154. }
  155. @Test
  156. public void closeServerSocket() throws IOException {
  157. ServerSocket socket = new ServerSocket();
  158. this.subject.close(socket);
  159. verify(this.factory).close(socket);
  160. verify(this.manager.getUnnamedRegistry()).unregisterSocket(socket);
  161. }
  162. @Test
  163. public void closeDatagramSocket() throws IOException {
  164. DatagramSocket socket = new DatagramSocket();
  165. this.subject.close(socket);
  166. verify(this.factory).close(socket);
  167. verify(this.manager.getUnnamedRegistry()).unregisterSocket(socket);
  168. }
  169. @Test
  170. public void closeMulticastSocket() throws IOException {
  171. MulticastSocket socket = new MulticastSocket();
  172. this.subject.close(socket);
  173. verify(this.factory).close(socket);
  174. verify(this.manager.getUnnamedRegistry()).unregisterSocket(socket);
  175. }
  176. }