MD-SAL API integration
[ovsdb.git] / southbound / southbound-impl / src / test / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / BridgeOperationalStateTest.java
index e12ff537a4375e0f488b2b7c686963afa0a8d238..f81b0cedaef092b34e2c2a7e8af8ca76aca54230 100644 (file)
@@ -8,84 +8,95 @@
 
 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
 
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.powermock.reflect.Whitebox.getField;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.Mockito;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.ovsdb.southbound.OvsdbOperGlobalListener;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
-
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.api.support.membermodification.MemberModifier;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import com.google.common.base.Optional;
-import org.powermock.api.support.membermodification.MemberMatcher;
 
-@PrepareForTest({BridgeOperationalState.class, Optional.class, InstanceIdentifier.class, Node.class, OvsdbBridgeAugmentation.class})
-@RunWith(PowerMockRunner.class)
+@RunWith(MockitoJUnitRunner.class)
 public class BridgeOperationalStateTest {
+    private final Node nd = new NodeBuilder().setNodeId(new NodeId("foo")).build();
+    private final InstanceIdentifier<?> iid = InstanceIdentifier.create(Topology.class);
+
+    private final InstanceIdentifier<Node> nodeIid = InstanceIdentifier.create(NetworkTopology.class)
+            .child(Topology.class).child(Node.class);
+    private final Node brNode = new NodeBuilder().build();
 
     @Mock private BridgeOperationalState briOperationState;
-    @Mock private InstanceIdentifier<ProtocolEntry> protocolEntry;
-    @Mock private InstanceIdentifier<?> iid;
-    @Mock private InstanceIdentifier<Node> iidNode;
-    @Mock private Node nd;
+    @Mock private DataBroker db;
+    @Mock ReadTransaction mockReadTx;
+    private InstanceIdentifier<ProtocolEntry> protocolEntry;
+    private InstanceIdentifier<Node> iidNode;
     private Map<InstanceIdentifier<Node>, Node> operationalNodes;
 
     @Before
     public void setUp() throws Exception {
+        iidNode = InstanceIdentifier.create(NetworkTopology.class)
+                .child(Topology.class, new TopologyKey(new TopologyId("foo")))
+                .child(Node.class, new NodeKey(nd.getNodeId()));
+        protocolEntry = InstanceIdentifier.create(NetworkTopology.class).child(Topology.class).child(Node.class)
+                .augmentation(OvsdbBridgeAugmentation.class).child(ProtocolEntry.class);
+
         briOperationState = mock(BridgeOperationalState.class, Mockito.CALLS_REAL_METHODS);
-        iid = mock(InstanceIdentifier.class, Mockito.RETURNS_MOCKS);
-        protocolEntry = mock(InstanceIdentifier.class, Mockito.RETURNS_MOCKS);
-        iidNode = mock(InstanceIdentifier.class, Mockito.RETURNS_MOCKS);
-        nd = mock(Node.class, Mockito.RETURNS_MOCKS);
-
-        operationalNodes = new HashMap<>();
-        operationalNodes.put(iidNode, nd);
-        MemberModifier.field(BridgeOperationalState.class,"operationalNodes").set(briOperationState, operationalNodes);
-        PowerMockito.suppress(MemberMatcher.methodsDeclaredIn(InstanceIdentifier.class));
+
+        getField(BridgeOperationalState.class,"db").set(briOperationState, db);
+        doReturn(mockReadTx).when(db).newReadOnlyTransaction();
+        OvsdbOperGlobalListener.OPER_NODE_CACHE.put(nodeIid, brNode);
     }
 
     @Test
-    public void testGetBridgeNode() throws Exception {
-        Optional<Node> optNodes = briOperationState.getBridgeNode(iid);
-        verify(iid, times(1)).firstIdentifierOf(Node.class);
-        assertNotNull(optNodes);
-        assertTrue(optNodes.equals(Optional.absent()));
+    public void testGetBridgeNode() {
+        Optional<Node> optNodes = briOperationState.getBridgeNode(nodeIid);
+        assertEquals(brNode, optNodes.get());
     }
 
     @Test
     public void testGetOvsdbBridgeAugmentation() throws Exception {
-        Optional<OvsdbBridgeAugmentation> optOvsdbBri = briOperationState.getOvsdbBridgeAugmentation(iid);
+        Optional<OvsdbBridgeAugmentation> optOvsdbBri = briOperationState.getOvsdbBridgeAugmentation(nodeIid);
         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
         assertNotNull(optOvsdbBri);
-        assertTrue(optOvsdbBri.equals(Optional.absent()));
+        assertTrue(optOvsdbBri.equals(Optional.empty()));
 
         Node node = mock(Node.class);
-        Optional<Node> optNode = mock(Optional.class);
+        Optional<Node> optNode = Optional.of(node);
+        doReturn(optNode).when(briOperationState).getBridgeNode(any(InstanceIdentifier.class));
         OvsdbBridgeAugmentation ovsdbBriAug = mock(OvsdbBridgeAugmentation.class);
-        PowerMockito.suppress(MemberMatcher.method(BridgeOperationalState.class, "getBridgeNode", InstanceIdentifier.class));
-        when(briOperationState.getBridgeNode(any(InstanceIdentifier.class))).thenReturn(optNode);
-        when(optNode.isPresent()).thenReturn(true);
-        when(optNode.get()).thenReturn(node);
-        when(node.getAugmentation(OvsdbBridgeAugmentation.class)).thenReturn(ovsdbBriAug);
+        doReturn(ovsdbBriAug).when(node).augmentation(OvsdbBridgeAugmentation.class);
         Optional<OvsdbBridgeAugmentation> ovsdbBriAugOptional = briOperationState.getOvsdbBridgeAugmentation(iid);
         assertNotNull(ovsdbBriAugOptional);
         assertTrue(ovsdbBriAugOptional.get() instanceof OvsdbBridgeAugmentation);
@@ -93,61 +104,54 @@ public class BridgeOperationalStateTest {
 
     @Test
     public void testGetBridgeTerminationPoint() throws Exception {
-        Optional<TerminationPoint> optTerm = briOperationState.getBridgeTerminationPoint(iid);
+        Optional<TerminationPoint> optTerm = briOperationState.getBridgeTerminationPoint(nodeIid);
         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
         assertNotNull(optTerm);
-        assertTrue(optTerm.equals(Optional.absent()));
+        assertTrue(optTerm.equals(Optional.empty()));
 
-        Node node = mock(Node.class);
-        Optional<Node> optNode = mock(Optional.class);
         TerminationPoint termPnt = mock(TerminationPoint.class);
         List<TerminationPoint> termPntList = new ArrayList<>();
         termPntList.add(termPnt);
-        TerminationPointKey termPntKey = mock(TerminationPointKey.class);
 
-        PowerMockito.suppress(MemberMatcher.method(BridgeOperationalState.class, "getBridgeNode", InstanceIdentifier.class));
-        when(briOperationState.getBridgeNode(any(InstanceIdentifier.class))).thenReturn(optNode);
-        when(optNode.isPresent()).thenReturn(true);
-        when(optNode.get()).thenReturn(node);
+        Node node = mock(Node.class);
+        Optional<Node> optNode = Optional.of(node);
+        doReturn(optNode).when(briOperationState).getBridgeNode(any(InstanceIdentifier.class));
         when(node.getTerminationPoint()).thenReturn(termPntList);
-        when(termPnt.getKey()).thenReturn(termPntKey);
-
-        final InstanceIdentifier<?> iid2 = PowerMockito.mock(InstanceIdentifier.class);
-        //PowerMockito.suppress(MemberMatcher.method(InstanceIdentifier.class, "firstKeyOf", Class.class, Class.class));
-        //PowerMockito.when(iid2.firstKeyOf(TerminationPoint.class, TerminationPointKey.class)).thenReturn(termPntKey);
-        Optional<TerminationPoint> optTermPnt = briOperationState.getBridgeTerminationPoint(iid2);
-        assertNotNull(optTermPnt);
-        //assertTrue(optTermPnt.get() instanceof TerminationPoint);
+        TerminationPointKey termPntKey = mock(TerminationPointKey.class);
+        when(termPnt.key()).thenReturn(termPntKey);
+
+        Optional<TerminationPoint> optTermPnt = briOperationState.getBridgeTerminationPoint(
+            iidNode.child(TerminationPoint.class, termPntKey));
+        assertTrue(optTermPnt.isPresent());
     }
 
     @Test
     public void testGetOvsdbTerminationPointAugmentation() {
-        Optional<OvsdbTerminationPointAugmentation> optOvsdbTermPoint = briOperationState.getOvsdbTerminationPointAugmentation(iid);
+        Optional<OvsdbTerminationPointAugmentation> optOvsdbTermPoint = briOperationState
+                .getOvsdbTerminationPointAugmentation(nodeIid);
         assertNotNull(optOvsdbTermPoint);
         verify(briOperationState, times(1)).getBridgeTerminationPoint(any(InstanceIdentifier.class));
         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
-        assertTrue(optOvsdbTermPoint.equals(Optional.absent()));
+        assertTrue(optOvsdbTermPoint.equals(Optional.empty()));
 
         TerminationPoint termPoint = mock(TerminationPoint.class);
-        Optional<TerminationPoint> termPntOptional = mock(Optional.class);
+        Optional<TerminationPoint> termPntOptional = Optional.of(termPoint);
+        doReturn(termPntOptional).when(briOperationState).getBridgeTerminationPoint(any(InstanceIdentifier.class));
         OvsdbTerminationPointAugmentation ovsdbTermPntAug = mock(OvsdbTerminationPointAugmentation.class);
-        PowerMockito.suppress(MemberMatcher.method(BridgeOperationalState.class, "getBridgeTerminationPoint", InstanceIdentifier.class));
-        when(briOperationState.getBridgeTerminationPoint(any(InstanceIdentifier.class))).thenReturn(termPntOptional);
-        when(termPntOptional.isPresent()).thenReturn(true);
-        when(termPntOptional.get()).thenReturn(termPoint);
-        when(termPoint.getAugmentation(OvsdbTerminationPointAugmentation.class)).thenReturn(ovsdbTermPntAug);
-        Optional<OvsdbTerminationPointAugmentation> ovsdbTermPointOpt = briOperationState.getOvsdbTerminationPointAugmentation(iid);
+        doReturn(ovsdbTermPntAug).when(termPoint).augmentation(OvsdbTerminationPointAugmentation.class);
+        Optional<OvsdbTerminationPointAugmentation> ovsdbTermPointOpt = briOperationState
+                .getOvsdbTerminationPointAugmentation(iid);
         assertNotNull(ovsdbTermPointOpt);
         assertTrue(ovsdbTermPointOpt.get() instanceof OvsdbTerminationPointAugmentation);
     }
 
     @Test
     public void testGetControllerEntry() {
-        Optional<ControllerEntry> optController= briOperationState.getControllerEntry(iid);
+        Optional<ControllerEntry> optController = briOperationState.getControllerEntry(nodeIid);
         verify(briOperationState, times(1)).getOvsdbBridgeAugmentation(any(InstanceIdentifier.class));
         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
         assertNotNull(optController);
-        assertTrue(optController.equals(Optional.absent()));
+        assertTrue(optController.equals(Optional.empty()));
     }
 
     @Test
@@ -156,6 +160,6 @@ public class BridgeOperationalStateTest {
         verify(briOperationState, times(1)).getOvsdbBridgeAugmentation(any(InstanceIdentifier.class));
         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
         assertNotNull(optProtocolEntry);
-        assertTrue(optProtocolEntry.equals(Optional.absent()));
+        assertTrue(optProtocolEntry.equals(Optional.empty()));
     }
 }