use of org.apache.ratis.conf.RaftProperties in project incubator-ratis by apache.
the class MiniRaftCluster method newRaftServer.
private RaftServerProxy newRaftServer(RaftPeerId id, RaftGroup group, boolean format) {
try {
final File dir = getStorageDir(id);
if (format) {
FileUtils.deleteFully(dir);
LOG.info("Formatted directory {}", dir);
}
final RaftProperties prop = new RaftProperties(properties);
RaftServerConfigKeys.setStorageDir(prop, dir);
final StateMachine stateMachine = getStateMachine4Test(properties);
return newRaftServer(id, stateMachine, group, prop);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
use of org.apache.ratis.conf.RaftProperties in project incubator-ratis by apache.
the class RaftAsyncTests method setup.
@Before
public void setup() {
properties = new RaftProperties();
properties.setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY, SimpleStateMachine4Testing.class, StateMachine.class);
TimeDuration retryCacheExpiryDuration = TimeDuration.valueOf(5, TimeUnit.SECONDS);
RaftServerConfigKeys.RetryCache.setExpiryTime(properties, retryCacheExpiryDuration);
}
use of org.apache.ratis.conf.RaftProperties in project incubator-ratis by apache.
the class RaftExceptionBaseTest method setup.
@Before
public void setup() throws IOException {
final RaftProperties prop = getProperties();
RaftServerConfigKeys.Log.Appender.setBufferCapacity(prop, SizeInBytes.valueOf("4KB"));
cluster = newCluster(NUM_PEERS);
cluster.start();
}
use of org.apache.ratis.conf.RaftProperties in project incubator-ratis by apache.
the class TestBatchAppend method data.
@Parameterized.Parameters
public static Collection<Object[]> data() throws IOException {
RaftProperties prop = new RaftProperties();
prop.setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY, SimpleStateMachine4Testing.class, StateMachine.class);
RaftServerConfigKeys.Log.setSegmentSizeMax(prop, SizeInBytes.valueOf("8KB"));
// enable batch appending
RaftServerConfigKeys.Log.Appender.setBatchEnabled(prop, true);
// set batch appending buffer size to 4KB
RaftServerConfigKeys.Log.Appender.setBufferCapacity(prop, SizeInBytes.valueOf("8KB"));
return ParameterizedBaseTest.getMiniRaftClusters(prop, 3);
}
use of org.apache.ratis.conf.RaftProperties in project incubator-ratis by apache.
the class TestCacheEviction method testEvictionInSegmentedLog.
@Test
public void testEvictionInSegmentedLog() throws Exception {
final RaftProperties prop = new RaftProperties();
prop.setClass(MiniRaftCluster.STATEMACHINE_CLASS_KEY, SimpleStateMachine4Testing.class, StateMachine.class);
RaftServerConfigKeys.Log.setSegmentSizeMax(prop, SizeInBytes.valueOf("8KB"));
RaftServerConfigKeys.Log.setPreallocatedSize(prop, SizeInBytes.valueOf("8KB"));
final RaftPeerId peerId = RaftPeerId.valueOf("s0");
final int maxCachedNum = RaftServerConfigKeys.Log.maxCachedSegmentNum(prop);
File storageDir = getTestDir();
RaftServerConfigKeys.setStorageDir(prop, storageDir);
RaftStorage storage = new RaftStorage(storageDir, RaftServerConstants.StartupOption.REGULAR);
RaftServerImpl server = Mockito.mock(RaftServerImpl.class);
ServerState state = Mockito.mock(ServerState.class);
Mockito.when(server.getState()).thenReturn(state);
Mockito.when(server.getFollowerNextIndices()).thenReturn(new long[] {});
Mockito.when(state.getLastAppliedIndex()).thenReturn(0L);
SegmentedRaftLog raftLog = new SegmentedRaftLog(peerId, server, storage, -1, prop);
raftLog.open(RaftServerConstants.INVALID_LOG_INDEX, null);
List<SegmentRange> slist = TestSegmentedRaftLog.prepareRanges(maxCachedNum, 7, 0);
LogEntryProto[] entries = generateEntries(slist);
raftLog.append(entries).forEach(CompletableFuture::join);
// check the current cached segment number: the last segment is still open
Assert.assertEquals(maxCachedNum - 1, raftLog.getRaftLogCache().getCachedSegmentNum());
Mockito.when(server.getFollowerNextIndices()).thenReturn(new long[] { 21, 40, 40 });
Mockito.when(state.getLastAppliedIndex()).thenReturn(35L);
slist = TestSegmentedRaftLog.prepareRanges(2, 7, 7 * maxCachedNum);
entries = generateEntries(slist);
raftLog.append(entries).forEach(CompletableFuture::join);
// check the cached segment number again. since the slowest follower is on
// index 21, the eviction should happen and evict 3 segments
Assert.assertEquals(maxCachedNum + 1 - 3, raftLog.getRaftLogCache().getCachedSegmentNum());
}
Aggregations