2 * Copyright (c) 2016 Cisco Systems, Inc. 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
9 package org.opendaylight.mdsal.singleton.common.spi;
11 import static org.mockito.Matchers.any;
12 import static org.mockito.Mockito.doNothing;
13 import static org.mockito.Mockito.doReturn;
14 import static org.mockito.Mockito.verify;
15 import com.google.common.util.concurrent.Futures;
16 import org.junit.Assert;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.mockito.Mock;
20 import org.mockito.MockitoAnnotations;
21 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
22 import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
25 * Testing {@link ClusterSingletonServiceRegistrationDelegator}
27 public class ClusterSingletonServiceRegistrationDelegatorTest {
29 private static final String SERVICE_IDENTIFIER_NAME = "TestServiceIdent";
30 private static final ServiceGroupIdentifier SERVICE_IDENTIFIER = ServiceGroupIdentifier
31 .create(SERVICE_IDENTIFIER_NAME);
34 private ClusterSingletonServiceGroup<?, ?, ?> mockClusterSingletonServiceGroup;
36 private ClusterSingletonService mockClusterSingletonService;
38 private ClusterSingletonServiceRegistrationDelegator delegator;
41 * Initialization functionality for every Tests in this suite
43 * @throws Exception - unexpected setup exception
46 public void setup() throws Exception {
47 MockitoAnnotations.initMocks(this);
49 doNothing().when(mockClusterSingletonServiceGroup)
50 .unregisterService(any(ClusterSingletonServiceRegistrationDelegator.class));
51 doReturn(SERVICE_IDENTIFIER).when(mockClusterSingletonService).getIdentifier();
52 doNothing().when(mockClusterSingletonService).instantiateServiceInstance();
53 doReturn(Futures.immediateFuture(null)).when(mockClusterSingletonService).closeServiceInstance();
54 delegator = new ClusterSingletonServiceRegistrationDelegator(mockClusterSingletonService,
55 mockClusterSingletonServiceGroup);
59 * Test create input with {@link ClusterSingletonService} as null
61 @Test(expected = NullPointerException.class)
62 public void testSetupNullService() {
63 delegator = new ClusterSingletonServiceRegistrationDelegator(null, mockClusterSingletonServiceGroup);
67 * Test create input with {@link ClusterSingletonServiceGroupImpl} as null
69 @Test(expected = NullPointerException.class)
70 public void testSetupNullGroup() {
71 delegator = new ClusterSingletonServiceRegistrationDelegator(mockClusterSingletonService, null);
75 * Test a method delegation {@link ClusterSingletonService#instantiateServiceInstance()}
78 public void testInstatiateServiceDelegMethod() {
79 delegator.instantiateServiceInstance();
80 verify(mockClusterSingletonService).instantiateServiceInstance();
84 * Test a method delegation {@link ClusterSingletonService#instantiateServiceInstance()}
87 public void testCloseServiceDelegMethod() {
88 delegator.closeServiceInstance();
89 verify(mockClusterSingletonService).closeServiceInstance();
93 * Test a method delegation {@link ClusterSingletonService#getIdentifier()}
96 public void testGetServiceIdentifierDelegMethod() {
97 final String serviceIdentifier = delegator.getServiceGroupIdentifier();
98 Assert.assertEquals(SERVICE_IDENTIFIER_NAME, serviceIdentifier);
99 verify(mockClusterSingletonService).getIdentifier();
103 * Test a close method delegation to {@link ClusterSingletonServiceGroupImpl#unregisterService(ClusterSingletonService)}
105 * @throws Exception is from AutoclosableInterface
108 public void testCloseMethod() throws Exception {
110 verify(mockClusterSingletonServiceGroup).unregisterService(delegator);