use of org.apache.ignite.raft.jraft.util.ByteBufferCollector in project ignite-3 by apache.
the class SnapshotFileReaderTest method testReadFile.
@Test
public void testReadFile() throws Exception {
final ByteBufferCollector bufRef = ByteBufferCollector.allocate();
try {
this.reader.readFile(bufRef, "unfound", 0, 1024);
fail();
} catch (final FileNotFoundException e) {
// No-op.
}
final String data = writeData();
addDataMeta();
final int read = this.reader.readFile(bufRef, "data", 0, 1024);
assertEquals(-1, read);
final ByteBuffer buf = bufRef.getBuffer();
buf.flip();
assertEquals(data.length(), buf.remaining());
final byte[] bs = new byte[data.length()];
buf.get(bs);
assertEquals(data, new String(bs, UTF_8));
}
use of org.apache.ignite.raft.jraft.util.ByteBufferCollector in project ignite-3 by apache.
the class CopySessionTest method testOnRpcReturnedRetry.
@Test
public void testOnRpcReturnedRetry() throws Exception {
assertNull(this.session.getTimer());
assertNull(this.session.getRpcCall());
final ByteBufferCollector bufRef = ByteBufferCollector.allocate(0);
this.session.setDestBuf(bufRef);
final CompletableFuture<Message> future = new CompletableFuture<>();
final RpcRequests.GetFileRequest rb = raftOpts.getRaftMessagesFactory().getFileRequest().readerId(99).filename("data").count(Integer.MAX_VALUE).offset(0).readPartly(true).build();
Mockito.when(this.rpcService.getFile(this.address, rb, this.copyOpts.getTimeoutMs(), session.getDone())).thenReturn(future);
this.session.onRpcReturned(new Status(RaftError.EINTR, "test"), null);
assertNotNull(this.session.getTimer());
Thread.sleep(this.copyOpts.getRetryIntervalMs() + 100);
assertNotNull(this.session.getRpcCall());
assertSame(future, this.session.getRpcCall());
assertNull(this.session.getTimer());
}
use of org.apache.ignite.raft.jraft.util.ByteBufferCollector in project ignite-3 by apache.
the class CopySessionTest method testOnRpcReturnedOK.
@Test
public void testOnRpcReturnedOK() {
assertNull(this.session.getRpcCall());
final ByteBufferCollector bufRef = ByteBufferCollector.allocate(0);
this.session.setDestBuf(bufRef);
final CompletableFuture<Message> future = new CompletableFuture<>();
final RpcRequests.GetFileRequest rb = raftOpts.getRaftMessagesFactory().getFileRequest().readerId(99).filename("data").count(Integer.MAX_VALUE).offset(100).readPartly(true).build();
Mockito.when(this.rpcService.getFile(this.address, rb, this.copyOpts.getTimeoutMs(), session.getDone())).thenReturn(future);
this.session.onRpcReturned(Status.OK(), raftOpts.getRaftMessagesFactory().getFileResponse().readSize(100).eof(false).data(new ByteString(new byte[100])).build());
assertEquals(100, bufRef.capacity());
assertEquals(100, bufRef.getBuffer().position());
assertNotNull(this.session.getRpcCall());
// send next request
assertSame(future, this.session.getRpcCall());
}
use of org.apache.ignite.raft.jraft.util.ByteBufferCollector in project ignite-3 by apache.
the class AppendEntriesBenchmark method sendEntries2.
private byte[] sendEntries2() {
final AppendEntriesRequestBuilder rb = msgFactory.appendEntriesRequest();
fillCommonFields(rb);
final ByteBufferCollector dataBuffer = ByteBufferCollector.allocateByRecyclers();
try {
for (int i = 0; i < entryCount; i++) {
final byte[] bytes = new byte[sizeOfEntry];
ThreadLocalRandom.current().nextBytes(bytes);
final ByteBuffer buf = ByteBuffer.wrap(bytes);
dataBuffer.put(buf.slice());
}
final ByteBuffer buf = dataBuffer.getBuffer();
buf.flip();
rb.data(new ByteString(buf));
return Marshaller.DEFAULT.marshall(rb.build());
} finally {
RecycleUtil.recycle(dataBuffer);
}
}
use of org.apache.ignite.raft.jraft.util.ByteBufferCollector in project ignite-3 by apache.
the class AppendEntriesBenchmark method sendEntries3.
private byte[] sendEntries3() {
final AppendEntriesRequestBuilder rb = msgFactory.appendEntriesRequest();
fillCommonFields(rb);
final ByteBufferCollector dataBuffer = handleThreadLocal.get().allocateByRecyclers();
try {
for (int i = 0; i < entryCount; i++) {
final byte[] bytes = new byte[sizeOfEntry];
ThreadLocalRandom.current().nextBytes(bytes);
final ByteBuffer buf = ByteBuffer.wrap(bytes);
dataBuffer.put(buf.slice());
}
final ByteBuffer buf = dataBuffer.getBuffer();
buf.flip();
final int remaining = buf.remaining();
handleThreadLocal.get().record(remaining);
rb.data(new ByteString(buf));
return Marshaller.DEFAULT.marshall(rb.build());
} finally {
RecycleUtil.recycle(dataBuffer);
}
}
Aggregations