2 * Copyright (c) 2015 Inocybe Technologies. and others. All rights reserved.
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
9 package org.opendaylight.ovsdb.southbound.ovsdb.transact;
11 import static org.junit.Assert.*;
12 import static org.mockito.Matchers.*;
13 import static org.mockito.Mockito.*;
15 import java.util.ArrayList;
16 import java.util.HashMap;
17 import java.util.List;
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;
43 import com.google.common.base.Optional;
44 import org.powermock.api.support.membermodification.MemberMatcher;
46 @PrepareForTest({BridgeOperationalState.class, Optional.class, InstanceIdentifier.class, Node.class, OvsdbBridgeAugmentation.class})
47 @RunWith(PowerMockRunner.class)
48 public class BridgeOperationalStateTest {
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;
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);
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));
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()));
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()));
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);
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()));
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);
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);
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);
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()));
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);
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()));
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()));