From 4d3b0d85dbd3b15384954f7a36b82d492ecbddd2 Mon Sep 17 00:00:00 2001 From: Bartosz Michalik Date: Fri, 24 Jun 2016 12:05:47 +0200 Subject: [PATCH] Driver repo test converage improvement Change-Id: If7681c2c84310acf852519d7506ed20aced56968 Signed-off-by: Bartosz Michalik --- .../ActivationDriverRepoServiceImplTest.java | 22 ++++++++++++++++--- .../unimgr/utils/ActivationDriverMocks.java | 20 +++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/impl/src/test/java/org/opendaylight/unimgr/mef/nrp/impl/ActivationDriverRepoServiceImplTest.java b/impl/src/test/java/org/opendaylight/unimgr/mef/nrp/impl/ActivationDriverRepoServiceImplTest.java index 48b9f1bf..54839829 100644 --- a/impl/src/test/java/org/opendaylight/unimgr/mef/nrp/impl/ActivationDriverRepoServiceImplTest.java +++ b/impl/src/test/java/org/opendaylight/unimgr/mef/nrp/impl/ActivationDriverRepoServiceImplTest.java @@ -21,7 +21,7 @@ import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectcl public class ActivationDriverRepoServiceImplTest { @Test(expected = ActivationDriverNotFoundException.class) - public void testEmpty() throws Exception { + public void testEmptyBuilderList() throws Exception { ActivationDriverRepoService driverRepo = new ActivationDriverRepoServiceImpl(Collections.emptyList()); final FcPort port = new FcPortBuilder().setId("a").build(); @@ -30,7 +30,7 @@ public class ActivationDriverRepoServiceImplTest { @Test(expected = ActivationDriverAmbiguousException.class) - public void testConflict() throws Exception { + public void testConflictingBuilders() throws Exception { final ActivationDriver driver = mock(ActivationDriver.class); @@ -43,7 +43,7 @@ public class ActivationDriverRepoServiceImplTest { } @Test - public void testMatching() throws Exception { + public void testMatchingWithSinglePort() throws Exception { final ActivationDriver driver = mock(ActivationDriver.class); @@ -55,4 +55,20 @@ public class ActivationDriverRepoServiceImplTest { final ActivationDriver driverFromRepo = driverRepo.getDriver(port, null); assertEquals(driver, driverFromRepo); } + + @Test + public void testMatchingWithDualPort() throws Exception { + + final ActivationDriver d1 = mock(ActivationDriver.class); + final ActivationDriver d2 = mock(ActivationDriver.class); + + ActivationDriverRepoService driverRepo = new ActivationDriverRepoServiceImpl(Arrays.asList( + prepareDriver(p -> d1), prepareDriver((a,b) -> d2) + )); + + final FcPort portA = new FcPortBuilder().setId("a").build(); + final FcPort portB = new FcPortBuilder().setId("b").build(); + final ActivationDriver driverFromRepo = driverRepo.getDriver(portA, portB, null); + assertEquals(d2, driverFromRepo); + } } diff --git a/impl/src/test/java/org/opendaylight/unimgr/utils/ActivationDriverMocks.java b/impl/src/test/java/org/opendaylight/unimgr/utils/ActivationDriverMocks.java index 4fe8b5ec..091cc0ea 100644 --- a/impl/src/test/java/org/opendaylight/unimgr/utils/ActivationDriverMocks.java +++ b/impl/src/test/java/org/opendaylight/unimgr/utils/ActivationDriverMocks.java @@ -10,12 +10,19 @@ import java.util.function.Function; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; /** * @author bartosz.michalik@amartus.com */ public class ActivationDriverMocks { + /** + * Prepare mock {@link ActivationDriverBuilder}. The driver is produced via provided producer function. This covers + * single port requests. + * @param producer to build driver + * @return driver builder mock + */ public static ActivationDriverBuilder prepareDriver(Function producer) { final ActivationDriverBuilder mock = mock(ActivationDriverBuilder.class); @@ -23,9 +30,19 @@ public class ActivationDriverMocks { GFcPort port = (GFcPort) inv.getArguments()[0]; return Optional.ofNullable(producer.apply(port)); }).when(mock).driverFor(any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class)); + + doReturn(Optional.empty()).when(mock) + .driverFor(any(GFcPort.class), any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class)); + return mock; } + /** + * Prepare mock {@link ActivationDriverBuilder}. The driver is produced via provided producer function. This covers + * dual port requests (for internal cross-connect). + * @param producer to build driver + * @return driver builder mock + */ public static ActivationDriverBuilder prepareDriver(BiFunction producer) { final ActivationDriverBuilder mock = mock(ActivationDriverBuilder.class); @@ -34,6 +51,9 @@ public class ActivationDriverMocks { GFcPort port2 = (GFcPort) inv.getArguments()[1]; return Optional.ofNullable(producer.apply(port1, port2)); }).when(mock).driverFor(any(GFcPort.class), any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class)); + + doReturn(Optional.empty()).when(mock) + .driverFor(any(GFcPort.class), any(ActivationDriverBuilder.BuilderContext.class)); return mock; } } -- 2.36.6