use of com.alipay.sofa.jraft.entity.LogId in project sofa-jraft by sofastack.
the class BaseLogEntryCodecFactoryTest method testEncodeDecodeWithoutData.
@Test
public void testEncodeDecodeWithoutData() {
LogEntry entry = new LogEntry(EnumOutter.EntryType.ENTRY_TYPE_NO_OP);
entry.setId(new LogId(100, 3));
entry.setPeers(Arrays.asList(new PeerId("localhost", 99, 1), new PeerId("localhost", 100, 2)));
assertSame(LogEntry.EMPTY_DATA, entry.getData());
assertNull(entry.getOldPeers());
byte[] content = this.encoder.encode(entry);
assertNotNull(content);
assertTrue(content.length > 0);
LogEntry nentry = this.decoder.decode(content);
assertNotNull(nentry);
assertEquals(100, nentry.getId().getIndex());
assertEquals(3, nentry.getId().getTerm());
Assert.assertEquals(EnumOutter.EntryType.ENTRY_TYPE_NO_OP, nentry.getType());
assertEquals(2, nentry.getPeers().size());
assertEquals("localhost:99:1", nentry.getPeers().get(0).toString());
assertEquals("localhost:100:2", nentry.getPeers().get(1).toString());
assertSame(LogEntry.EMPTY_DATA, nentry.getData());
assertNull(nentry.getOldPeers());
}
use of com.alipay.sofa.jraft.entity.LogId in project sofa-jraft by sofastack.
the class BaseLogEntryCodecFactoryTest method testEmptyData.
@Test
public void testEmptyData() {
LogEntry entry = new LogEntry(EnumOutter.EntryType.ENTRY_TYPE_NO_OP);
entry.setId(new LogId(100, 3));
entry.setPeers(Arrays.asList(new PeerId("localhost", 99, 1), new PeerId("localhost", 100, 2)));
entry.setData(ByteBuffer.allocate(0));
byte[] content = this.encoder.encode(entry);
assertNotNull(content);
assertTrue(content.length > 0);
LogEntry nentry = this.decoder.decode(content);
assertNotNull(nentry);
assertNotNull(nentry.getData());
assertEquals(0, nentry.getData().remaining());
}
use of com.alipay.sofa.jraft.entity.LogId in project sofa-jraft by sofastack.
the class LogEntryCodecPerfTest method testEncodeDecode.
private void testEncodeDecode(final LogEntryEncoder encoder, final LogEntryDecoder decoder, final CyclicBarrier barrier) throws Exception {
ByteBuffer buf = ByteBuffer.wrap(DATA);
LogEntry entry = new LogEntry(EnumOutter.EntryType.ENTRY_TYPE_NO_OP);
entry.setData(buf);
entry.setPeers(Arrays.asList(new PeerId("localhost", 99, 1), new PeerId("localhost", 100, 2)));
if (barrier != null) {
barrier.await();
}
for (int i = 0; i < TIMES; i++) {
entry.setId(new LogId(i, i));
byte[] content = encoder.encode(entry);
assert (content.length > 0);
this.logSize.addAndGet(content.length);
LogEntry nLog = decoder.decode(content);
assertEquals(2, nLog.getPeers().size());
assertArrayEquals(DATA, nLog.getData().array());
assertEquals(i, nLog.getId().getIndex());
assertEquals(i, nLog.getId().getTerm());
}
if (barrier != null) {
barrier.await();
}
}
use of com.alipay.sofa.jraft.entity.LogId in project sofa-jraft by sofastack.
the class LogEntryV2CodecFactoryTest method testEncodeDecodeWithLearners.
@Test
public void testEncodeDecodeWithLearners() {
LogEntry entry = new LogEntry(EnumOutter.EntryType.ENTRY_TYPE_NO_OP);
entry.setId(new LogId(100, 3));
entry.setPeers(Arrays.asList(new PeerId("localhost", 99, 1), new PeerId("localhost", 100, 2)));
List<PeerId> theLearners = createLearners("192.168.1.1:8081", "192.168.1.2:8081");
entry.setLearners(theLearners);
assertSame(entry.getData(), LogEntry.EMPTY_DATA);
assertNull(entry.getOldPeers());
byte[] content = this.encoder.encode(entry);
assertNotNull(content);
assertTrue(content.length > 0);
LogEntry nentry = this.decoder.decode(content);
assertNotNull(nentry);
assertNull(nentry.getOldLearners());
assertPeersAndLearners(theLearners, nentry);
// test old learners
List<PeerId> theOldLearners = createLearners("192.168.1.1:8081");
entry.setOldLearners(theOldLearners);
content = this.encoder.encode(entry);
assertNotNull(content);
assertTrue(content.length > 0);
nentry = this.decoder.decode(content);
assertNotNull(nentry);
assertPeersAndLearners(theLearners, nentry);
List<PeerId> oldLearners = nentry.getOldLearners();
assertNotNull(oldLearners);
assertEquals(1, oldLearners.size());
assertEquals(oldLearners, theOldLearners);
}
use of com.alipay.sofa.jraft.entity.LogId in project sofa-jraft by sofastack.
the class LogManagerTest method testSetAppliedId.
@Test
public void testSetAppliedId() throws Exception {
final List<LogEntry> mockEntries = mockAddEntries();
for (int i = 0; i < 10; i++) {
// it's in memory
Assert.assertEquals(mockEntries.get(i), this.logManager.getEntryFromMemory(i + 1));
}
// waiting for setDiskId()
Thread.sleep(200);
this.logManager.setAppliedId(new LogId(10, 10));
for (int i = 0; i < 10; i++) {
assertNull(this.logManager.getEntryFromMemory(i + 1));
Assert.assertEquals(mockEntries.get(i), this.logManager.getEntry(i + 1));
}
}
Aggregations