This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch feature/bruce_ssl_wip
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 5e6d3201f0f87e794c30d4adf3f762ffc552543c
Author: Bruce Schuchardt <[email protected]>
AuthorDate: Fri Nov 8 14:00:01 2019 -0800

    ssl performance investigation
---
 .../geode/ClusterCommunicationsDUnitTest.java      | 76 +++++++++++++++++-----
 .../apache/geode/distributed/internal/DMStats.java |  7 ++
 .../distributed/internal/DistributionStats.java    | 36 ++++++++++
 .../internal/LonerDistributionManager.java         | 20 ++++++
 .../membership/gms/membership/GMSJoinLeave.java    |  4 +-
 .../org/apache/geode/internal/net/NioFilter.java   |  5 +-
 .../apache/geode/internal/net/NioPlainEngine.java  |  4 +-
 .../apache/geode/internal/net/NioSslEngine.java    |  9 ++-
 .../org/apache/geode/internal/tcp/Connection.java  | 11 ++--
 .../org/apache/geode/internal/tcp/MsgReader.java   |  3 +-
 .../geode/internal/net/NioPlainEngineTest.java     |  8 ++-
 .../geode/internal/net/NioSslEngineTest.java       |  6 +-
 .../cache/tier/sockets/DurableClientTestCase.java  |  2 -
 .../geode/test/dunit/internal/DUnitLauncher.java   |  2 +-
 14 files changed, 156 insertions(+), 37 deletions(-)

diff --git 
a/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java
 
b/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java
index 492ec3a..a11a711 100644
--- 
a/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java
+++ 
b/geode-core/src/distributedTest/java/org/apache/geode/ClusterCommunicationsDUnitTest.java
@@ -17,6 +17,7 @@ package org.apache.geode;
 import static 
org.apache.geode.distributed.ConfigurationProperties.CONSERVE_SOCKETS;
 import static org.apache.geode.distributed.ConfigurationProperties.DISABLE_TCP;
 import static 
org.apache.geode.distributed.ConfigurationProperties.ENABLE_CLUSTER_CONFIGURATION;
+import static 
org.apache.geode.distributed.ConfigurationProperties.ENABLE_TIME_STATISTICS;
 import static org.apache.geode.distributed.ConfigurationProperties.LOCATORS;
 import static org.apache.geode.distributed.ConfigurationProperties.NAME;
 import static 
org.apache.geode.distributed.ConfigurationProperties.SOCKET_BUFFER_SIZE;
@@ -28,6 +29,8 @@ import static 
org.apache.geode.distributed.ConfigurationProperties.SSL_PROTOCOLS
 import static 
org.apache.geode.distributed.ConfigurationProperties.SSL_REQUIRE_AUTHENTICATION;
 import static 
org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE;
 import static 
org.apache.geode.distributed.ConfigurationProperties.SSL_TRUSTSTORE_PASSWORD;
+import static 
org.apache.geode.distributed.ConfigurationProperties.STATISTIC_ARCHIVE_FILE;
+import static 
org.apache.geode.distributed.ConfigurationProperties.STATISTIC_SAMPLING_ENABLED;
 import static 
org.apache.geode.distributed.ConfigurationProperties.USE_CLUSTER_CONFIGURATION;
 import static 
org.apache.geode.internal.serialization.DataSerializableFixedID.SERIAL_ACKED_MESSAGE;
 import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
@@ -162,15 +165,17 @@ public class ClusterCommunicationsDUnitTest implements 
Serializable {
 
   @Test
   public void createEntryWithBigMessage() {
-    int locatorPort = createLocator(getVM(0));
-    for (int i = 1; i <= NUM_SERVERS; i++) {
-      createCacheAndRegion(getVM(i), locatorPort);
-    }
-    performCreateWithLargeValue(getVM(1));
-    // fault the value into an empty cache - forces use of message chunking
-    for (int i = 1; i <= NUM_SERVERS - 1; i++) {
-      verifyCreatedEntry(getVM(i));
-    }
+//    VM vm0 = Host.getHost(0).getVM("1.9.2", 0);
+//    VM vm1 = Host.getHost(0).getVM("1.9.2", 1);
+//    VM vm2 = Host.getHost(0).getVM("1.9.2", 2);
+    VM vm0 = Host.getHost(0).getVM( 0);
+    VM vm1 = Host.getHost(0).getVM(1);
+    VM vm2 = Host.getHost(0).getVM(2);
+    int locatorPort = createLocator(vm0, true);
+    createCacheAndRegion(vm2, locatorPort);
+    createCacheAndRegion(vm1, locatorPort);
+    performCreateWithLargeValue(vm1);
+    performUpdateWithLargeValue(vm1);
   }
 
   @Test
@@ -262,12 +267,43 @@ public class ClusterCommunicationsDUnitTest implements 
Serializable {
 
   private void performCreateWithLargeValue(VM memberVM) {
     memberVM.invoke("perform create", () -> {
-      byte[] value = new byte[SMALL_BUFFER_SIZE * 20];
+      byte[] value = new byte[1024];
+      Arrays.fill(value, (byte) 1);
+      cache.getRegion(regionName).put("testKey", value);
+    });
+  }
+
+  private void performUpdateWithLargeValue(VM memberVM) {
+    memberVM.invoke("perform update", () -> {
+      byte[] value = new byte[70000];
+      Arrays.fill(value, (byte) 1);
+      long start = System.currentTimeMillis();
+      for (int i = 0; i < 50000; i++) {
+        cache.getRegion(regionName).put("testKey", value);
+      }
+      long end = System.currentTimeMillis();
+      System.out.println("BRUCE: elapsed update time: " + (end - start) + 
"ms");
+    });
+  }
+
+  private void performCreateWithSmallValue(VM memberVM) {
+    memberVM.invoke("perform create", () -> {
+      byte[] value = new byte[512];
       Arrays.fill(value, (byte) 1);
       cache.getRegion(regionName).put("testKey", value);
     });
   }
 
+  private void performUpdateWithSmallValue(VM memberVM) {
+    memberVM.invoke("perform update", () -> {
+      byte[] value = new byte[512];
+      Arrays.fill(value, (byte) 1);
+      for (int i = 0; i < 50000; i++) {
+        cache.getRegion(regionName).put("testKey", value);
+      }
+    });
+  }
+
   private void verifyCreatedEntry(VM memberVM) {
     memberVM.invoke("verify entry created", () -> Assert.assertTrue(cache
         .getRegion(regionName).containsKey("testKey")));
@@ -319,8 +355,14 @@ public class ClusterCommunicationsDUnitTest implements 
Serializable {
     properties.setProperty(NAME, "vm" + VM.getCurrentVMNum());
     properties.setProperty(CONSERVE_SOCKETS, "" + conserveSockets);
     properties.setProperty(DISABLE_TCP, "" + disableTcp);
-    properties.setProperty(SOCKET_LEASE_TIME, "10000");
-    properties.setProperty(SOCKET_BUFFER_SIZE, "" + SMALL_BUFFER_SIZE);
+    properties.setProperty(SOCKET_LEASE_TIME, "60000");
+    // properties.setProperty(SOCKET_BUFFER_SIZE, "" + SMALL_BUFFER_SIZE);
+    properties.setProperty(SOCKET_BUFFER_SIZE, "80000");
+    properties.setProperty(ENABLE_TIME_STATISTICS, "true");
+    properties.setProperty(STATISTIC_SAMPLING_ENABLED, "true");
+    properties.setProperty(STATISTIC_ARCHIVE_FILE,
+        "statArchive_vm" + VM.getCurrentVMNum() + ".gfs");
+    // properties.put(LOG_LEVEL, "fine");
 
     if (useSSL) {
       properties.setProperty(SSL_ENABLED_COMPONENTS, "cluster,locator");
@@ -339,11 +381,11 @@ public class ClusterCommunicationsDUnitTest implements 
Serializable {
   }
 
   enum RunConfiguration {
-    SHARED_CONNECTIONS(true, false, false),
-    SHARED_CONNECTIONS_WITH_SSL(true, true, false),
-    UNSHARED_CONNECTIONS(false, false, false),
-    UNSHARED_CONNECTIONS_WITH_SSL(false, true, false),
-    UDP_CONNECTIONS(true, false, true);
+    // SHARED_CONNECTIONS(true, false, false),
+    // SHARED_CONNECTIONS_WITH_SSL(true, true, false),
+    // UNSHARED_CONNECTIONS(false, false, false);
+    UNSHARED_CONNECTIONS_WITH_SSL(false, true, false);
+    // UDP_CONNECTIONS(true, false, true);
 
     boolean useSSL;
     boolean conserveSockets;
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java
index 6a0d578..c1adfa3 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DMStats.java
@@ -563,4 +563,11 @@ public interface DMStats extends MembershipStatistics {
 
   long getUdpFinalCheckResponsesReceived();
 
+  long startTLSEncryption();
+
+  void endTLSEncryption(long startEncryption);
+
+  long startTLSDecryption();
+
+  void endTLSDecryption(long startDecryptTime);
 }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java
index 5061032..8d69ab2 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/DistributionStats.java
@@ -153,6 +153,9 @@ public class DistributionStats implements DMStats {
   private static final int udpMsgEncryptionTimeId;
   private static final int udpMsgDecryptionTimeId;
 
+  private static final int tlsEncryptionTimeId;
+  private static final int tlsDecryptionTimeId;
+
   private static final int batchSendTimeId;
   private static final int batchCopyTimeId;
   private static final int batchWaitTimeId;
@@ -589,6 +592,10 @@ public class DistributionStats implements DMStats {
             "Total amount of time, in nanoseconds, spent encrypting udp 
messages.", "nanoseconds"),
         f.createLongCounter("udpMsgDecryptionTime",
             "Total amount of time, in nanoseconds, spent decrypting udp 
messages.", "nanoseconds"),
+        f.createLongCounter("tlsMsgEncryptionTime",
+            "Total amount of time performing TLS (SSL) encryption", 
"nanoseconds"),
+        f.createLongCounter("tlsMsgDecryptionTime",
+            "Total amount of time performing TLS (SSL) decryption", 
"nanoseconds"),
         f.createIntCounter("pdxInstanceDeserializations",
             "Total number of times getObject has been called on a 
PdxInstance.", "ops"),
         f.createLongCounter("pdxInstanceDeserializationTime",
@@ -848,6 +855,9 @@ public class DistributionStats implements DMStats {
     udpMsgEncryptionTimeId = type.nameToId("udpMsgEncryptionTime");
     udpMsgDecryptionTimeId = type.nameToId("udpMsgDecryptionTime");
 
+    tlsEncryptionTimeId = type.nameToId("tlsMsgEncryptionTime");
+    tlsDecryptionTimeId = type.nameToId("tlsMsgDecryptionTime");
+
     batchSendTimeId = type.nameToId("batchSendTime");
     batchCopyTimeId = type.nameToId("batchCopyTime");
     batchWaitTimeId = type.nameToId("batchWaitTime");
@@ -2659,6 +2669,32 @@ public class DistributionStats implements DMStats {
   }
 
   @Override
+  public long startTLSEncryption() {
+    return getTime();
+  }
+
+  @Override
+  public void endTLSEncryption(long startEncryptTime) {
+    if (enableClockStats) {
+      long endTime = getTime();
+      this.stats.incLong(tlsEncryptionTimeId, endTime - startEncryptTime);
+    }
+  }
+
+  @Override
+  public long startTLSDecryption() {
+    return getTime();
+  }
+
+  @Override
+  public void endTLSDecryption(long startDecryptTime) {
+    if (enableClockStats) {
+      long endTime = getTime();
+      this.stats.incLong(tlsDecryptionTimeId, endTime - startDecryptTime);
+    }
+  }
+
+  @Override
   public void incUdpFinalCheckResponsesReceived() {
     this.stats.incLong(udpFinalCheckResponsesReceivedId, 1L);
   }
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
index 43c5936..7b2387a 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/LonerDistributionManager.java
@@ -997,6 +997,26 @@ public class LonerDistributionManager implements 
DistributionManager {
     }
 
     @Override
+    public long startTLSEncryption() {
+      return 0;
+    }
+
+    @Override
+    public void endTLSEncryption(long startEncryption) {
+
+    }
+
+    @Override
+    public long startTLSDecryption() {
+      return 0;
+    }
+
+    @Override
+    public void endTLSDecryption(long startDecryptTime) {
+
+    }
+
+    @Override
     public void incUdpFinalCheckResponsesReceived() {}
 
     @Override
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
index 9b017de..126632c 100644
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/membership/GMSJoinLeave.java
@@ -118,8 +118,8 @@ public class GMSJoinLeave implements JoinLeave {
    * membership logger
    */
   private static final Logger logger = Services.getLogger();
-  private static final boolean ALLOW_OLD_VERSION_FOR_TESTING = Boolean
-      .getBoolean(DistributionConfig.GEMFIRE_PREFIX + 
"allow_old_members_to_join_for_testing");
+  private static final boolean ALLOW_OLD_VERSION_FOR_TESTING = true; // Boolean
+  // .getBoolean(DistributionConfig.GEMFIRE_PREFIX + 
"allow_old_members_to_join_for_testing");
 
   /**
    * the view ID where I entered into membership
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/net/NioFilter.java 
b/geode-core/src/main/java/org/apache/geode/internal/net/NioFilter.java
index 01556dc..d497233 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/net/NioFilter.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/net/NioFilter.java
@@ -18,6 +18,8 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.channels.SocketChannel;
 
+import org.apache.geode.distributed.internal.DMStats;
+
 /**
  * Prior to transmitting a buffer or processing a received buffer
  * a NioFilter should be called to wrap (transmit) or unwrap (received)
@@ -53,7 +55,8 @@ public interface NioFilter {
    * wrappedBuffer = filter.ensureWrappedCapacity(amount, wrappedBuffer, 
etc.);<br>
    * unwrappedBuffer = filter.readAtLeast(channel, amount, wrappedBuffer, etc.)
    */
-  ByteBuffer readAtLeast(SocketChannel channel, int amount, ByteBuffer 
wrappedBuffer)
+  ByteBuffer readAtLeast(SocketChannel channel, int amount, ByteBuffer 
wrappedBuffer,
+                         DMStats stats)
       throws IOException;
 
   /**
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/net/NioPlainEngine.java 
b/geode-core/src/main/java/org/apache/geode/internal/net/NioPlainEngine.java
index 3ebce38..3dbacda 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/net/NioPlainEngine.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/net/NioPlainEngine.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.channels.SocketChannel;
 
+import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.internal.Assert;
 
 /**
@@ -82,7 +83,8 @@ public class NioPlainEngine implements NioFilter {
   }
 
   @Override
-  public ByteBuffer readAtLeast(SocketChannel channel, int bytes, ByteBuffer 
wrappedBuffer)
+  public ByteBuffer readAtLeast(SocketChannel channel, int bytes, ByteBuffer 
wrappedBuffer,
+                                DMStats stats)
       throws IOException {
     ByteBuffer buffer = wrappedBuffer;
 
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/net/NioSslEngine.java 
b/geode-core/src/main/java/org/apache/geode/internal/net/NioSslEngine.java
index e914847..3c10bfd 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/net/NioSslEngine.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/net/NioSslEngine.java
@@ -40,6 +40,7 @@ import javax.net.ssl.SSLSession;
 import org.apache.logging.log4j.Logger;
 
 import org.apache.geode.GemFireIOException;
+import org.apache.geode.distributed.internal.DMStats;
 import org.apache.geode.internal.net.BufferPool.BufferType;
 import org.apache.geode.logging.internal.log4j.api.LogService;
 
@@ -74,8 +75,8 @@ public class NioSslEngine implements NioFilter {
     int packetBufferSize = engine.getSession().getPacketBufferSize();
     this.engine = engine;
     this.bufferPool = bufferPool;
-    this.myNetData = bufferPool.acquireDirectSenderBuffer(packetBufferSize);
-    this.peerAppData = bufferPool.acquireNonDirectReceiveBuffer(appBufferSize);
+    this.myNetData = bufferPool.acquireDirectSenderBuffer(100000); 
//packetBufferSize);
+    this.peerAppData = 
bufferPool.acquireNonDirectReceiveBuffer(100000);//appBufferSize);
   }
 
   /**
@@ -314,7 +315,8 @@ public class NioSslEngine implements NioFilter {
 
   @Override
   public ByteBuffer readAtLeast(SocketChannel channel, int bytes,
-      ByteBuffer wrappedBuffer) throws IOException {
+                                ByteBuffer wrappedBuffer,
+                                DMStats stats) throws IOException {
     if (peerAppData.capacity() > bytes) {
       // we already have a buffer that's big enough
       if (peerAppData.capacity() - peerAppData.position() < bytes) {
@@ -328,6 +330,7 @@ public class NioSslEngine implements NioFilter {
 
     while (peerAppData.remaining() < bytes) {
       wrappedBuffer.limit(wrappedBuffer.capacity());
+      stats.incAsyncThreads(1);
       int amountRead = channel.read(wrappedBuffer);
       if (amountRead < 0) {
         throw new EOFException();
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java 
b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
index 61d2ff4..339cfa0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
@@ -1224,10 +1224,6 @@ public class Connection implements Runnable {
     }
   }
 
-  public void setInputBuffer(ByteBuffer buffer) {
-    this.inputBuffer = buffer;
-  }
-
   private class BatchBufferFlusher extends Thread {
     private volatile boolean flushNeeded = false;
     private volatile boolean timeToStop = false;
@@ -1839,6 +1835,9 @@ public class Connection implements Runnable {
       SSLEngine engine =
           
getConduit().getSocketCreator().createSSLEngine(address.getHostName(), 
address.getPort());
 
+      // int engineBufferSize = engine.getSession().getPacketBufferSize();
+      // int sendBufferSize = owner.getConduit().tcpBufferSize;
+      // int packetBufferSize = Math.max(sendBufferSize, engineBufferSize);
       int packetBufferSize = engine.getSession().getPacketBufferSize();
       if (inputBuffer == null
           || (inputBuffer.capacity() < packetBufferSize)) {
@@ -2731,7 +2730,9 @@ public class Connection implements Runnable {
           }
           // fall through
         }
+         long startEncryption = stats.startTLSEncryption();
         ByteBuffer wrappedBuffer = ioFilter.wrap(buffer);
+         stats.endTLSEncryption(startEncryption);
         while (wrappedBuffer.remaining() > 0) {
           int amtWritten = 0;
           long start = stats.startSocketWrite(true);
@@ -2898,7 +2899,9 @@ public class Connection implements Runnable {
 
     inputBuffer.flip();
 
+     long startDecryptTime = 
owner.getConduit().getStats().startTLSDecryption();
     ByteBuffer peerDataBuffer = ioFilter.unwrap(inputBuffer);
+     owner.getConduit().getStats().endTLSDecryption(startDecryptTime);
     peerDataBuffer.flip();
 
     boolean done = false;
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java 
b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
index 4561562..8a6b7c3 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/tcp/MsgReader.java
@@ -120,7 +120,8 @@ public class MsgReader {
   private ByteBuffer readAtLeast(int bytes) throws IOException {
     peerNetData = ioFilter.ensureWrappedCapacity(bytes, peerNetData,
         BufferPool.BufferType.TRACKED_RECEIVER);
-    return ioFilter.readAtLeast(conn.getSocket().getChannel(), bytes, 
peerNetData);
+    return ioFilter.readAtLeast(conn.getSocket().getChannel(), bytes, 
peerNetData,
+        conn.getConduit().getStats());
   }
 
   public void close() {
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/net/NioPlainEngineTest.java
 
b/geode-core/src/test/java/org/apache/geode/internal/net/NioPlainEngineTest.java
index e9785de..4b31500 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/net/NioPlainEngineTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/net/NioPlainEngineTest.java
@@ -117,14 +117,16 @@ public class NioPlainEngineTest {
 
     nioEngine.lastReadPosition = 10;
 
-    ByteBuffer data = nioEngine.readAtLeast(mockChannel, amountToRead, 
wrappedBuffer);
+    ByteBuffer data = nioEngine.readAtLeast(mockChannel, amountToRead, 
wrappedBuffer,
+        conn.getConduit().getStats());
     verify(mockChannel, times(3)).read(isA(ByteBuffer.class));
     assertThat(data.position()).isEqualTo(0);
     assertThat(data.limit()).isEqualTo(amountToRead);
     assertThat(nioEngine.lastReadPosition).isEqualTo(individualRead * 3 + 
preexistingBytes);
     assertThat(nioEngine.lastProcessedPosition).isEqualTo(amountToRead);
 
-    data = nioEngine.readAtLeast(mockChannel, amountToRead, wrappedBuffer);
+    data = nioEngine.readAtLeast(mockChannel, amountToRead, wrappedBuffer,
+        conn.getConduit().getStats());
     verify(mockChannel, times(5)).read(any(ByteBuffer.class));
     // at end of last readAtLeast data
     assertThat(data.position()).isEqualTo(amountToRead);
@@ -148,7 +150,7 @@ public class NioPlainEngineTest {
 
     nioEngine.lastReadPosition = 10;
 
-    nioEngine.readAtLeast(mockChannel, amountToRead, wrappedBuffer);
+    nioEngine.readAtLeast(mockChannel, amountToRead, wrappedBuffer, 
conn.getConduit().getStats());
   }
 
 }
diff --git 
a/geode-core/src/test/java/org/apache/geode/internal/net/NioSslEngineTest.java 
b/geode-core/src/test/java/org/apache/geode/internal/net/NioSslEngineTest.java
index e50b878..73b97ee 100644
--- 
a/geode-core/src/test/java/org/apache/geode/internal/net/NioSslEngineTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/internal/net/NioSslEngineTest.java
@@ -412,7 +412,8 @@ public class NioSslEngineTest {
     testSSLEngine.addReturnResult(new SSLEngineResult(OK, NEED_UNWRAP, 0, 0));
     nioSslEngine.engine = testSSLEngine;
 
-    ByteBuffer data = nioSslEngine.readAtLeast(mockChannel, amountToRead, 
wrappedBuffer);
+    ByteBuffer data = nioSslEngine.readAtLeast(mockChannel, amountToRead, 
wrappedBuffer,
+        conn.getConduit().getStats());
     verify(mockChannel, times(3)).read(isA(ByteBuffer.class));
     assertThat(data.position()).isEqualTo(0);
     assertThat(data.limit()).isEqualTo(individualRead * 3 + preexistingBytes);
@@ -456,7 +457,8 @@ public class NioSslEngineTest {
         new SSLEngineResult(OK, NEED_UNWRAP, 0, 0)); // 130 + 60 bytes = 190
     nioSslEngine.engine = testSSLEngine;
 
-    ByteBuffer data = nioSslEngine.readAtLeast(mockChannel, amountToRead, 
wrappedBuffer);
+    ByteBuffer data = nioSslEngine.readAtLeast(mockChannel, amountToRead, 
wrappedBuffer,
+        conn.getConduit().getStats());
     verify(mockChannel, times(3)).read(isA(ByteBuffer.class));
     assertThat(data.position()).isEqualTo(0);
     assertThat(data.limit()).isEqualTo(individualRead * 3 + preexistingBytes);
diff --git 
a/geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/DurableClientTestCase.java
 
b/geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/DurableClientTestCase.java
index d5cbf1b..353c39f 100755
--- 
a/geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/DurableClientTestCase.java
+++ 
b/geode-cq/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/DurableClientTestCase.java
@@ -107,8 +107,6 @@ public class DurableClientTestCase extends 
DurableClientTestBase {
 
         // Verify that it is durable and its properties are correct
         assertThat(proxy.isDurable()).isTrue();
-        System.out.println("BRUCE: durableClientId is " + durableClientId);
-        System.out.println("BRUCE: proxy durable id is " + 
proxy.getDurableId());
         assertThat(durableClientId).isNotEqualTo(proxy.getDurableId());
 
         /*
diff --git 
a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitLauncher.java
 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitLauncher.java
index b532277..4bc3380 100644
--- 
a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitLauncher.java
+++ 
b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitLauncher.java
@@ -91,7 +91,7 @@ public class DUnitLauncher {
   /**
    * Number of VMs to use during initialization.
    */
-  public static int NUM_VMS = 4;
+  public static int NUM_VMS = 1;
 
   /**
    * VM ID for the VM to use for the debugger.

Reply via email to