Unit test for ovsdb.southbound.ovsdb.transact
[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.*;
12 import static org.mockito.Matchers.*;
13 import static org.mockito.Mockito.*;
14
15 import java.util.ArrayList;
16 import java.util.HashMap;
17 import java.util.List;
18 import java.util.Map;
19
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.junit.runner.RunWith;
23 import org.mockito.Mock;
24 import org.mockito.Mockito;
25 import org.mockito.Spy;
26 import org.mockito.invocation.InvocationOnMock;
27 import org.mockito.stubbing.Answer;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntry;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ProtocolEntry;
32 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
33 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
34 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
35 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
36 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
37 import org.powermock.api.mockito.PowerMockito;
38 import org.powermock.api.support.membermodification.MemberModifier;
39 import org.powermock.core.classloader.annotations.PrepareForTest;
40 import org.powermock.modules.junit4.PowerMockRunner;
41 import org.powermock.reflect.Whitebox;
42
43 import com.google.common.base.Optional;
44 import org.powermock.api.support.membermodification.MemberMatcher;
45
46 @PrepareForTest({BridgeOperationalState.class, Optional.class, InstanceIdentifier.class, Node.class, OvsdbBridgeAugmentation.class})
47 @RunWith(PowerMockRunner.class)
48 public class BridgeOperationalStateTest {
49
50     @Mock private BridgeOperationalState briOperationState;
51     @Mock private InstanceIdentifier<ProtocolEntry> protocolEntry;
52     @Mock private InstanceIdentifier<?> iid;
53     @Mock private InstanceIdentifier<Node> iidNode;
54     @Mock private Node nd;
55     private Map<InstanceIdentifier<Node>, Node> operationalNodes;
56
57     @Before
58     public void setUp() throws Exception {
59         briOperationState = mock(BridgeOperationalState.class, Mockito.CALLS_REAL_METHODS);
60         iid = mock(InstanceIdentifier.class, Mockito.RETURNS_MOCKS);
61         protocolEntry = mock(InstanceIdentifier.class, Mockito.RETURNS_MOCKS);
62         iidNode = mock(InstanceIdentifier.class, Mockito.RETURNS_MOCKS);
63         nd = mock(Node.class, Mockito.RETURNS_MOCKS);
64
65         operationalNodes = new HashMap<>();
66         operationalNodes.put(iidNode, nd);
67         MemberModifier.field(BridgeOperationalState.class,"operationalNodes").set(briOperationState, operationalNodes);
68         PowerMockito.suppress(MemberMatcher.methodsDeclaredIn(InstanceIdentifier.class));
69     }
70
71     @Test
72     public void testGetBridgeNode() throws Exception {
73         Optional<Node> optNodes = briOperationState.getBridgeNode(iid);
74         verify(iid, times(1)).firstIdentifierOf(Node.class);
75         assertNotNull(optNodes);
76         assertTrue(optNodes.equals(Optional.absent()));
77     }
78
79     @Test
80     public void testGetOvsdbBridgeAugmentation() throws Exception {
81         Optional<OvsdbBridgeAugmentation> optOvsdbBri = briOperationState.getOvsdbBridgeAugmentation(iid);
82         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
83         assertNotNull(optOvsdbBri);
84         assertTrue(optOvsdbBri.equals(Optional.absent()));
85
86         Node node = mock(Node.class);
87         Optional<Node> optNode = mock(Optional.class);
88         OvsdbBridgeAugmentation ovsdbBriAug = mock(OvsdbBridgeAugmentation.class);
89         PowerMockito.suppress(MemberMatcher.method(BridgeOperationalState.class, "getBridgeNode", InstanceIdentifier.class));
90         when(briOperationState.getBridgeNode(any(InstanceIdentifier.class))).thenReturn(optNode);
91         when(optNode.isPresent()).thenReturn(true);
92         when(optNode.get()).thenReturn(node);
93         when(node.getAugmentation(OvsdbBridgeAugmentation.class)).thenReturn(ovsdbBriAug);
94         Optional<OvsdbBridgeAugmentation> ovsdbBriAugOptional = briOperationState.getOvsdbBridgeAugmentation(iid);
95         assertNotNull(ovsdbBriAugOptional);
96         assertTrue(ovsdbBriAugOptional.get() instanceof OvsdbBridgeAugmentation);
97     }
98
99     @Test
100     public void testGetBridgeTerminationPoint() throws Exception {
101         Optional<TerminationPoint> optTerm = briOperationState.getBridgeTerminationPoint(iid);
102         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
103         assertNotNull(optTerm);
104         assertTrue(optTerm.equals(Optional.absent()));
105
106         Node node = mock(Node.class);
107         Optional<Node> optNode = mock(Optional.class);
108         TerminationPoint termPnt = mock(TerminationPoint.class);
109         List<TerminationPoint> termPntList = new ArrayList<TerminationPoint>();
110         termPntList.add(termPnt);
111         TerminationPointKey termPntKey = mock(TerminationPointKey.class);
112
113         PowerMockito.suppress(MemberMatcher.method(BridgeOperationalState.class, "getBridgeNode", InstanceIdentifier.class));
114         when(briOperationState.getBridgeNode(any(InstanceIdentifier.class))).thenReturn(optNode);
115         when(optNode.isPresent()).thenReturn(true);
116         when(optNode.get()).thenReturn(node);
117         when(node.getTerminationPoint()).thenReturn(termPntList);
118         when(termPnt.getKey()).thenReturn(termPntKey);
119
120         final InstanceIdentifier<?> iid2 = PowerMockito.mock(InstanceIdentifier.class);
121         //PowerMockito.suppress(MemberMatcher.method(InstanceIdentifier.class, "firstKeyOf", Class.class, Class.class));
122         //PowerMockito.when(iid2.firstKeyOf(TerminationPoint.class, TerminationPointKey.class)).thenReturn(termPntKey);
123         Optional<TerminationPoint> optTermPnt = briOperationState.getBridgeTerminationPoint(iid2);
124         assertNotNull(optTermPnt);
125         //assertTrue(optTermPnt.get() instanceof TerminationPoint);
126     }
127
128     @Test
129     public void testGetOvsdbTerminationPointAugmentation() {
130         Optional<OvsdbTerminationPointAugmentation> optOvsdbTermPoint = briOperationState.getOvsdbTerminationPointAugmentation(iid);
131         assertNotNull(optOvsdbTermPoint);
132         verify(briOperationState, times(1)).getBridgeTerminationPoint(any(InstanceIdentifier.class));
133         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
134         assertTrue(optOvsdbTermPoint.equals(Optional.absent()));
135
136         TerminationPoint termPoint = mock(TerminationPoint.class);
137         Optional<TerminationPoint> termPntOptional = mock(Optional.class);
138         OvsdbTerminationPointAugmentation ovsdbTermPntAug = mock(OvsdbTerminationPointAugmentation.class);
139         PowerMockito.suppress(MemberMatcher.method(BridgeOperationalState.class, "getBridgeTerminationPoint", InstanceIdentifier.class));
140         when(briOperationState.getBridgeTerminationPoint(any(InstanceIdentifier.class))).thenReturn(termPntOptional);
141         when(termPntOptional.isPresent()).thenReturn(true);
142         when(termPntOptional.get()).thenReturn(termPoint);
143         when(termPoint.getAugmentation(OvsdbTerminationPointAugmentation.class)).thenReturn(ovsdbTermPntAug);
144         Optional<OvsdbTerminationPointAugmentation> ovsdbTermPointOpt = briOperationState.getOvsdbTerminationPointAugmentation(iid);
145         assertNotNull(ovsdbTermPointOpt);
146         assertTrue(ovsdbTermPointOpt.get() instanceof OvsdbTerminationPointAugmentation);
147     }
148
149     @Test
150     public void testGetControllerEntry() {
151         Optional<ControllerEntry> optController= briOperationState.getControllerEntry(iid);
152         verify(briOperationState, times(1)).getOvsdbBridgeAugmentation(any(InstanceIdentifier.class));
153         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
154         assertNotNull(optController);
155         assertTrue(optController.equals(Optional.absent()));
156     }
157
158     @Test
159     public void testGetProtocolEntry() throws Exception {
160         Optional<ProtocolEntry> optProtocolEntry = briOperationState.getProtocolEntry(protocolEntry);
161         verify(briOperationState, times(1)).getOvsdbBridgeAugmentation(any(InstanceIdentifier.class));
162         verify(briOperationState, times(1)).getBridgeNode(any(InstanceIdentifier.class));
163         assertNotNull(optProtocolEntry);
164         assertTrue(optProtocolEntry.equals(Optional.absent()));
165     }
166 }