2 * Copyright (c) 2017 Pantheon Technologies, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.mdsal.singleton.dom.impl;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertNull;
13 import static org.mockito.Matchers.any;
14 import static org.mockito.Matchers.eq;
15 import static org.mockito.Mockito.doNothing;
16 import static org.mockito.Mockito.doReturn;
17 import static org.mockito.Mockito.doThrow;
18 import static org.mockito.Mockito.never;
19 import static org.mockito.Mockito.verify;
20 import static org.opendaylight.mdsal.singleton.dom.impl.AbstractClusterSingletonServiceProviderImpl.CLOSE_SERVICE_ENTITY_TYPE;
21 import static org.opendaylight.mdsal.singleton.dom.impl.AbstractClusterSingletonServiceProviderImpl.SERVICE_ENTITY_TYPE;
23 import com.google.common.util.concurrent.Futures;
24 import com.google.common.util.concurrent.ListenableFuture;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.mockito.Mock;
28 import org.mockito.MockitoAnnotations;
29 import org.opendaylight.mdsal.eos.common.api.CandidateAlreadyRegisteredException;
30 import org.opendaylight.mdsal.eos.common.api.EntityOwnershipChangeState;
31 import org.opendaylight.mdsal.eos.dom.api.DOMEntity;
32 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipCandidateRegistration;
33 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipChange;
34 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipListenerRegistration;
35 import org.opendaylight.mdsal.eos.dom.api.DOMEntityOwnershipService;
36 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
37 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
38 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
41 * Abstract {@link DOMClusterSingletonServiceProviderImpl} testing substrate.
43 public abstract class AbstractDOMClusterServiceProviderTest {
45 * Base states for AbstractClusterProjectProvider.
47 enum TestClusterSingletonServiceState {
49 * State represents a correct Instantiated process.
53 * State represents a correct call abstract method instantiatingProject.
57 * State represents a correct call abstract method destryingProject.
62 static class TestClusterSingletonService implements ClusterSingletonService {
63 private static final ServiceGroupIdentifier SERVICE_ID = ServiceGroupIdentifier.create(SERVICE_NAME);
65 private TestClusterSingletonServiceState serviceState = TestClusterSingletonServiceState.INITIALIZED;
68 public final ServiceGroupIdentifier getIdentifier() {
73 public final void instantiateServiceInstance() {
74 this.serviceState = TestClusterSingletonServiceState.STARTED;
77 final TestClusterSingletonServiceState getServiceState() {
82 public ListenableFuture<Void> closeServiceInstance() {
83 this.serviceState = TestClusterSingletonServiceState.DESTROYED;
84 return Futures.immediateFuture(null);
88 static final String SERVICE_NAME = "testServiceName";
89 static final DOMEntity ENTITY = new DOMEntity(SERVICE_ENTITY_TYPE, SERVICE_NAME);
90 static final DOMEntity DOUBLE_ENTITY = new DOMEntity(CLOSE_SERVICE_ENTITY_TYPE, SERVICE_NAME);
93 protected DOMEntityOwnershipService mockEos;
95 protected DOMEntityOwnershipCandidateRegistration mockEntityCandReg;
97 protected DOMEntityOwnershipCandidateRegistration mockDoubleEntityCandReg;
99 protected DOMEntityOwnershipListenerRegistration mockEosEntityListReg;
101 protected DOMEntityOwnershipListenerRegistration mockEosDoubleEntityListReg;
103 protected DOMClusterSingletonServiceProviderImpl clusterSingletonServiceProvider;
104 protected TestClusterSingletonService clusterSingletonService;
105 protected TestClusterSingletonService clusterSingletonService2;
108 public void setup() throws CandidateAlreadyRegisteredException {
109 MockitoAnnotations.initMocks(this);
111 doNothing().when(mockEosEntityListReg).close();
112 doNothing().when(mockEosDoubleEntityListReg).close();
113 doNothing().when(mockEntityCandReg).close();
114 doNothing().when(mockDoubleEntityCandReg).close();
115 doReturn(mockEosEntityListReg).when(mockEos).registerListener(eq(SERVICE_ENTITY_TYPE),
116 any(DOMClusterSingletonServiceProviderImpl.class));
117 doReturn(mockEosDoubleEntityListReg).when(mockEos).registerListener(eq(CLOSE_SERVICE_ENTITY_TYPE),
118 any(DOMClusterSingletonServiceProviderImpl.class));
119 doReturn(mockEntityCandReg).when(mockEos).registerCandidate(ENTITY);
120 doReturn(mockDoubleEntityCandReg).when(mockEos).registerCandidate(DOUBLE_ENTITY);
122 clusterSingletonServiceProvider = new DOMClusterSingletonServiceProviderImpl(mockEos);
123 clusterSingletonServiceProvider.initializeProvider();
124 verify(mockEos).registerListener(SERVICE_ENTITY_TYPE, clusterSingletonServiceProvider);
125 verify(mockEos).registerListener(CLOSE_SERVICE_ENTITY_TYPE, clusterSingletonServiceProvider);
127 clusterSingletonService = instantiateService();
128 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
129 clusterSingletonService2 = instantiateService();
130 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
133 TestClusterSingletonService instantiateService() {
134 return new TestClusterSingletonService();
137 static final DOMEntityOwnershipChange getEntityToMaster() {
138 return new DOMEntityOwnershipChange(ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
141 static final DOMEntityOwnershipChange getEntityToSlave() {
142 return new DOMEntityOwnershipChange(ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
145 static final DOMEntityOwnershipChange getInitEntityToSlave() {
146 return new DOMEntityOwnershipChange(ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_CHANGED);
149 static final DOMEntityOwnershipChange getInitEntityToSlaveNoMaster() {
150 return new DOMEntityOwnershipChange(ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER);
153 static final DOMEntityOwnershipChange getDoubleEntityToMaster() {
154 return new DOMEntityOwnershipChange(DOUBLE_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_GRANTED);
157 static final DOMEntityOwnershipChange getInitDoubleEntityToSlave() {
158 return new DOMEntityOwnershipChange(DOUBLE_ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_CHANGED);
161 static final DOMEntityOwnershipChange getDoubleEntityToSlave() {
162 return new DOMEntityOwnershipChange(DOUBLE_ENTITY, EntityOwnershipChangeState.LOCAL_OWNERSHIP_LOST_NEW_OWNER);
165 static final DOMEntityOwnershipChange getEntityToJeopardy() {
166 return new DOMEntityOwnershipChange(ENTITY, EntityOwnershipChangeState.REMOTE_OWNERSHIP_LOST_NO_OWNER, true);
170 * Test checks NullPointer for null {@link DOMEntityOwnershipService} input value.
172 @Test(expected = NullPointerException.class)
173 public void initializationClusterSingletonServiceProviderNullInputTest() {
174 new DOMClusterSingletonServiceProviderImpl(null).close();
178 * Test GoldPath for close {@link DOMClusterSingletonServiceProviderImpl}.
180 * @throws Exception if the condition does not meet
183 public void closeClusterSingletonServiceProviderTest() throws Exception {
184 verify(mockEos).registerListener(SERVICE_ENTITY_TYPE, clusterSingletonServiceProvider);
185 verify(mockEos).registerListener(CLOSE_SERVICE_ENTITY_TYPE, clusterSingletonServiceProvider);
186 clusterSingletonServiceProvider.close();
187 verify(mockEosEntityListReg).close();
188 verify(mockEosDoubleEntityListReg).close();
192 * Test parser ServiceIdentifier from Entity.
195 public void makeEntityClusterSingletonServiceProviderTest() {
196 final DOMEntity testEntity = clusterSingletonServiceProvider.createEntity(SERVICE_ENTITY_TYPE, SERVICE_NAME);
197 assertEquals(ENTITY, testEntity);
198 final DOMEntity testDbEn = clusterSingletonServiceProvider.createEntity(CLOSE_SERVICE_ENTITY_TYPE,
200 assertEquals(DOUBLE_ENTITY, testDbEn);
204 * Test parser ServiceIdentifier from Entity.
207 public void getIdentifierClusterSingletonServiceProviderTest() {
208 final String entityIdentifier = clusterSingletonServiceProvider.getServiceIdentifierFromEntity(ENTITY);
209 assertEquals(SERVICE_NAME, entityIdentifier);
210 final String doubleEntityId = clusterSingletonServiceProvider.getServiceIdentifierFromEntity(DOUBLE_ENTITY);
211 assertEquals(SERVICE_NAME, doubleEntityId);
215 * Test GoldPath for initialization {@link ClusterSingletonService}.
217 * @throws CandidateAlreadyRegisteredException if the condition does not meet
220 public void initializationClusterSingletonServiceTest() throws CandidateAlreadyRegisteredException {
221 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
222 .registerClusterSingletonService(clusterSingletonService);
224 verify(mockEos).registerCandidate(ENTITY);
225 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
229 * Test GoldPath for initialization with init ownership result SLAVE {@link ClusterSingletonService}.
231 * @throws CandidateAlreadyRegisteredException if the condition does not meet
234 public void slaveInitClusterSingletonServiceTest() throws CandidateAlreadyRegisteredException {
235 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
236 .registerClusterSingletonService(clusterSingletonService);
238 verify(mockEos).registerCandidate(ENTITY);
239 clusterSingletonServiceProvider.ownershipChanged(getInitEntityToSlave());
240 verify(mockEos, never()).registerCandidate(DOUBLE_ENTITY);
241 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
245 * Test GoldPath for initialization with init ownership result SLAVE, but NO-MASTER {@link ClusterSingletonService}.
247 * @throws CandidateAlreadyRegisteredException if the condition does not meet
250 public void slaveInitNoMasterClusterSingletonServiceTest() throws CandidateAlreadyRegisteredException {
251 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
252 .registerClusterSingletonService(clusterSingletonService);
254 verify(mockEos).registerCandidate(ENTITY);
255 clusterSingletonServiceProvider.ownershipChanged(getInitEntityToSlaveNoMaster());
256 verify(mockEos, never()).registerCandidate(DOUBLE_ENTITY);
257 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
261 * Test GoldPath for initialization with init ownership result MASTER {@link ClusterSingletonService}.
263 * @throws CandidateAlreadyRegisteredException if the condition does not meet
266 public void masterInitClusterSingletonServiceTest() throws CandidateAlreadyRegisteredException {
267 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
268 .registerClusterSingletonService(clusterSingletonService);
270 verify(mockEos).registerCandidate(ENTITY);
271 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
272 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
273 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
277 * Test GoldPath for initialization with init ownership result MASTER {@link ClusterSingletonService}.
279 * @throws CandidateAlreadyRegisteredException if the condition does not meet
282 public void masterInitSlaveDoubleCandidateClusterSingletonServiceTest() throws CandidateAlreadyRegisteredException {
283 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
284 .registerClusterSingletonService(clusterSingletonService);
286 verify(mockEos).registerCandidate(ENTITY);
287 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
288 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
289 clusterSingletonServiceProvider.ownershipChanged(getInitDoubleEntityToSlave());
290 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
294 * Test GoldPath for takeLeadership with ownership result MASTER {@link ClusterSingletonService}.
296 * @throws CandidateAlreadyRegisteredException if the condition does not meet
299 public void takeLeadershipClusterSingletonServiceTest() throws CandidateAlreadyRegisteredException {
300 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
301 .registerClusterSingletonService(clusterSingletonService);
303 verify(mockEos).registerCandidate(ENTITY);
304 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
305 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
306 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
307 clusterSingletonServiceProvider.ownershipChanged(getDoubleEntityToMaster());
308 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService.getServiceState());
312 * Test GoldPath for initialization with init ownership result MASTER {@link ClusterSingletonService}.
314 * @throws CandidateAlreadyRegisteredException if the condition does not meet
317 public void masterInitClusterSingletonServiceTwoServicesTest() throws CandidateAlreadyRegisteredException {
318 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
319 .registerClusterSingletonService(clusterSingletonService);
321 verify(mockEos).registerCandidate(ENTITY);
322 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
323 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
324 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
325 final ClusterSingletonServiceRegistration reg2 = clusterSingletonServiceProvider
326 .registerClusterSingletonService(clusterSingletonService2);
328 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
332 * Test GoldPath for takeLeadership with ownership result MASTER {@link ClusterSingletonService}.
334 * @throws CandidateAlreadyRegisteredException if the condition does not meet
337 public void takeLeadershipClusterSingletonServiceTwoAddDuringWaitPhaseServicesTest()
338 throws CandidateAlreadyRegisteredException {
339 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
340 .registerClusterSingletonService(clusterSingletonService);
342 verify(mockEos).registerCandidate(ENTITY);
343 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
344 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
345 final ClusterSingletonServiceRegistration reg2 = clusterSingletonServiceProvider
346 .registerClusterSingletonService(clusterSingletonService2);
348 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
349 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
350 clusterSingletonServiceProvider.ownershipChanged(getDoubleEntityToMaster());
351 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService.getServiceState());
352 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService2.getServiceState());
356 * Test checks CandidateAlreadyRegisteredException processing in initialization phase.
358 * @throws CandidateAlreadyRegisteredException if the condition does not meet
360 @Test(expected = RuntimeException.class)
361 public void initializationClusterSingletonServiceCandidateAlreadyRegistredTest()
362 throws CandidateAlreadyRegisteredException {
363 doThrow(CandidateAlreadyRegisteredException.class).when(mockEos).registerCandidate(ENTITY);
364 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
365 .registerClusterSingletonService(clusterSingletonService);
370 * Test GoldPath for lostLeadership during tryToTakeLeadership with ownership result MASTER
371 * {@link ClusterSingletonService}.
373 * @throws CandidateAlreadyRegisteredException if the condition does not meet
376 public void lostLeadershipDuringTryToTakeLeadershipClusterSingletonServiceTest()
377 throws CandidateAlreadyRegisteredException {
378 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
379 .registerClusterSingletonService(clusterSingletonService);
381 verify(mockEos).registerCandidate(ENTITY);
382 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
383 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
384 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
385 clusterSingletonServiceProvider.ownershipChanged(getEntityToSlave());
386 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
387 clusterSingletonServiceProvider.ownershipChanged(getDoubleEntityToMaster());
388 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
392 * Test GoldPath for lostLeadership with ownership result MASTER-TO-SLAVE {@link ClusterSingletonService}.
394 * @throws CandidateAlreadyRegisteredException if the condition does not meet
397 public void lostLeadershipClusterSingletonServiceTest() throws CandidateAlreadyRegisteredException {
398 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
399 .registerClusterSingletonService(clusterSingletonService);
401 verify(mockEos).registerCandidate(ENTITY);
402 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
403 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
404 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
405 clusterSingletonServiceProvider.ownershipChanged(getInitDoubleEntityToSlave());
406 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
407 clusterSingletonServiceProvider.ownershipChanged(getDoubleEntityToMaster());
408 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService.getServiceState());
409 clusterSingletonServiceProvider.ownershipChanged(getEntityToSlave());
410 assertEquals(TestClusterSingletonServiceState.DESTROYED, clusterSingletonService.getServiceState());
414 * Test checks inJeopardy Cluster Node state for Slave Instance.
416 * @throws CandidateAlreadyRegisteredException if the condition does not meet
419 public void inJeopardySlaveTest() throws CandidateAlreadyRegisteredException {
420 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
421 .registerClusterSingletonService(clusterSingletonService);
423 verify(mockEos).registerCandidate(ENTITY);
424 clusterSingletonServiceProvider.ownershipChanged(getInitEntityToSlave());
425 verify(mockEos, never()).registerCandidate(DOUBLE_ENTITY);
426 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
427 clusterSingletonServiceProvider.ownershipChanged(getEntityToJeopardy());
428 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
429 verify(mockEosEntityListReg, never()).close();
430 verify(mockEosDoubleEntityListReg, never()).close();
431 verify(mockEntityCandReg, never()).close();
432 verify(mockDoubleEntityCandReg, never()).close();
436 * Test GoldPath for takeLeadership with ownership result MASTER {@link ClusterSingletonService}.
438 * @throws CandidateAlreadyRegisteredException if the condition does not meet
441 public void takeLeadershipClusterSingletonServiceTowServicesTest() throws CandidateAlreadyRegisteredException {
442 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
443 .registerClusterSingletonService(clusterSingletonService);
445 verify(mockEos).registerCandidate(ENTITY);
446 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
447 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
448 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
449 clusterSingletonServiceProvider.ownershipChanged(getDoubleEntityToMaster());
450 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService.getServiceState());
451 final ClusterSingletonServiceRegistration reg2 = clusterSingletonServiceProvider
452 .registerClusterSingletonService(clusterSingletonService2);
454 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService2.getServiceState());
458 * Test checks close processing for {@link ClusterSingletonServiceRegistration}.
460 * @throws Exception if the condition does not meet
463 public void closeClusterSingletonServiceRegistrationNoRoleTest() throws Exception {
464 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
465 .registerClusterSingletonService(clusterSingletonService);
467 verify(mockEos).registerCandidate(ENTITY);
468 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
470 verify(mockEosEntityListReg, never()).close();
471 verify(mockEosDoubleEntityListReg, never()).close();
472 verify(mockEntityCandReg).close();
473 verify(mockDoubleEntityCandReg, never()).close();
474 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
478 * Test checks close processing for {@link ClusterSingletonServiceRegistration}.
480 * @throws Exception if the condition does not meet
483 public void closeClusterSingletonServiceRegistrationNoRoleTwoServicesTest() throws Exception {
484 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
485 .registerClusterSingletonService(clusterSingletonService);
487 verify(mockEos).registerCandidate(ENTITY);
488 final ClusterSingletonServiceRegistration reg2 = clusterSingletonServiceProvider
489 .registerClusterSingletonService(clusterSingletonService2);
491 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
492 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
494 verify(mockEosEntityListReg, never()).close();
495 verify(mockEosDoubleEntityListReg, never()).close();
496 verify(mockEntityCandReg, never()).close();
497 verify(mockDoubleEntityCandReg, never()).close();
498 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
499 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
503 * Test checks close processing for {@link ClusterSingletonServiceRegistration}.
505 * @throws Exception if the condition does not meet
508 public void closeClusterSingletonServiceRegistrationSlaveTest() throws Exception {
509 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
510 .registerClusterSingletonService(clusterSingletonService);
512 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
513 verify(mockEos).registerCandidate(ENTITY);
514 clusterSingletonServiceProvider.ownershipChanged(getInitEntityToSlave());
516 verify(mockEosEntityListReg, never()).close();
517 verify(mockEosDoubleEntityListReg, never()).close();
518 verify(mockEntityCandReg).close();
519 verify(mockDoubleEntityCandReg, never()).close();
520 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
524 * Test checks close processing for {@link ClusterSingletonServiceRegistration}.
526 * @throws Exception if the condition does not meet
529 public void closeClusterSingletonServiceRegistrationSlaveTwoServicesTest() throws Exception {
530 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
531 .registerClusterSingletonService(clusterSingletonService);
533 verify(mockEos).registerCandidate(ENTITY);
534 final ClusterSingletonServiceRegistration reg2 = clusterSingletonServiceProvider
535 .registerClusterSingletonService(clusterSingletonService2);
537 clusterSingletonServiceProvider.ownershipChanged(getInitEntityToSlave());
538 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
539 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
541 verify(mockEosEntityListReg, never()).close();
542 verify(mockEosDoubleEntityListReg, never()).close();
543 verify(mockEntityCandReg, never()).close();
544 verify(mockDoubleEntityCandReg, never()).close();
545 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
546 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
550 * Test checks close processing for {@link ClusterSingletonServiceRegistration}.
552 * @throws Exception if the condition does not meet
555 public void closeClusterSingletonServiceRegistrationMasterTwoServicesTest() throws Exception {
556 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
557 .registerClusterSingletonService(clusterSingletonService);
559 final ClusterSingletonServiceRegistration reg2 = clusterSingletonServiceProvider
560 .registerClusterSingletonService(clusterSingletonService2);
562 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
563 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
564 verify(mockEos).registerCandidate(ENTITY);
565 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
566 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
567 clusterSingletonServiceProvider.ownershipChanged(getDoubleEntityToMaster());
568 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService.getServiceState());
569 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService2.getServiceState());
571 verify(mockEosEntityListReg, never()).close();
572 verify(mockEosDoubleEntityListReg, never()).close();
573 verify(mockEntityCandReg, never()).close();
574 verify(mockDoubleEntityCandReg, never()).close();
575 assertEquals(TestClusterSingletonServiceState.DESTROYED, clusterSingletonService.getServiceState());
576 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService2.getServiceState());
580 * Test checks validation Error processing for SLAVE-TO-MASTER entity Candidate role change.
582 * @throws Exception if the condition does not meet
585 public void tryToTakeLeaderForClosedServiceRegistrationTest() throws Exception {
586 final ClusterSingletonServiceRegistration reg = clusterSingletonServiceProvider
587 .registerClusterSingletonService(clusterSingletonService);
589 final ClusterSingletonServiceRegistration reg2 = clusterSingletonServiceProvider
590 .registerClusterSingletonService(clusterSingletonService2);
592 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
593 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService2.getServiceState());
594 verify(mockEos).registerCandidate(ENTITY);
596 clusterSingletonServiceProvider.ownershipChanged(getEntityToMaster());
597 verify(mockEos).registerCandidate(DOUBLE_ENTITY);
598 clusterSingletonServiceProvider.ownershipChanged(getDoubleEntityToMaster());
599 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
600 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService2.getServiceState());
601 verify(mockEosEntityListReg, never()).close();
602 verify(mockEosDoubleEntityListReg, never()).close();
603 verify(mockEntityCandReg, never()).close();
604 verify(mockDoubleEntityCandReg, never()).close();
605 assertEquals(TestClusterSingletonServiceState.INITIALIZED, clusterSingletonService.getServiceState());
606 assertEquals(TestClusterSingletonServiceState.STARTED, clusterSingletonService2.getServiceState());