use of com.alipay.sofa.jraft.rpc.impl.core.AppendEntriesRequestProcessor.PeerPair in project sofa-jraft by sofastack.
the class AppendEntriesRequestProcessorTest method testTooManyPendingResponses.
@Test
public void testTooManyPendingResponses() {
final PeerId peer = mockNode();
NodeManager.getInstance().get(this.groupId, peer).getRaftOptions().setMaxReplicatorInflightMsgs(2);
final RpcContext asyncContext = Mockito.mock(RpcContext.class);
final AppendEntriesRequestProcessor processor = (AppendEntriesRequestProcessor) newProcessor();
final PeerPair pair = processor.pairOf(this.peerIdStr, this.serverId);
final PingRequest msg = TestUtils.createPingRequest();
final Connection conn = Mockito.mock(Connection.class);
Mockito.when(asyncContext.getConnection()).thenReturn(conn);
final PeerRequestContext ctx = processor.getOrCreatePeerRequestContext(this.groupId, pair, conn);
assertNotNull(ctx);
processor.sendSequenceResponse(this.groupId, pair, 1, asyncContext, msg);
processor.sendSequenceResponse(this.groupId, pair, 2, asyncContext, msg);
processor.sendSequenceResponse(this.groupId, pair, 3, asyncContext, msg);
Mockito.verify(asyncContext, Mockito.never()).sendResponse(msg);
Mockito.verify(conn).close();
final PeerRequestContext newCtx = processor.getOrCreatePeerRequestContext(this.groupId, pair, conn);
assertNotNull(newCtx);
assertNotSame(ctx, newCtx);
}
use of com.alipay.sofa.jraft.rpc.impl.core.AppendEntriesRequestProcessor.PeerPair in project sofa-jraft by sofastack.
the class AppendEntriesRequestProcessorTest method testGetPeerRequestContextRemovePeerRequestContext.
@Test
public void testGetPeerRequestContextRemovePeerRequestContext() {
mockNode();
final AppendEntriesRequestProcessor processor = (AppendEntriesRequestProcessor) newProcessor();
final PeerPair pair = processor.pairOf(this.peerIdStr, this.serverId);
final PeerRequestContext ctx = processor.getOrCreatePeerRequestContext(this.groupId, pair, this.conn);
assertNotNull(ctx);
assertSame(ctx, processor.getOrCreatePeerRequestContext(this.groupId, pair, this.conn));
assertEquals(0, ctx.getNextRequiredSequence());
assertEquals(0, ctx.getAndIncrementSequence());
assertEquals(1, ctx.getAndIncrementSequence());
assertEquals(0, ctx.getAndIncrementNextRequiredSequence());
assertEquals(1, ctx.getAndIncrementNextRequiredSequence());
assertFalse(ctx.hasTooManyPendingResponses());
processor.removePeerRequestContext(this.groupId, pair);
final PeerRequestContext newCtx = processor.getOrCreatePeerRequestContext(this.groupId, pair, this.conn);
assertNotNull(newCtx);
assertNotSame(ctx, newCtx);
assertEquals(0, newCtx.getNextRequiredSequence());
assertEquals(0, newCtx.getAndIncrementSequence());
assertEquals(1, newCtx.getAndIncrementSequence());
assertEquals(0, newCtx.getAndIncrementNextRequiredSequence());
assertEquals(1, newCtx.getAndIncrementNextRequiredSequence());
assertFalse(newCtx.hasTooManyPendingResponses());
}
Aggregations