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.dom.impl;
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;
23 import org.opendaylight.mdsal.singleton.dom.impl.ClusterSingletonServiceGroup;
24 import org.opendaylight.mdsal.singleton.dom.impl.ClusterSingletonServiceGroupImpl;
25 import org.opendaylight.mdsal.singleton.dom.impl.ClusterSingletonServiceRegistrationDelegator;
28 * Testing {@link ClusterSingletonServiceRegistrationDelegator}
30 public class ClusterSingletonServiceRegistrationDelegatorTest {
32 private static final String SERVICE_IDENTIFIER_NAME = "TestServiceIdent";
33 private static final ServiceGroupIdentifier SERVICE_IDENTIFIER = ServiceGroupIdentifier
34 .create(SERVICE_IDENTIFIER_NAME);
37 private ClusterSingletonServiceGroup<?, ?, ?> mockClusterSingletonServiceGroup;
39 private ClusterSingletonService mockClusterSingletonService;
41 private ClusterSingletonServiceRegistrationDelegator delegator;
44 * Initialization functionality for every Tests in this suite
46 * @throws Exception - unexpected setup exception
49 public void setup() throws Exception {
50 MockitoAnnotations.initMocks(this);
52 doNothing().when(mockClusterSingletonServiceGroup)
53 .unregisterService(any(ClusterSingletonServiceRegistrationDelegator.class));
54 doReturn(SERVICE_IDENTIFIER).when(mockClusterSingletonService).getIdentifier();
55 doNothing().when(mockClusterSingletonService).instantiateServiceInstance();
56 doReturn(Futures.immediateFuture(null)).when(mockClusterSingletonService).closeServiceInstance();
57 delegator = new ClusterSingletonServiceRegistrationDelegator(mockClusterSingletonService,
58 mockClusterSingletonServiceGroup);
62 * Test create input with {@link ClusterSingletonService} as null
64 @Test(expected = NullPointerException.class)
65 public void testSetupNullService() {
66 delegator = new ClusterSingletonServiceRegistrationDelegator(null, mockClusterSingletonServiceGroup);
70 * Test create input with {@link ClusterSingletonServiceGroupImpl} as null
72 @Test(expected = NullPointerException.class)
73 public void testSetupNullGroup() {
74 delegator = new ClusterSingletonServiceRegistrationDelegator(mockClusterSingletonService, null);
78 * Test a method delegation {@link ClusterSingletonService#instantiateServiceInstance()}
81 public void testInstatiateServiceDelegMethod() {
82 delegator.instantiateServiceInstance();
83 verify(mockClusterSingletonService).instantiateServiceInstance();
87 * Test a method delegation {@link ClusterSingletonService#instantiateServiceInstance()}
90 public void testCloseServiceDelegMethod() {
91 delegator.closeServiceInstance();
92 verify(mockClusterSingletonService).closeServiceInstance();
96 * Test a method delegation {@link ClusterSingletonService#getIdentifier()}
99 public void testGetServiceIdentifierDelegMethod() {
100 final String serviceIdentifier = delegator.getServiceGroupIdentifier();
101 Assert.assertEquals(SERVICE_IDENTIFIER_NAME, serviceIdentifier);
102 verify(mockClusterSingletonService).getIdentifier();
106 * Test a close method delegation to {@link ClusterSingletonServiceGroupImpl#unregisterService(ClusterSingletonService)}
108 * @throws Exception is from AutoclosableInterface
111 public void testCloseMethod() throws Exception {
113 verify(mockClusterSingletonServiceGroup).unregisterService(delegator);