Bill commented on a change in pull request #5363:
URL: https://github.com/apache/geode/pull/5363#discussion_r460299130



##########
File path: 
geode-core/src/test/java/org/apache/geode/internal/net/SocketUtilsJUnitTest.java
##########
@@ -88,4 +95,86 @@ public void testCloseServerSocketThrowsIOException() throws 
IOException {
   public void testCloseServerSocketWithNull() {
     assertThat(SocketUtils.close((ServerSocket) null)).isTrue();
   }
+
+  @Test
+  public void readFromSocketWithHeapBuffer() throws IOException {
+    Socket socket = mock(Socket.class);
+    SocketChannel channel = mock(SocketChannel.class);
+    when(socket.getChannel()).thenReturn(channel);
+    final ByteBuffer buffer = ByteBuffer.allocate(100); // heap buffer
+    byte[] bytes = new byte[100];
+    InputStream stream = new ByteArrayInputStream(bytes);
+    when(channel.read(buffer)).thenAnswer((answer) -> {
+      buffer.put(bytes);
+      return buffer.position();
+    });
+    assertThat(buffer.hasArray()).isTrue();
+    SocketUtils.readFromSocket(socket, buffer, stream);
+    // the channel was used to read the bytes
+    verify(channel, times(1)).read(buffer);
+    // the buffer was filled
+    assertThat(buffer.position()).isEqualTo(bytes.length);
+    // the stream was not used
+    assertThat(stream.available()).isEqualTo(bytes.length);
+  }
+
+
+  @Test
+  public void readFromSocketWithDirectBuffer() throws IOException {
+    Socket socket = mock(Socket.class);
+    SocketChannel channel = mock(SocketChannel.class);
+    when(socket.getChannel()).thenReturn(channel);
+    final ByteBuffer buffer = ByteBuffer.allocateDirect(100); // non-heap 
buffer

Review comment:
       fair.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to