From daa3a1ef6d9c7da2e3550fe624d4963be74f3e19 Mon Sep 17 00:00:00 2001 From: Jakub Morvay Date: Sun, 7 Apr 2019 09:01:23 +0200 Subject: [PATCH] Refactor DOMMoutPointServiceImpl UT a little bit This refactors DOMMountPointSerivceImplTest unit test. The test now tries to test DOMMountPointServiceImpl's DOMMountPointService API contract instead of testing how it is implemented. This way we can restrict the visibility of some of DOMMountPointServiceImpl members. Change-Id: I8bd9cd7d659ffd8d32d7ce361f42c9cfec805283 Signed-off-by: Jakub Morvay --- .../dom/broker/DOMMountPointServiceImpl.java | 13 +-- .../broker/DOMMountPointServiceImplTest.java | 88 +++++++++++++++ .../dom/broker/MountPointServiceTest.java | 100 ------------------ 3 files changed, 89 insertions(+), 112 deletions(-) create mode 100644 dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImplTest.java delete mode 100644 dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/MountPointServiceTest.java diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImpl.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImpl.java index 672b03f7f2..b8867848a8 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImpl.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImpl.java @@ -11,7 +11,6 @@ package org.opendaylight.mdsal.dom.broker; import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; -import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.MutableClassToInstanceMap; import java.util.HashMap; import java.util.Map; @@ -94,7 +93,7 @@ public class DOMMountPointServiceImpl implements DOMMountPointService { }); } - final class DOMMountPointBuilderImpl implements DOMMountPointBuilder { + private final class DOMMountPointBuilderImpl implements DOMMountPointBuilder { private final MutableClassToInstanceMap services = MutableClassToInstanceMap.create(); private final YangInstanceIdentifier path; @@ -106,16 +105,6 @@ public class DOMMountPointServiceImpl implements DOMMountPointService { this.path = requireNonNull(path); } - @VisibleForTesting - SchemaContext getSchemaContext() { - return schemaContext; - } - - @VisibleForTesting - Map, DOMService> getServices() { - return services; - } - @Override public DOMMountPointBuilder addService(final Class type, final T impl) { services.putInstance(requireNonNull(type), requireNonNull(impl)); diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImplTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImplTest.java new file mode 100644 index 0000000000..1a366b44c1 --- /dev/null +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMMountPointServiceImplTest.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.mdsal.dom.broker; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointListener; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMMountPointService.DOMMountPointBuilder; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.yangtools.concepts.ObjectRegistration; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; + +public class DOMMountPointServiceImplTest { + + private static final YangInstanceIdentifier PATH = + YangInstanceIdentifier.of(QName.create("namespace", "2012-12-12", + "top")); + + private DOMMountPointService mountPointService; + + @Before + public void setup() { + mountPointService = new DOMMountPointServiceImpl(); + } + + @Test + public void testMountPointRegistration() { + final DOMMountPointListener mountPointListener = mock(DOMMountPointListener.class); + doNothing().when(mountPointListener).onMountPointCreated(PATH); + mountPointService.registerProvisionListener(mountPointListener); + + // Create a mount point with schema context and a DOMService + final DOMMountPointBuilder mountPointBuilder = mountPointService.createMountPoint(PATH); + + final SchemaContext schemaContext = mock(SchemaContext.class); + mountPointBuilder.addInitialSchemaContext(schemaContext); + + final DOMRpcService rpcService = mock(DOMRpcService.class); + mountPointBuilder.addService(DOMRpcService.class, rpcService); + + mountPointBuilder.register(); + + // Verify listener has been notified and mount point is accessible from mount point service + verify(mountPointListener).onMountPointCreated(eq(PATH)); + assertTrue(mountPointService.getMountPoint(PATH).isPresent()); + + // Verify mount point schema context and service + final DOMMountPoint mountPoint = mountPointService.getMountPoint(PATH).get(); + assertTrue(mountPoint.getService(DOMRpcService.class).isPresent()); + assertEquals(rpcService, mountPoint.getService(DOMRpcService.class).get()); + + assertEquals(schemaContext, mountPoint.getSchemaContext()); + } + + @Test + public void testMountPointDestruction() { + final DOMMountPointListener mountPointListener = mock(DOMMountPointListener.class); + doNothing().when(mountPointListener).onMountPointRemoved(PATH); + + final ObjectRegistration mountPointRegistration = + mountPointService.createMountPoint(PATH).register(); + + mountPointService.registerProvisionListener(mountPointListener); + + mountPointRegistration.close(); + + // Verify listener has been notified and mount point is not present in mount point service + verify(mountPointListener).onMountPointRemoved(eq(PATH)); + assertFalse(mountPointService.getMountPoint(PATH).isPresent()); + } +} diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/MountPointServiceTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/MountPointServiceTest.java deleted file mode 100644 index 1f55441471..0000000000 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/MountPointServiceTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.mdsal.dom.broker; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.mock; - -import java.util.Map; -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.mdsal.dom.api.DOMMountPoint; -import org.opendaylight.mdsal.dom.api.DOMMountPointListener; -import org.opendaylight.mdsal.dom.api.DOMMountPointService; -import org.opendaylight.mdsal.dom.api.DOMMountPointService.DOMMountPointBuilder; -import org.opendaylight.mdsal.dom.api.DOMService; -import org.opendaylight.mdsal.dom.broker.DOMMountPointServiceImpl.DOMMountPointBuilderImpl; -import org.opendaylight.yangtools.concepts.ObjectRegistration; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; - -public class MountPointServiceTest { - - private static final YangInstanceIdentifier PATH = - YangInstanceIdentifier.of(QName.create("namespace", "2012-12-12", - "top")); - - private DOMMountPointService mountService; - - @Before - public void setup() { - mountService = new DOMMountPointServiceImpl(); - } - - @Test - public void createSimpleMountPoint() { - final DOMMountPointListener listener = mock(DOMMountPointListener.class); - doNothing().when(listener).onMountPointCreated(PATH); - mountService.registerProvisionListener(listener); - - assertFalse(mountService.getMountPoint(PATH).isPresent()); - - mountService.createMountPoint(PATH).register(); - - assertTrue(mountService.getMountPoint(PATH).isPresent()); - } - - @Test - public void unregisterTest() { - final DOMMountPointListener listener = mock(DOMMountPointListener.class); - doNothing().when(listener).onMountPointCreated(PATH); - doNothing().when(listener).onMountPointRemoved(PATH); - final DOMMountPointServiceImpl service = new DOMMountPointServiceImpl(); - service.registerProvisionListener(listener); - final ObjectRegistration mountPointReg = service.createMountPoint(PATH).register(); - - assertTrue(service.getMountPoint(PATH).isPresent()); - - mountPointReg.close(); - - assertFalse(service.getMountPoint(PATH).isPresent()); - } - - @Test - public void mountRegistrationTest() { - final DOMMountPointBuilder mountBuilder = mountService.createMountPoint(PATH); - final ObjectRegistration objectRegistration = mountBuilder.register(); - - assertTrue(mountService.getMountPoint(PATH).isPresent()); - assertSame(objectRegistration.getInstance(), mountService.getMountPoint(PATH).get()); - - objectRegistration.close(); - - assertFalse(mountService.getMountPoint(PATH).isPresent()); - } - - @Test - public void mountBuilderTest() { - final DOMMountPointBuilderImpl mountBuilder = (DOMMountPointBuilderImpl) mountService.createMountPoint(PATH); - mountBuilder.register(); - - final SchemaContext mockSchemaContext = mock(SchemaContext.class); - mountBuilder.addInitialSchemaContext(mockSchemaContext); - - assertSame(mockSchemaContext, mountBuilder.getSchemaContext()); - - final Map, DOMService> services = mountBuilder.getServices(); - assertTrue(services.isEmpty()); - mountBuilder.addService(DOMService.class, mock(DOMService.class)); - assertTrue(services.containsKey(DOMService.class)); - } -} -- 2.36.6