use of com.hazelcast.config.cp.SemaphoreConfig in project hazelcast by hazelcast.
the class ConfigXmlGeneratorTest method testCPSubsystemConfig.
@Test
public void testCPSubsystemConfig() {
Config config = new Config();
config.getCPSubsystemConfig().setCPMemberCount(10).setGroupSize(5).setSessionTimeToLiveSeconds(15).setSessionHeartbeatIntervalSeconds(3).setMissingCPMemberAutoRemovalSeconds(120).setFailOnIndeterminateOperationState(true).setPersistenceEnabled(true).setBaseDir(new File("/custom-dir"));
config.getCPSubsystemConfig().getRaftAlgorithmConfig().setLeaderElectionTimeoutInMillis(500).setLeaderHeartbeatPeriodInMillis(100).setMaxMissedLeaderHeartbeatCount(10).setAppendRequestMaxEntryCount(25).setAppendRequestMaxEntryCount(250).setUncommittedEntryCountToRejectNewAppends(75).setAppendRequestBackoffTimeoutInMillis(50);
config.getCPSubsystemConfig().addSemaphoreConfig(new SemaphoreConfig("sem1", true, 1)).addSemaphoreConfig(new SemaphoreConfig("sem2", false, 2));
config.getCPSubsystemConfig().addLockConfig(new FencedLockConfig("lock1", 1)).addLockConfig(new FencedLockConfig("lock1", 2));
CPSubsystemConfig generatedConfig = getNewConfigViaXMLGenerator(config).getCPSubsystemConfig();
assertTrue(generatedConfig + " should be compatible with " + config.getCPSubsystemConfig(), new CPSubsystemConfigChecker().check(config.getCPSubsystemConfig(), generatedConfig));
}
use of com.hazelcast.config.cp.SemaphoreConfig in project hazelcast by hazelcast.
the class YamlConfigBuilderTest method testCPSubsystemConfig.
@Override
@Test
public void testCPSubsystemConfig() {
String yaml = "" + "hazelcast:\n" + " cp-subsystem:\n" + " cp-member-count: 10\n" + " group-size: 5\n" + " session-time-to-live-seconds: 15\n" + " session-heartbeat-interval-seconds: 3\n" + " missing-cp-member-auto-removal-seconds: 120\n" + " fail-on-indeterminate-operation-state: true\n" + " persistence-enabled: true\n" + " base-dir: /mnt/cp-data\n" + " data-load-timeout-seconds: 30\n" + " raft-algorithm:\n" + " leader-election-timeout-in-millis: 500\n" + " leader-heartbeat-period-in-millis: 100\n" + " max-missed-leader-heartbeat-count: 3\n" + " append-request-max-entry-count: 25\n" + " commit-index-advance-count-to-snapshot: 250\n" + " uncommitted-entry-count-to-reject-new-appends: 75\n" + " append-request-backoff-timeout-in-millis: 50\n" + " semaphores:\n" + " sem1:\n" + " jdk-compatible: true\n" + " initial-permits: 1\n" + " sem2:\n" + " jdk-compatible: false\n" + " initial-permits: 2\n" + " locks:\n" + " lock1:\n" + " lock-acquire-limit: 1\n" + " lock2:\n" + " lock-acquire-limit: 2\n";
Config config = buildConfig(yaml);
CPSubsystemConfig cpSubsystemConfig = config.getCPSubsystemConfig();
assertEquals(10, cpSubsystemConfig.getCPMemberCount());
assertEquals(5, cpSubsystemConfig.getGroupSize());
assertEquals(15, cpSubsystemConfig.getSessionTimeToLiveSeconds());
assertEquals(3, cpSubsystemConfig.getSessionHeartbeatIntervalSeconds());
assertEquals(120, cpSubsystemConfig.getMissingCPMemberAutoRemovalSeconds());
assertTrue(cpSubsystemConfig.isFailOnIndeterminateOperationState());
assertTrue(cpSubsystemConfig.isPersistenceEnabled());
assertEquals(new File("/mnt/cp-data").getAbsoluteFile(), cpSubsystemConfig.getBaseDir().getAbsoluteFile());
assertEquals(30, cpSubsystemConfig.getDataLoadTimeoutSeconds());
RaftAlgorithmConfig raftAlgorithmConfig = cpSubsystemConfig.getRaftAlgorithmConfig();
assertEquals(500, raftAlgorithmConfig.getLeaderElectionTimeoutInMillis());
assertEquals(100, raftAlgorithmConfig.getLeaderHeartbeatPeriodInMillis());
assertEquals(3, raftAlgorithmConfig.getMaxMissedLeaderHeartbeatCount());
assertEquals(25, raftAlgorithmConfig.getAppendRequestMaxEntryCount());
assertEquals(250, raftAlgorithmConfig.getCommitIndexAdvanceCountToSnapshot());
assertEquals(75, raftAlgorithmConfig.getUncommittedEntryCountToRejectNewAppends());
assertEquals(50, raftAlgorithmConfig.getAppendRequestBackoffTimeoutInMillis());
SemaphoreConfig semaphoreConfig1 = cpSubsystemConfig.findSemaphoreConfig("sem1");
SemaphoreConfig semaphoreConfig2 = cpSubsystemConfig.findSemaphoreConfig("sem2");
assertNotNull(semaphoreConfig1);
assertNotNull(semaphoreConfig2);
assertTrue(semaphoreConfig1.isJDKCompatible());
assertFalse(semaphoreConfig2.isJDKCompatible());
assertEquals(1, semaphoreConfig1.getInitialPermits());
assertEquals(2, semaphoreConfig2.getInitialPermits());
FencedLockConfig lockConfig1 = cpSubsystemConfig.findLockConfig("lock1");
FencedLockConfig lockConfig2 = cpSubsystemConfig.findLockConfig("lock2");
assertNotNull(lockConfig1);
assertNotNull(lockConfig2);
assertEquals(1, lockConfig1.getLockAcquireLimit());
assertEquals(2, lockConfig2.getLockAcquireLimit());
}
use of com.hazelcast.config.cp.SemaphoreConfig in project hazelcast by hazelcast.
the class SemaphoreInitialPermitsTest method createConfig.
@Override
protected Config createConfig(int cpNodeCount, int groupSize) {
Config config = super.createConfig(cpNodeCount, groupSize);
CPSubsystemConfig cpSubsystemConfig = config.getCPSubsystemConfig();
if (cpSubsystemEnabled) {
cpSubsystemConfig.setCPMemberCount(cpNodeCount).setGroupSize(groupSize);
}
SemaphoreConfig semaphoreConfig = new SemaphoreConfig(objectName, jdkCompatible, initialPermits);
cpSubsystemConfig.addSemaphoreConfig(semaphoreConfig);
return config;
}
use of com.hazelcast.config.cp.SemaphoreConfig in project hazelcast by hazelcast.
the class SemaphoreRegistry method createNewResource.
@Override
protected Semaphore createNewResource(CPGroupId groupId, String name) {
SemaphoreConfig semaphoreConfig = cpSubsystemConfig.findSemaphoreConfig(name);
int initialPermits = semaphoreConfig != null ? semaphoreConfig.getInitialPermits() : DEFAULT_INITIAL_PERMITS;
return new Semaphore(groupId, name, initialPermits);
}
use of com.hazelcast.config.cp.SemaphoreConfig in project hazelcast by hazelcast.
the class SemaphoreService method createProxy.
@Override
public ISemaphore createProxy(String proxyName) {
try {
proxyName = withoutDefaultGroupName(proxyName);
RaftGroupId groupId = raftService.createRaftGroupForProxy(proxyName);
String objectName = getObjectNameForProxy(proxyName);
SemaphoreConfig config = getConfig(proxyName);
return config != null && config.isJDKCompatible() ? new SessionlessSemaphoreProxy(nodeEngine, groupId, proxyName, objectName) : new SessionAwareSemaphoreProxy(nodeEngine, groupId, proxyName, objectName);
} catch (Exception e) {
throw rethrow(e);
}
}
Aggregations