f81b0cedaef092b34e2c2a7e8af8ca76aca54230
[ovsdb.git] / southbound / southbound-impl / src / test / java / org / opendaylight / ovsdb / southbound / ovsdb / transact / BridgeOperationalStateTest.java
1 /*
2  * Copyright (c) 2015 Inocybe Technologies. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertTrue;
14 import static org.mockito.Matchers.any;
15 import static org.mockito.Mockito.doReturn;
16 import static org.mockito.Mockito.mock;
17 import static org.mockito.Mockito.times;
18 import static org.mockito.Mockito.verify;
19 import static org.mockito.Mockito.when;
20 import static org.powermock.reflect.Whitebox.getField;
21
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.Map;
25 import java.util.Optional;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.junit.runner.RunWith;
29 import org.mockito.Mock;
30 import org.mockito.Mockito;
31 import org.mockito.junit.MockitoJUnitRunner;
32 import org.opendaylight.mdsal.binding.api.DataBroker;
33 import org.opendaylight.mdsal.binding.api.ReadTransaction;
34 import org.opendaylight.ovsdb.southbound.OvsdbOperGlobalListener;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
39 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
40 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
41 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
42 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
43 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
44 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
45 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
46 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
47 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
48 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
49 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
50
51 @RunWith(MockitoJUnitRunner.class)
52 public class BridgeOperationalStateTest {
53     private final Node nd = new NodeBuilder().setNodeId(new NodeId("foo")).build();
54     private final InstanceIdentifier<?> iid = InstanceIdentifier.create(Topology.class);
55
56     private final InstanceIdentifier<Node> nodeIid = InstanceIdentifier.create(NetworkTopology.class)
57             .child(Topology.class).child(Node.class);
58     private final Node brNode = new NodeBuilder().build();
59
60     @Mock private BridgeOperationalState briOperationState;
61     @Mock private DataBroker db;
62     @Mock ReadTransaction mockReadTx;
63     private InstanceIdentifier<ProtocolEntry> protocolEntry;
64     private InstanceIdentifier<Node> iidNode;
65     private Map<InstanceIdentifier<Node>, Node> operationalNodes;
66
67     @Before
68     public void setUp() throws Exception {
69         iidNode = InstanceIdentifier.create(NetworkTopology.class)
70                 .child(Topology.class, new TopologyKey(new TopologyId("foo")))
71                 .child(Node.class, new NodeKey(nd.getNodeId()));
72         protocolEntry = InstanceIdentifier.create(NetworkTopology.class).child(Topology.class).child(Node.class)
73                 .augmentation(OvsdbBridgeAugmentation.class).child(ProtocolEntry.class);
74
75         briOperationState = mock(BridgeOperationalState.class, Mockito.CALLS_REAL_METHODS);
76
77         getField(BridgeOperationalState.class,"db").set(briOperationState, db);
78         doReturn(mockReadTx).when(db).newReadOnlyTransaction();
79         OvsdbOperGlobalListener.OPER_NODE_CACHE.put(nodeIid, brNode);
80     }
81
82     @Test
83     public void testGetBridgeNode() {
84         Optional<Node> optNodes = briOperationState.getBridgeNode(nodeIid);
85         assertEquals(brNode, optNodes.get());
86     }
87
88     @Test
89     public void testGetOvsdbBridgeAugmentation() throws Exception {
90         Optional<OvsdbBridgeAugmentation> optOvsdbBri = briOperationState.getOvsdbBridgeAugmentation(nodeIid);
91         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
92         assertNotNull(optOvsdbBri);
93         assertTrue(optOvsdbBri.equals(Optional.empty()));
94
95         Node node = mock(Node.class);
96         Optional<Node> optNode = Optional.of(node);
97         doReturn(optNode).when(briOperationState).getBridgeNode(any(InstanceIdentifier.class));
98         OvsdbBridgeAugmentation ovsdbBriAug = mock(OvsdbBridgeAugmentation.class);
99         doReturn(ovsdbBriAug).when(node).augmentation(OvsdbBridgeAugmentation.class);
100         Optional<OvsdbBridgeAugmentation> ovsdbBriAugOptional = briOperationState.getOvsdbBridgeAugmentation(iid);
101         assertNotNull(ovsdbBriAugOptional);
102         assertTrue(ovsdbBriAugOptional.get() instanceof OvsdbBridgeAugmentation);
103     }
104
105     @Test
106     public void testGetBridgeTerminationPoint() throws Exception {
107         Optional<TerminationPoint> optTerm = briOperationState.getBridgeTerminationPoint(nodeIid);
108         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
109         assertNotNull(optTerm);
110         assertTrue(optTerm.equals(Optional.empty()));
111
112         TerminationPoint termPnt = mock(TerminationPoint.class);
113         List<TerminationPoint> termPntList = new ArrayList<>();
114         termPntList.add(termPnt);
115
116         Node node = mock(Node.class);
117         Optional<Node> optNode = Optional.of(node);
118         doReturn(optNode).when(briOperationState).getBridgeNode(any(InstanceIdentifier.class));
119         when(node.getTerminationPoint()).thenReturn(termPntList);
120         TerminationPointKey termPntKey = mock(TerminationPointKey.class);
121         when(termPnt.key()).thenReturn(termPntKey);
122
123         Optional<TerminationPoint> optTermPnt = briOperationState.getBridgeTerminationPoint(
124             iidNode.child(TerminationPoint.class, termPntKey));
125         assertTrue(optTermPnt.isPresent());
126     }
127
128     @Test
129     public void testGetOvsdbTerminationPointAugmentation() {
130         Optional<OvsdbTerminationPointAugmentation> optOvsdbTermPoint = briOperationState
131                 .getOvsdbTerminationPointAugmentation(nodeIid);
132         assertNotNull(optOvsdbTermPoint);
133         verify(briOperationState, times(1)).getBridgeTerminationPoint(any(InstanceIdentifier.class));
134         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
135         assertTrue(optOvsdbTermPoint.equals(Optional.empty()));
136
137         TerminationPoint termPoint = mock(TerminationPoint.class);
138         Optional<TerminationPoint> termPntOptional = Optional.of(termPoint);
139         doReturn(termPntOptional).when(briOperationState).getBridgeTerminationPoint(any(InstanceIdentifier.class));
140         OvsdbTerminationPointAugmentation ovsdbTermPntAug = mock(OvsdbTerminationPointAugmentation.class);
141         doReturn(ovsdbTermPntAug).when(termPoint).augmentation(OvsdbTerminationPointAugmentation.class);
142         Optional<OvsdbTerminationPointAugmentation> ovsdbTermPointOpt = briOperationState
143                 .getOvsdbTerminationPointAugmentation(iid);
144         assertNotNull(ovsdbTermPointOpt);
145         assertTrue(ovsdbTermPointOpt.get() instanceof OvsdbTerminationPointAugmentation);
146     }
147
148     @Test
149     public void testGetControllerEntry() {
150         Optional<ControllerEntry> optController = briOperationState.getControllerEntry(nodeIid);
151         verify(briOperationState, times(1)).getOvsdbBridgeAugmentation(any(InstanceIdentifier.class));
152         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
153         assertNotNull(optController);
154         assertTrue(optController.equals(Optional.empty()));
155     }
156
157     @Test
158     public void testGetProtocolEntry() throws Exception {
159         Optional<ProtocolEntry> optProtocolEntry = briOperationState.getProtocolEntry(protocolEntry);
160         verify(briOperationState, times(1)).getOvsdbBridgeAugmentation(any(InstanceIdentifier.class));
161         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
162         assertNotNull(optProtocolEntry);
163         assertTrue(optProtocolEntry.equals(Optional.empty()));
164     }
165 }