Merge dev/fluorine work across to master
[unimgr.git] / impl / src / test / java / org / opendaylight / unimgr / mef / nrp / impl / connectivityservice / TapiConnectivityServiceImplTest.java
index 99d47af165d59b1f40fcbfc2a75a5b78e2fb1773..b27f4f654aa20d09d2240ac7395dd776947854a7 100644 (file)
@@ -9,16 +9,15 @@
 package org.opendaylight.unimgr.mef.nrp.impl.connectivityservice;
 
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyZeroInteractions;
 import static org.mockito.Mockito.when;
 
+import com.google.common.util.concurrent.CheckedFuture;
+
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
@@ -30,7 +29,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.unimgr.mef.nrp.api.ActivationDriver;
 import org.opendaylight.unimgr.mef.nrp.api.ActivationDriverRepoService;
@@ -40,23 +38,21 @@ import org.opendaylight.unimgr.mef.nrp.api.RequestDecomposer;
 import org.opendaylight.unimgr.mef.nrp.api.RequestValidator;
 import org.opendaylight.unimgr.mef.nrp.api.Subrequrest;
 import org.opendaylight.unimgr.mef.nrp.common.ResourceActivatorException;
+import org.opendaylight.unimgr.mef.nrp.common.TapiUtils;
 import org.opendaylight.unimgr.mef.nrp.impl.ConnectivityServiceIdResourcePool;
+import org.opendaylight.unimgr.mef.nrp.impl.DefaultValidator;
 import org.opendaylight.unimgr.utils.ActivationDriverMocks;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.common.rev171113.PortRole;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.common.rev171113.Uuid;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.connectivity.rev171113.CreateConnectivityServiceInput;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.connectivity.rev171113.CreateConnectivityServiceInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.connectivity.rev171113.CreateConnectivityServiceOutput;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.connectivity.rev171113.create.connectivity.service.input.EndPoint;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.connectivity.rev171113.create.connectivity.service.input.EndPointBuilder;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev180307.PortRole;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.common.rev180307.Uuid;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.CreateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.CreateConnectivityServiceInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.CreateConnectivityServiceOutput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.UpdateConnectivityServiceInput;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.EndPoint;
+import org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307.create.connectivity.service.input.EndPointBuilder;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 
-import com.google.common.util.concurrent.CheckedFuture;
 
-/**
- * @author bartosz.michalik@amartus.com
- */
 public class TapiConnectivityServiceImplTest {
 
 
@@ -67,37 +63,41 @@ public class TapiConnectivityServiceImplTest {
 
     private Uuid uuid1 = new Uuid("uuid1");
     private Uuid uuid2 = new Uuid("uuid2");
-    private Uuid uuid3 = new Uuid("uuid3");
+    private String activationDriverId1 = "d1";
+    private String activationDriverId2 = "d2";
     private TapiConnectivityServiceImpl connectivityService;
     private RequestDecomposer decomposer;
-    private RequestValidator validator;
-    private ReadWriteTransaction tx;
+    private DataBroker broker;
 
+    @SuppressWarnings("unchecked")
     @Before
     public void setUp() {
+        decomposer = mock(RequestDecomposer.class);
+        RequestValidator validator = mock(RequestValidator.class);
+        when(validator.checkValid(any(CreateConnectivityServiceInput.class)))
+            .thenReturn(new RequestValidator.ValidationResult());
+        when(validator.checkValid(any(UpdateConnectivityServiceInput.class)))
+            .thenReturn(new RequestValidator.ValidationResult());
+
         ad1 = mock(ActivationDriver.class);
         ad2 = mock(ActivationDriver.class);
         ad3 = mock(ActivationDriver.class);
+        String activationDriverId3 = "d3";
         ActivationDriverRepoService repo = ActivationDriverMocks.builder()
-                .add(uuid1, ad1)
-                .add(uuid2, ad2)
-                .add(uuid3, ad3)
+                .add(activationDriverId1, ad1)
+                .add(activationDriverId2, ad2)
+                .add(activationDriverId3, ad3)
                 .build();
 
-        decomposer = mock(RequestDecomposer.class);
-        validator = mock(RequestValidator.class);
-        when(validator.checkValid(any())).thenReturn(new RequestValidator.ValidationResult());
-
         connectivityService = new TapiConnectivityServiceImpl();
         connectivityService.setDriverRepo(repo);
         connectivityService.setDecomposer(decomposer);
         connectivityService.setValidator(validator);
 
-        tx = mock(ReadWriteTransaction.class);
+        ReadWriteTransaction tx = mock(ReadWriteTransaction.class);
         when(tx.submit()).thenReturn(mock(CheckedFuture.class));
-        DataBroker broker = mock(DataBroker.class);
-
-
+        broker = mock(DataBroker.class);
+        when(broker.newReadWriteTransaction()).thenReturn(tx);
         when(broker.newWriteOnlyTransaction()).thenReturn(tx);
         connectivityService.setBroker(broker);
         connectivityService.setServiceIdPool(new ConnectivityServiceIdResourcePool());
@@ -111,7 +111,8 @@ public class TapiConnectivityServiceImplTest {
         CreateConnectivityServiceInput empty = new CreateConnectivityServiceInputBuilder()
                 .build();
         //when
-        RpcResult<CreateConnectivityServiceOutput> result = this.connectivityService.createConnectivityService(empty).get();
+        RpcResult<CreateConnectivityServiceOutput> result =
+                this.connectivityService.createConnectivityService(empty).get();
         //then
         assertFalse(result.isSuccessful());
         verifyZeroInteractions(ad1);
@@ -126,7 +127,8 @@ public class TapiConnectivityServiceImplTest {
         configureDecomposerAnswer(eps -> null);
 
         //when
-        RpcResult<CreateConnectivityServiceOutput> result = this.connectivityService.createConnectivityService(input).get();
+        RpcResult<CreateConnectivityServiceOutput> result =
+                this.connectivityService.createConnectivityService(input).get();
         //then
         assertFalse(result.isSuccessful());
         verifyZeroInteractions(ad1);
@@ -135,42 +137,32 @@ public class TapiConnectivityServiceImplTest {
     }
 
     @Test
-    public void sucessfullTwoDrivers() throws ExecutionException, InterruptedException, ResourceActivatorException, TransactionCommitFailedException {
+    public void withLocalIds() throws Exception {
         //having
-        CreateConnectivityServiceInput input = input(5);
-
-
-        configureDecomposerAnswer(eps -> {
-            Subrequrest s1 = new Subrequrest(uuid1, Arrays.asList(eps.get(0), eps.get(1), eps.get(2)));
-            Subrequrest s3 = new Subrequrest(uuid3, Arrays.asList(eps.get(3), eps.get(4)));
-
-            return Arrays.asList(s1, s3);
-        });
+        CreateConnectivityServiceInput input = input("a", "a", "b");
+        connectivityService.setValidator(new DefaultValidator(broker));
 
         //when
-        RpcResult<CreateConnectivityServiceOutput> result = this.connectivityService.createConnectivityService(input).get();
+        RpcResult<CreateConnectivityServiceOutput> result =
+                this.connectivityService.createConnectivityService(input).get();
         //then
-        assertTrue(result.isSuccessful());
-        verify(ad1).activate();
-        verify(ad3).activate();
-        verify(ad1).commit();
-        verify(ad3).commit();
+        assertFalse(result.isSuccessful());
+        verifyZeroInteractions(ad1);
         verifyZeroInteractions(ad2);
-        //3x Connection (2 x system + 1 external) + ConnectivityService
-        verify(tx,times(4)).put(eq(LogicalDatastoreType.OPERATIONAL), any(InstanceIdentifier.class), any());
-
-
+        verifyZeroInteractions(ad3);
     }
 
 
     @Test
-    public void failTwoDriversOneFailing() throws ExecutionException, InterruptedException, ResourceActivatorException, TransactionCommitFailedException {
+    public void failTwoDriversOneFailing()
+            throws ExecutionException, InterruptedException, ResourceActivatorException,
+                TransactionCommitFailedException {
         //having
         CreateConnectivityServiceInput input = input(4);
 
         configureDecomposerAnswer(eps -> {
-            Subrequrest s1 = new Subrequrest(uuid1, Arrays.asList(eps.get(0), eps.get(1)));
-            Subrequrest s2 = new Subrequrest(uuid2, Arrays.asList(eps.get(2), eps.get(3)));
+            Subrequrest s1 = new Subrequrest(uuid1, Arrays.asList(eps.get(0), eps.get(1)),activationDriverId1);
+            Subrequrest s2 = new Subrequrest(uuid2, Arrays.asList(eps.get(2), eps.get(3)),activationDriverId2);
 
             return Arrays.asList(s1, s2);
         });
@@ -178,7 +170,8 @@ public class TapiConnectivityServiceImplTest {
         doThrow(new ResourceActivatorException()).when(ad2).activate();
 
         //when
-        RpcResult<CreateConnectivityServiceOutput> result = this.connectivityService.createConnectivityService(input).get();
+        RpcResult<CreateConnectivityServiceOutput> result =
+                this.connectivityService.createConnectivityService(input).get();
         //then
         assertFalse(result.isSuccessful());
         verify(ad1).activate();
@@ -188,16 +181,17 @@ public class TapiConnectivityServiceImplTest {
         verifyZeroInteractions(ad3);
     }
 
-
-    private void configureDecomposerAnswer(Function<List<org.opendaylight.unimgr.mef.nrp.api.EndPoint>, List<Subrequrest>> resp) {
+    @SuppressWarnings({"unchecked", "checkstyle:emptyblock"})
+    private void configureDecomposerAnswer(
+            Function<List<org.opendaylight.unimgr.mef.nrp.api.EndPoint>, List<Subrequrest>> resp) {
         try {
             when(decomposer.decompose(any(), any(Constraints.class)))
                 .thenAnswer(a -> {
                     List<org.opendaylight.unimgr.mef.nrp.api.EndPoint> eps = a.getArgumentAt(0, List.class);
+                    eps.forEach(e -> e.setNepRef(TapiUtils.toSysNepRef(new Uuid("node-id"), new Uuid("nep-id"))));
                     return resp.apply(eps);
                 });
-        } catch (FailureResult f) {
-        }
+        } catch (FailureResult _f) { }
     }
 
     private CreateConnectivityServiceInput input(int count) {
@@ -209,7 +203,17 @@ public class TapiConnectivityServiceImplTest {
                 .build();
     }
 
-    private org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.tapi.connectivity.rev171113.create.connectivity.service.input.EndPoint ep(String id) {
+    private CreateConnectivityServiceInput input(String... localIds) {
+
+        List<EndPoint> eps = Arrays.stream(localIds).map(this::ep).collect(Collectors.toList());
+
+        return new CreateConnectivityServiceInputBuilder()
+                .setEndPoint(eps)
+                .build();
+    }
+
+    private org.opendaylight.yang.gen.v1.urn.onf.otcc.yang.tapi.connectivity.rev180307
+                .create.connectivity.service.input.EndPoint ep(String id) {
         return new EndPointBuilder()
                 .setLocalId(id)
                 .setRole(PortRole.SYMMETRIC)