Driver repo test converage improvement 09/40809/1
authorBartosz Michalik <bartosz.michalik@amartus.com>
Fri, 24 Jun 2016 10:05:47 +0000 (12:05 +0200)
committerBartosz Michalik <bartosz.michalik@amartus.com>
Fri, 24 Jun 2016 10:05:47 +0000 (12:05 +0200)
Change-Id: If7681c2c84310acf852519d7506ed20aced56968
Signed-off-by: Bartosz Michalik <bartosz.michalik@amartus.com>
impl/src/test/java/org/opendaylight/unimgr/mef/nrp/impl/ActivationDriverRepoServiceImplTest.java
impl/src/test/java/org/opendaylight/unimgr/utils/ActivationDriverMocks.java

index 48b9f1bf71b001c2bf3f3e6f0ff13a1fb8860be1..5483982908e50dcfe574454f116665cee62d0fb8 100644 (file)
@@ -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);
+    }
 }
index 4fe8b5ec2b0c50203101e324d28ec78611ae940e..091cc0eaf03da04a52caa62fde5b91a763500dfc 100644 (file)
@@ -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<GFcPort, ActivationDriver> 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<GFcPort, GFcPort, ActivationDriver> 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;
     }
 }