GenericEntityOwnershipListener<TestInstanceIdentifier,
GenericEntityOwnershipChange<TestInstanceIdentifier, TestEntity>>>> singletonServiceGroup;
+ private ClusterSingletonServiceRegistration firstReg;
+ private ClusterSingletonServiceRegistration secondReg;
+
/**
* Initialization functionality for every Tests in this suite.
*
doReturn(SERVICE_GROUP_IDENT).when(mockClusterSingletonService).getIdentifier();
doReturn(SERVICE_GROUP_IDENT).when(mockClusterSingletonServiceSecond).getIdentifier();
+ firstReg = new AbstractClusterSingletonServiceRegistration(mockClusterSingletonService) {
+ @Override
+ protected void removeRegistration() {
+ // No-op
+ }
+ };
+ secondReg = new AbstractClusterSingletonServiceRegistration(mockClusterSingletonServiceSecond) {
+ @Override
+ protected void removeRegistration() {
+ // No-op
+ }
+ };
+
singletonServiceGroup = new ClusterSingletonServiceGroupImpl<>(SERVICE_IDENTIFIER, MAIN_ENTITY, CLOSE_ENTITY,
mockEosService);
}
public void initializationSlaveTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToSlave());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService, never()).registerCandidate(CLOSE_ENTITY);
public void initializationNoMasterTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToSlaveNoMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService, never()).registerCandidate(CLOSE_ENTITY);
public void initializationInJeopardyTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToJeopardy());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService, never()).registerCandidate(CLOSE_ENTITY);
public void serviceRegistrationClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
}
/**
throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
- singletonServiceGroup.registerService(mockClusterSingletonServiceSecond);
+ singletonServiceGroup.registerService(firstReg);
+ singletonServiceGroup.registerService(secondReg);
}
/**
public void serviceUnregistrationClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
- assertTrue(singletonServiceGroup.unregisterService(mockClusterSingletonService));
+ singletonServiceGroup.registerService(firstReg);
+ assertNotNull(singletonServiceGroup.unregisterService(firstReg));
verify(mockClusterSingletonService, never()).closeServiceInstance();
}
throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
- singletonServiceGroup.registerService(mockClusterSingletonServiceSecond);
- assertFalse(singletonServiceGroup.unregisterService(mockClusterSingletonService));
+ singletonServiceGroup.registerService(firstReg);
+ singletonServiceGroup.registerService(secondReg);
+ assertNull(singletonServiceGroup.unregisterService(firstReg));
verify(mockClusterSingletonService, never()).closeServiceInstance();
}
public void getSlaveClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToSlave());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
}
public void tryToTakeLeaderClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
public void takeMasterClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
public void waitToTakeMasterClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
public void inJeopardyInWaitPhaseClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
- singletonServiceGroup.registerService(mockClusterSingletonServiceSecond);
+ singletonServiceGroup.registerService(firstReg);
+ singletonServiceGroup.registerService(secondReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
public void inJeopardyLeaderClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
verify(mockClusterSingletonService).instantiateServiceInstance();
// Base entity in jeopardy should not matter...
- singletonServiceGroup.ownershipChanged(getEntityToJeopardy());
+ singletonServiceGroup.ownershipChanged(getEntityToMasterJeopardy());
verify(mockClusterSingletonService, never()).closeServiceInstance();
// ... application state is actually guarded by cleanup
public void lostLeaderClusterSingletonServiceGroupTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
* Not initialized provider has to close and remove all singletonServices from Group and
* Group itself remove too.
*/
- @Test(expected = RuntimeException.class)
+ @Test(expected = IllegalStateException.class)
public void tryToTakeLeaderForNotInitializedGroupTest() {
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
}
/**
public void checkClosingRegistrationTest() throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
singletonServiceGroup.ownershipChanged(getDoubleEntityToMaster());
verify(mockClusterSingletonService).instantiateServiceInstance();
- assertTrue(singletonServiceGroup.unregisterService(mockClusterSingletonService));
+ assertNotNull(singletonServiceGroup.unregisterService(firstReg));
verify(mockClusterSingletonService, never()).closeServiceInstance();
singletonServiceGroup.ownershipChanged(getEntityToSlaveNoMaster());
verify(mockClusterSingletonService).closeServiceInstance();
throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
throws CandidateAlreadyRegisteredException {
singletonServiceGroup.initialize();
verify(mockEosService).registerCandidate(MAIN_ENTITY);
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToSlave());
verify(mockClusterSingletonService, never()).instantiateServiceInstance();
verify(mockEosService, never()).registerCandidate(CLOSE_ENTITY);
ExecutionException {
initializeGroupAndStartService();
- assertTrue(singletonServiceGroup.unregisterService(mockClusterSingletonService));
+ assertNotNull(singletonServiceGroup.unregisterService(firstReg));
verify(mockClusterSingletonService, never()).closeServiceInstance();
- verify(mockEntityCandReg, never()).close();
+ verify(mockEntityCandReg).close();
final ListenableFuture<?> future = singletonServiceGroup.closeClusterSingletonGroup();
assertNotNull(future);
assertFalse(future.isDone());
- verify(mockClusterSingletonService, never()).closeServiceInstance();
- verify(mockEntityCandReg).close();
+ verify(mockClusterSingletonService).closeServiceInstance();
singletonServiceGroup.ownershipChanged(getEntityToSlave());
- verify(mockClusterSingletonService).closeServiceInstance();
verify(mockCloseEntityCandReg).close();
singletonServiceGroup.ownershipChanged(getDoubleEntityToSlave());
private void initializeGroupAndStartService() throws CandidateAlreadyRegisteredException {
initialize();
- singletonServiceGroup.registerService(mockClusterSingletonService);
+ singletonServiceGroup.registerService(firstReg);
singletonServiceGroup.ownershipChanged(getEntityToMaster());
verify(mockEosService).registerCandidate(CLOSE_ENTITY);
singletonServiceGroup.ownershipChanged(getDoubleEntityToMaster());
EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NO_OWNER);
}
+ private static GenericEntityOwnershipChange<TestInstanceIdentifier, TestEntity> getEntityToMasterJeopardy() {
+ return new GenericEntityOwnershipChange<>(MAIN_ENTITY,
+ EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED, true);
+ }
+
private static GenericEntityOwnershipChange<TestInstanceIdentifier, TestEntity> getEntityToJeopardy() {
return new GenericEntityOwnershipChange<>(MAIN_ENTITY,
EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER, true);