@Test public void testDoOneMessageNotifiesClientHealthMonitor() throws IOException { AcceptorImpl acceptorStub = mock(AcceptorImpl.class); ClientProtocolProcessor clientProtocolProcessor = mock(ClientProtocolProcessor.class); ServerConnection serverConnection = getServerConnection(clientProtocolProcessor, acceptorStub); serverConnection.doOneMessage(); ArgumentCaptor<ClientProxyMembershipID> clientProxyMembershipIDArgumentCaptor = ArgumentCaptor.forClass(ClientProxyMembershipID.class); verify(clientHealthMonitorMock).receivedPing(clientProxyMembershipIDArgumentCaptor.capture()); assertEquals("identity(localhost<ec>:0,connection=1", clientProxyMembershipIDArgumentCaptor.getValue().toString()); }
@Override public void cmdExecute(final Message clientMessage, final ServerConnection serverConnection, final SecurityService securityService, long start) throws IOException { final boolean isDebugEnabled = logger.isDebugEnabled(); if (isDebugEnabled) { logger.debug("{}: rcv tx: {} from {} rcvTime: {}", serverConnection.getName(), clientMessage.getTransactionId(), serverConnection.getSocketString(), (DistributionStats.getStatTime() - start)); } ClientHealthMonitor chm = ClientHealthMonitor.getInstance(); if (chm != null) chm.receivedPing(serverConnection.getProxyID()); CachedRegionHelper crHelper = serverConnection.getCachedRegionHelper(); writeReply(clientMessage, serverConnection); serverConnection.setAsTrue(RESPONDED); if (isDebugEnabled) { logger.debug("{}: Sent ping reply to {}", serverConnection.getName(), serverConnection.getSocketString()); } }
setClientDisconnectedException(e); } finally { acceptor.getClientHealthMonitor().receivedPing(this.clientProxyMembershipID);
@Test public void idleServerConnectionTerminatedByHealthMonitor() throws Exception { ClientProxyMembershipID mockId = mock(ClientProxyMembershipID.class); ServerConnection mockConnection = mock(ServerConnection.class); clientHealthMonitor.addConnection(mockId, mockConnection); clientHealthMonitor.receivedPing(mockId); clientHealthMonitor.testUseCustomHeartbeatCheck((a, b, c) -> true); // Fail all heartbeats await() .untilAsserted(() -> verify(mockConnection).handleTermination(true)); }
@Test public void activeServerConnectionNotTerminatedByHealthMonitor() throws Exception { ClientProxyMembershipID mockId = mock(ClientProxyMembershipID.class); ServerConnection mockConnection = mock(ServerConnection.class); clientHealthMonitor.addConnection(mockId, mockConnection); clientHealthMonitor.receivedPing(mockId); HeartbeatOverride heartbeater = new HeartbeatOverride(); clientHealthMonitor.testUseCustomHeartbeatCheck(heartbeater); await().until(() -> heartbeater.numHeartbeats >= 5); // Check that we never tried to terminate the connection verify(mockConnection, times(0)).handleTermination(true); }
acceptor.getClientHealthMonitor().receivedPing(this.proxyId);