@Override protected boolean doHandShake(byte endpointType, int queueSize) { ClientHealthMonitor clientHealthMonitor = getAcceptor().getClientHealthMonitor(); clientHealthMonitor.registerClient(clientProxyMembershipID); clientHealthMonitor.addConnection(clientProxyMembershipID, this); return true; }
@Test public void testClientHealthMonitorRegistration() throws IOException { AcceptorImpl acceptorStub = mock(AcceptorImpl.class); ClientProtocolProcessor clientProtocolProcessor = mock(ClientProtocolProcessor.class); ServerConnection serverConnection = getServerConnection(clientProtocolProcessor, acceptorStub); ArgumentCaptor<ClientProxyMembershipID> registerCpmidArgumentCaptor = ArgumentCaptor.forClass(ClientProxyMembershipID.class); ArgumentCaptor<ClientProxyMembershipID> addConnectionCpmidArgumentCaptor = ArgumentCaptor.forClass(ClientProxyMembershipID.class); verify(clientHealthMonitorMock).addConnection(addConnectionCpmidArgumentCaptor.capture(), eq(serverConnection)); verify(clientHealthMonitorMock).registerClient(registerCpmidArgumentCaptor.capture()); assertEquals("identity(localhost<ec>:0,connection=1", registerCpmidArgumentCaptor.getValue().toString()); assertEquals("identity(localhost<ec>:0,connection=1", addConnectionCpmidArgumentCaptor.getValue().toString()); }
@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); }
serverConnectionCollection = chm.addConnection(this.proxyId, this); this.acceptor.getConnectionListener().connectionOpened(registerClient, communicationMode);