Merge dev/fluorine work across to master
[unimgr.git] / legato-api / src / test / java / org / opendaylight / unimgr / mef / legato / utils / LegatoUtilsTest.java
diff --git a/legato-api/src/test/java/org/opendaylight/unimgr/mef/legato/utils/LegatoUtilsTest.java b/legato-api/src/test/java/org/opendaylight/unimgr/mef/legato/utils/LegatoUtilsTest.java
new file mode 100644 (file)
index 0000000..77c83a2
--- /dev/null
@@ -0,0 +1,306 @@
+/*
+ * Copyright (c) 2018 Xoriant Corporation 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.unimgr.mef.legato.utils;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.CheckedFuture;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
+import org.opendaylight.unimgr.mef.legato.dao.EVCDao;
+import org.opendaylight.unimgr.mef.legato.util.LegatoUtils;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.MefGlobal;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.SlsProfiles;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.sls.profiles.Profile;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.global.rev171215.mef.global.sls.profiles.ProfileKey;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.MefServices;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.CarrierEthernet;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.carrier.ethernet.SubscriberServices;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.carrier.ethernet.subscriber.services.Evc;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.legato.services.rev171215.mef.services.carrier.ethernet.subscriber.services.EvcKey;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.types.rev171215.EvcIdType;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.mef.types.rev171215.Identifier1024;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.CreateConnectivityServiceInput1;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.EndPoint2;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.EndPoint7;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.UpdateConnectivityServiceInput1;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.nrp.connectivity.service.attrs.NrpCarrierEthConnectivityResource;
+import org.opendaylight.yang.gen.v1.urn.mef.yang.nrp._interface.rev180321.nrp.connectivity.service.end.point.attrs.NrpCarrierEthConnectivityEndPointResource;
+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.UpdateConnectivityServiceInput;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.api.support.membermodification.MemberMatcher;
+import org.powermock.api.support.membermodification.MemberModifier;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+/**
+* @author Arif.Hussain@Xoriant.Com
+*
+*/
+@SuppressWarnings("deprecation")
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({LogicalDatastoreType.class, LegatoUtils.class, InstanceIdentifier.class})
+public class LegatoUtilsTest {
+
+    @Rule
+    public final ExpectedException exception = ExpectedException.none();
+    @Mock
+    private DataBroker dataBroker;
+    @Mock
+    private WriteTransaction transaction;
+    @SuppressWarnings("rawtypes")
+    @Mock
+    private CheckedFuture checkedFuture;
+    private static final EvcIdType EVC_NODE_ID = new EvcIdType("EVC1");
+
+
+    @Before
+    public void setUp() throws Exception {
+        PowerMockito.mockStatic(LegatoUtils.class, Mockito.CALLS_REAL_METHODS);
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testReadEvc() throws ReadFailedException {
+
+        final InstanceIdentifier<Evc> evcID = InstanceIdentifier.create(MefServices.class)
+                .child(CarrierEthernet.class).child(SubscriberServices.class)
+                .child(Evc.class, new EvcKey(new EvcIdType(EVC_NODE_ID)));
+
+        ReadOnlyTransaction readTransaction = mock(ReadOnlyTransaction.class);
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readTransaction);
+        CheckedFuture<Optional<Evc>, ReadFailedException> nodeFuture = mock(CheckedFuture.class);
+        Optional<Evc> optNode = mock(Optional.class);
+        when(readTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
+                .thenReturn(nodeFuture);
+        when(nodeFuture.checkedGet()).thenReturn(optNode);
+        Optional<Evc> expectedOpt =
+                LegatoUtils.readEvc(dataBroker, LogicalDatastoreType.CONFIGURATION, evcID);
+        verify(readTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
+        assertNotNull(expectedOpt);
+        assertEquals(expectedOpt, optNode);
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testReadProfiles() throws ReadFailedException {
+
+        final InstanceIdentifier<Profile> profileID =
+                InstanceIdentifier.create(MefGlobal.class).child(SlsProfiles.class)
+                        .child(Profile.class, new ProfileKey(new Identifier1024(Constants.ONE)));
+
+        ReadOnlyTransaction readTransaction = mock(ReadOnlyTransaction.class);
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readTransaction);
+        CheckedFuture<Optional<Profile>, ReadFailedException> nodeFuture =
+                mock(CheckedFuture.class);
+        Optional<Profile> optNode = mock(Optional.class);
+        when(readTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class)))
+                .thenReturn(nodeFuture);
+        when(nodeFuture.checkedGet()).thenReturn(optNode);
+        Optional<Profile> expectedOpt =
+                (Optional<Profile>) LegatoUtils.readProfile(Constants.SLS_PROFILES,
+                        dataBroker, LogicalDatastoreType.CONFIGURATION, profileID);
+        verify(readTransaction).read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
+        assertNotNull(expectedOpt);
+        assertEquals(expectedOpt, optNode);
+
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testAddToOperationalDB() {
+        final SlsProfiles slsProfile = mock(SlsProfiles.class);
+        final InstanceIdentifier<SlsProfiles> instanceIdentifier =
+                InstanceIdentifier.create(MefGlobal.class).child(SlsProfiles.class);
+
+        when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
+        doNothing().when(transaction).merge(any(LogicalDatastoreType.class),
+                any(InstanceIdentifier.class), any(Profile.class));
+        when(transaction.submit()).thenReturn(checkedFuture);
+        LegatoUtils.addToOperationalDB(slsProfile, instanceIdentifier, dataBroker);
+        verify(transaction).merge(any(LogicalDatastoreType.class), any(InstanceIdentifier.class),
+                any(Profile.class));
+        verify(transaction).submit();
+    }
+
+
+    @SuppressWarnings("unchecked")
+    @Test
+    public void testDeleteFromOperationalDB() {
+        final InstanceIdentifier<Evc> evcID = InstanceIdentifier.create(MefServices.class)
+                .child(CarrierEthernet.class).child(SubscriberServices.class)
+                .child(Evc.class, new EvcKey(new EvcIdType(EVC_NODE_ID)));
+
+        when(dataBroker.newWriteOnlyTransaction()).thenReturn(transaction);
+        doNothing().when(transaction).delete(any(LogicalDatastoreType.class),
+                any(InstanceIdentifier.class));
+        when(transaction.submit()).thenReturn(checkedFuture);
+        assertEquals(true, LegatoUtils.deleteFromOperationalDB(evcID, dataBroker));
+        verify(transaction).delete(any(LogicalDatastoreType.class), any(InstanceIdentifier.class));
+        verify(transaction).submit();
+    }
+
+
+    @Test
+    public void testBuildCreateConnectivityServiceInput() {
+        final Evc evc = mock(Evc.class);
+        final CreateConnectivityServiceInput input = mock(CreateConnectivityServiceInput.class);
+        final EVCDao evcDao = mock(EVCDao.class);
+
+        MemberModifier.suppress(MemberMatcher.method(LegatoUtils.class, Constants.PARSE_NODES));
+        when(LegatoUtils.parseNodes(evc)).thenReturn(evcDao);
+        MemberModifier.suppress(
+                MemberMatcher.method(LegatoUtils.class, Constants.CREATE_CONNECTIVITY_INPUT));
+        when(LegatoUtils.buildCreateConnectivityServiceInput(evcDao))
+                .thenReturn(input);
+        assertNotNull(input);
+        assertEquals(input,
+                LegatoUtils.buildCreateConnectivityServiceInput(evcDao));
+    }
+
+
+    @Test
+    public void testBuildUpdateConnectivityServiceInput() {
+        final Evc evc = mock(Evc.class);
+        final UpdateConnectivityServiceInput input = mock(UpdateConnectivityServiceInput.class);
+        final EVCDao evcDao = mock(EVCDao.class);
+        MemberModifier.suppress(MemberMatcher.method(LegatoUtils.class, Constants.PARSE_NODES));
+        when(LegatoUtils.parseNodes(evc)).thenReturn(evcDao);
+
+        final List<String> uniList = new ArrayList<String>();
+        uniList.add(Constants.UNI_ID1);
+        uniList.add(Constants.UNI_ID2);
+        MemberModifier.suppress(
+                MemberMatcher.method(LegatoUtils.class, Constants.UPDATE_CONNECTIVITY_INPUT));
+        when(LegatoUtils.buildUpdateConnectivityServiceInput(evcDao, uniList.get(0), Constants.UUID)).thenReturn(input);
+        assertNotNull(input);
+        assertEquals(input, LegatoUtils.buildUpdateConnectivityServiceInput(evcDao, uniList.get(0),
+                Constants.UUID));
+    }
+
+
+    @Test
+    public void testBuildNrpCarrierEthConnectivityResource() {
+
+        final NrpCarrierEthConnectivityResource nrpCarrierEthConnectivityResource =
+                mock(NrpCarrierEthConnectivityResource.class);
+
+        MemberModifier.suppress(
+                MemberMatcher.method(LegatoUtils.class, Constants.NRP_CARRIER_ETH_CON_RESOURCE));
+        when(LegatoUtils.buildNrpCarrierEthConnectivityResource(
+                String.valueOf(Constants.MAXFRAME_SIZE_TYPE)))
+                        .thenReturn(nrpCarrierEthConnectivityResource);
+        assertNotNull(nrpCarrierEthConnectivityResource);
+        assertEquals(nrpCarrierEthConnectivityResource,
+                LegatoUtils.buildNrpCarrierEthConnectivityResource(
+                        String.valueOf(Constants.MAXFRAME_SIZE_TYPE)));
+    }
+
+
+    @Test
+    public void testBuildNrpCarrierEthConnectivityEndPointResource() {
+        final NrpCarrierEthConnectivityEndPointResource input =
+                mock(NrpCarrierEthConnectivityEndPointResource.class);
+        MemberModifier.suppress(MemberMatcher.method(LegatoUtils.class,
+                Constants.NRP_CARRIER_ETH_CON_ENDPOINT_RESOURCE));
+        when(LegatoUtils.buildNrpCarrierEthConnectivityEndPointResource(
+                String.valueOf(Constants.VLAN_ID_TYPE))).thenReturn(input);
+        assertNotNull(input);
+        assertEquals(input, LegatoUtils.buildNrpCarrierEthConnectivityEndPointResource(
+                String.valueOf(Constants.VLAN_ID_TYPE)));
+    }
+
+
+    @Test
+    public void testBuildCreateEthConnectivityEndPointAugmentation() {
+        final EndPoint2 createEndPoint = mock(EndPoint2.class);
+
+        MemberModifier.suppress(MemberMatcher.method(LegatoUtils.class,
+                Constants.CREATE_ETH_CON_ENDPOINT_AUGMENTATION));
+        when(LegatoUtils.buildCreateEthConnectivityEndPointAugmentation(
+                String.valueOf(Constants.VLAN_ID_TYPE))).thenReturn(createEndPoint);
+        assertNotNull(createEndPoint);
+        assertEquals(createEndPoint, LegatoUtils.buildCreateEthConnectivityEndPointAugmentation(
+                String.valueOf(Constants.VLAN_ID_TYPE)));
+    }
+
+
+    @Test
+    public void testBuildUpdateEthConnectivityEndPointAugmentation() {
+        final EndPoint7 updateEndPoint = mock(EndPoint7.class);
+
+        MemberModifier.suppress(MemberMatcher.method(LegatoUtils.class,
+                Constants.UPDATE_ETH_CON_ENDPOINT_AUGMENTATION));
+        when(LegatoUtils.buildUpdateEthConnectivityEndPointAugmentation(
+                String.valueOf(Constants.VLAN_ID_TYPE))).thenReturn(updateEndPoint);
+        assertNotNull(updateEndPoint);
+        assertEquals(updateEndPoint, LegatoUtils.buildUpdateEthConnectivityEndPointAugmentation(
+                String.valueOf(Constants.VLAN_ID_TYPE)));
+    }
+
+
+    @Test
+    public void testBuildCreateConServiceAugmentation() {
+        final CreateConnectivityServiceInput1 createConServInput =
+                mock(CreateConnectivityServiceInput1.class);
+
+        MemberModifier.suppress(
+                MemberMatcher.method(LegatoUtils.class, Constants.CREATE_CON_SERVICE_AUGMENTATION));
+        when(LegatoUtils
+                .buildCreateConServiceAugmentation(String.valueOf(Constants.MAXFRAME_SIZE_TYPE)))
+                        .thenReturn(createConServInput);
+        assertNotNull(createConServInput);
+        assertEquals(createConServInput, LegatoUtils
+                .buildCreateConServiceAugmentation(String.valueOf(Constants.MAXFRAME_SIZE_TYPE)));
+    }
+
+
+    @Test
+    public void testBuildUpdateConServiceAugmentation() {
+        final UpdateConnectivityServiceInput1 updateConServInput =
+                mock(UpdateConnectivityServiceInput1.class);
+
+        MemberModifier.suppress(
+                MemberMatcher.method(LegatoUtils.class, Constants.UPDATE_CON_SERVICE_AUGMENTATION));
+        when(LegatoUtils
+                .buildUpdateConServiceAugmentation(String.valueOf(Constants.MAXFRAME_SIZE_TYPE)))
+                        .thenReturn(updateConServInput);
+        assertNotNull(updateConServInput);
+        assertEquals(updateConServInput, LegatoUtils
+                .buildUpdateConServiceAugmentation(String.valueOf(Constants.MAXFRAME_SIZE_TYPE)));
+    }
+
+
+}