package org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyBoolean;
+import static org.mockito.Matchers.anyLong;
+import static org.mockito.Matchers.anyShort;
import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.same;
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 java.lang.reflect.Field;
import java.net.InetAddress;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.neutron.spi.INeutronNetworkCRUD;
-import org.opendaylight.neutron.spi.INeutronPortCRUD;
-import org.opendaylight.neutron.spi.INeutronSubnetCRUD;
-import org.opendaylight.neutron.spi.NeutronLoadBalancerPool;
import org.opendaylight.neutron.spi.NeutronNetwork;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
-import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.LBaaSHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.LBaaSPoolHandler;
+import org.opendaylight.ovsdb.openstack.netvirt.MdsalHelper;
import org.opendaylight.ovsdb.openstack.netvirt.NetworkHandler;
-import org.opendaylight.ovsdb.openstack.netvirt.NeutronCacheUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
import org.opendaylight.ovsdb.openstack.netvirt.api.BridgeConfigurationManager;
import org.opendaylight.ovsdb.openstack.netvirt.api.ClassifierProvider;
import org.opendaylight.ovsdb.openstack.netvirt.api.ConfigurationService;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
import org.opendaylight.ovsdb.openstack.netvirt.api.EgressAclProvider;
import org.opendaylight.ovsdb.openstack.netvirt.api.IngressAclProvider;
import org.opendaylight.ovsdb.openstack.netvirt.api.L2ForwardingProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProvider;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NetworkingProviderManager;
+import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
import org.opendaylight.ovsdb.openstack.netvirt.api.SecurityServicesManager;
+import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
import org.opendaylight.ovsdb.openstack.netvirt.api.Status;
import org.opendaylight.ovsdb.openstack.netvirt.api.StatusCode;
import org.opendaylight.ovsdb.openstack.netvirt.api.TenantNetworkManager;
-import org.opendaylight.ovsdb.openstack.netvirt.impl.EventDispatcherImpl;
-//import org.opendaylight.ovsdb.plugin.api.OvsdbConnectionService;
-//import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
+import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
//import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
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.opendaylight.inventory.rev130819.nodes.NodeBuilder;
-//import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
+import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
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;
+import org.powermock.reflect.Whitebox;
/**
* Unit test for {@link OF13Provider}
*/
-@Ignore // TODO SB_MIGRATION
-@PrepareForTest(OF13Provider.class)
+@PrepareForTest({OF13Provider.class, InetAddress.class, MdsalHelper.class, ServiceHelper.class})
@RunWith(PowerMockRunner.class)
public class OF13ProviderTest {
- @InjectMocks private OF13Provider of13Provider;
- @Mock private NeutronNetwork network;
- @Mock private org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node openflowNode;
- @Mock private Node node;
- @Mock private Node node2;
- @Mock private Node node3;
- //@Mock private Interface intf;
-
- @Mock private ConfigurationService configurationService;
- @Mock private BridgeConfigurationManager bridgeConfigurationManager;
- @Mock private TenantNetworkManager tenantNetworkManager;
- /* TODO SB_MIGRATION */
- //@Mock private OvsdbConnectionService connectionService;
- @Mock private SecurityServicesManager securityServicesManager;
- @Mock private IngressAclProvider ingressAclProvider;
- @Mock private EgressAclProvider egressAclProvider;
- @Mock private ClassifierProvider classifierProvider;
- @Mock private L2ForwardingProvider l2ForwardingProvider;
- @Mock private DataBroker dataBroker;
+ @Mock private OF13Provider of13Provider;
+ private static final String TYPE = "gre";
+ private static final String IP = "127.0.0.1";
+ private static final String BR_INT = "br-int";
+ private static final String ID = "4";
+ private static final String PORT = "port-int";
+ private static final String SEG_ID = "5";
+ private static final String MAC_ADDRESS = "mac-address";
+ private static final long LOCAL_PORT = 3;
@Before
public void setUp() throws Exception{
- of13Provider = new OF13Provider();
-
- //Setup mock dependency services.
- configurationService = Mockito.mock(ConfigurationService.class);
- bridgeConfigurationManager = Mockito.mock(BridgeConfigurationManager.class);
- tenantNetworkManager = Mockito.mock(TenantNetworkManager.class);
- /* TODO SB_MIGRATION */
- //connectionService = Mockito.mock(OvsdbConnectionService.class);
- //mdsalConsumer = Mockito.mock(MdsalConsumer.class);
- securityServicesManager = Mockito.mock(SecurityServicesManager.class);
- ingressAclProvider = Mockito.mock(IngressAclProvider.class);
- egressAclProvider = Mockito.mock(EgressAclProvider.class);
- classifierProvider = Mockito.mock(ClassifierProvider.class);
- l2ForwardingProvider = Mockito.mock(L2ForwardingProvider.class);
- dataBroker = Mockito.mock(DataBroker.class);
-
- this.SeedMockDependencies();
-
- List<Node> nodeList = new ArrayList();
- NodeId nodeId = new NodeId("Node1");
- NodeKey nodeKey = new NodeKey(nodeId);
-
- node = Mockito.mock(Node.class);
+ of13Provider = PowerMockito.mock(OF13Provider.class, Mockito.CALLS_REAL_METHODS);
+ }
+
+ @Test
+ public void testGetName() {
+ assertEquals("Error, did not return the correct name", OF13Provider.NAME, of13Provider.getName());
+ }
+
+ @Test
+ public void testSupportsServices() {
+ assertTrue("Error, did not return the correct boolean", of13Provider.supportsServices());
+ }
+
+ @Test
+ public void testHasPerTenantTunneling() {
+ assertFalse("Error, did not return the correct boolean", of13Provider.hasPerTenantTunneling());
+ }
+
+ @Test
+ public void testGetTunnelReadinessStatus() throws Exception {
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ BridgeConfigurationManager bridgeConfigurationManager = mock(BridgeConfigurationManager.class);
+ TenantNetworkManager tenantNetworkManager = mock(TenantNetworkManager.class);
+
+ MemberModifier.field(OF13Provider.class, "configurationService").set(of13Provider , configurationService);
+ MemberModifier.field(OF13Provider.class, "bridgeConfigurationManager").set(of13Provider , bridgeConfigurationManager);
+ MemberModifier.field(OF13Provider.class, "tenantNetworkManager").set(of13Provider , tenantNetworkManager);
+
+ assertEquals("Error, did not return the correct status code", new Status(StatusCode.NOTFOUND), Whitebox.invokeMethod(of13Provider, "getTunnelReadinessStatus", mock(Node.class), ""));
+
+ when(configurationService.getTunnelEndPoint(any(Node.class))).thenReturn(mock(InetAddress.class));
+ when(bridgeConfigurationManager.isNodeNeutronReady(any(Node.class))).thenReturn(false, true);
+
+ assertEquals("Error, did not return the correct status code", new Status(StatusCode.NOTACCEPTABLE), Whitebox.invokeMethod(of13Provider, "getTunnelReadinessStatus", mock(Node.class), ""));
+
+ when(tenantNetworkManager.isTenantNetworkPresentInNode(any(Node.class), anyString())).thenReturn(false, true);
+
+ assertEquals("Error, did not return the correct status code", new Status(StatusCode.NOTACCEPTABLE), Whitebox.invokeMethod(of13Provider, "getTunnelReadinessStatus", mock(Node.class), ""));
+ assertEquals("Error, did not return the correct status code", new Status(StatusCode.SUCCESS), Whitebox.invokeMethod(of13Provider, "getTunnelReadinessStatus", mock(Node.class), ""));
+ }
+
+ @Test
+ public void testGetTunnelName() throws Exception {
+ PowerMockito.mockStatic(InetAddress.class);
+ InetAddress inetAddress = mock(InetAddress.class);
+ PowerMockito.when(inetAddress.getHostAddress()).thenReturn(IP);
+
+ String ret = TYPE + "-" + inetAddress.getHostAddress();
+ assertEquals("Error, did not return the correct status code", ret, Whitebox.invokeMethod(of13Provider, "getTunnelName", TYPE, inetAddress));
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testAddTunnelPort() throws Exception {
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ when(configurationService.getIntegrationBridgeName()).thenReturn(BR_INT);
+ Southbound southbound = mock(Southbound.class);
+ when(southbound.extractTerminationPointAugmentation(any(Node.class), anyString())).thenReturn(mock(OvsdbTerminationPointAugmentation.class));
+ NodeId nodeId = mock(NodeId.class);
+ when(nodeId.getValue()).thenReturn(ID);
+ Node node = mock(Node.class);
when(node.getNodeId()).thenReturn(nodeId);
- when(node.getKey()).thenReturn(new NodeKey(nodeId));
- when(configurationService.getTunnelEndPoint(node)).thenReturn(InetAddress.getByName("192.168.0.1"));
- nodeList.add(node);
-
- nodeId = new NodeId("Node2");
- node2 = Mockito.mock(Node.class);
- when(node2.getNodeId()).thenReturn(nodeId);
- when(node2.getKey()).thenReturn(new NodeKey(nodeId));
- when(configurationService.getTunnelEndPoint(node2)).thenReturn(InetAddress.getByName("192.168.0.2"));
- nodeList.add(node2);
-
- nodeId = new NodeId("Node3");
- node3 = Mockito.mock(Node.class);
- when(node3.getNodeId()).thenReturn(nodeId);
- when(node3.getKey()).thenReturn(new NodeKey(nodeId));
- when(configurationService.getTunnelEndPoint(node3)).thenReturn(InetAddress.getByName("192.168.0.3"));
- nodeList.add(node3);
-
- /* TODO SB_MIGRATION
- //when(connectionService.getBridgeNodes()).thenReturn(nodeList);
-
- final String key = "key";
- ConcurrentHashMap<String, Row> bridgeTable = new ConcurrentHashMap();
- bridgeTable.put(key, new Row());
-
- Row bridgeRow = Mockito.mock(Row.class);
- Bridge bridge = Mockito.mock(Bridge.class);
-
-
- Set<String> paths = new HashSet<String>(Arrays.asList(new String[] { "100"}));
- Column<GenericTableSchema, Set<String>> dataPathIdColumns = Mockito.mock(Column.class);
-
- when(dataPathIdColumns.getData()).thenReturn(paths);
- when(bridge.getDatapathIdColumn()).thenReturn(dataPathIdColumns);
-
- when(configurationService.getIntegrationBridgeName()).thenReturn(key);
- //when(ovsdbConfigurationService.getTableName(node, Bridge.class)).thenReturn(key);
- //when(ovsdbConfigurationService.getRows(node, key)).thenReturn(bridgeTable);
- //when(ovsdbConfigurationService.getRow(node, ovsdbConfigurationService.getTableName(node, Bridge.class), key)).thenReturn(bridgeRow);
- //when(ovsdbConfigurationService.getTypedRow(node, Bridge.class, bridgeRow)).thenReturn(bridge);
-
- Bridge bridge1 = Mockito.mock(Bridge.class);
- when(bridge1.getName()).thenReturn(key);
- //when(ovsdbConfigurationService.getTypedRow(node, Bridge.class, bridgeTable.get(key))).thenReturn(bridge1);
-
- Port port = mock(Port.class);
- Column<GenericTableSchema, Set<UUID>> itfaceColumns = mock(Column.class);
- when(port.getInterfacesColumn()).thenReturn(itfaceColumns);
- Set<UUID> ifaceUUIDs = new HashSet();
- ifaceUUIDs.add(mock(UUID.class));
- when(itfaceColumns.getData()).thenReturn(ifaceUUIDs );
- //when(ovsdbConfigurationService.getTypedRow(any(Node.class), same(Port.class), any(Row.class))).thenReturn(port);
-
- intf = mock(Interface.class);
-
- Set<Long> ports = new HashSet<Long>(Arrays.asList(new Long[] { 21L, 23L ,80L}));
- Column<GenericTableSchema, Set<Long>> openFlowPortColumns = Mockito.mock(Column.class);
- when(openFlowPortColumns.getData()).thenReturn(ports);
-
- when(intf.getName()).thenReturn("intf1");
- when(intf.getOpenFlowPortColumn()).thenReturn(openFlowPortColumns);
-
- Column<GenericTableSchema, Map<String, String>> externalIdColumns = mock(Column.class);
- Map<String, String> externalIds = new HashMap();
- externalIds.put(Constants.EXTERNAL_ID_INTERFACE_ID, "portUUID");
- externalIds.put(Constants.EXTERNAL_ID_VM_MAC, "extMac");
- when(externalIdColumns.getData()).thenReturn(externalIds);
-
- when(intf.getExternalIdsColumn()).thenReturn(externalIdColumns);
- //when(ovsdbConfigurationService.getTypedRow(any(Node.class), same(Interface.class), any(Row.class))).thenReturn(intf);
-*/
+
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "getTunnelName", String.class, InetAddress.class));
+
+ MemberModifier.field(OF13Provider.class, "configurationService").set(of13Provider , configurationService);
+ MemberModifier.field(OF13Provider.class, "southbound").set(of13Provider , southbound);
+
+ assertTrue("Error, did not add the port", (boolean) Whitebox.invokeMethod(of13Provider, "addTunnelPort", node, TYPE, mock(InetAddress.class), mock(InetAddress.class)));
+
+ when(southbound.extractTerminationPointAugmentation(any(Node.class), anyString())).thenReturn(null);
+ when(southbound.addTunnelTerminationPoint(any(Node.class), anyString(), anyString(), anyString(), any(HashMap.class))).thenReturn(false);
+
+ assertFalse("Error, did add the port", (boolean) Whitebox.invokeMethod(of13Provider, "addTunnelPort", node, TYPE, mock(InetAddress.class), mock(InetAddress.class)));
+
+ when(southbound.addTunnelTerminationPoint(any(Node.class), anyString(), anyString(), anyString(), any(HashMap.class))).thenReturn(true);
+
+ assertTrue("Error, did not add the port", (boolean) Whitebox.invokeMethod(of13Provider, "addTunnelPort", node, TYPE, mock(InetAddress.class), mock(InetAddress.class)));
+ PowerMockito.verifyPrivate(of13Provider, times(3)).invoke("getTunnelName", anyString(), any(InetAddress.class));
}
+ @Test
+ public void testDeletePort() throws Exception {
+ Southbound southbound = mock(Southbound.class);
+ when(southbound.deleteTerminationPoint(any(Node.class), anyString())).thenReturn(false, true);
+ MemberModifier.field(OF13Provider.class, "southbound").set(of13Provider , southbound);
+
+ assertFalse("Error, did delete the port", (boolean) Whitebox.invokeMethod(of13Provider, "deletePort", mock(Node.class), TYPE, PORT));
+ assertTrue("Error, did not delete the port", (boolean) Whitebox.invokeMethod(of13Provider, "deletePort", mock(Node.class), TYPE, PORT));
+ }
- /**
- * Tests for defaults
- * getName()
- * supportsServices()
- * hasPerTenantTunneling()
- */
@Test
- public void verifyObjectDefaultSettings(){
- assertEquals("Error, getName() - Default provider name is invalid","OF13Provider",of13Provider.getName());
- assertEquals("Error, supportsServices() - Support services is disabled", true, of13Provider.supportsServices());
- assertEquals("Error, hasPerTenantTunneling() - Support for per tenant tunnelling is enabled", false, of13Provider.hasPerTenantTunneling());
+ public void testDeleteTunnelPort() throws Exception {
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ when(configurationService.getIntegrationBridgeName()).thenReturn(BR_INT);
+
+ MemberModifier.field(OF13Provider.class, "configurationService").set(of13Provider , configurationService);
+
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "getTunnelName", String.class, InetAddress.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "deletePort", Node.class, String.class, String.class));
+
+ PowerMockito.when(of13Provider, "deletePort", any(Node.class), anyString(), anyString()).thenReturn(true);
+
+ assertTrue("Error, did not delete the tunnel", (boolean) Whitebox.invokeMethod(of13Provider, "deleteTunnelPort", mock(Node.class), TYPE, mock(InetAddress.class), mock(InetAddress.class)));
+
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("getTunnelName", anyString(), any(InetAddress.class));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("deletePort", any(Node.class), anyString(), anyString());
+
+ PowerMockito.when(of13Provider, "deletePort", any(Node.class), anyString(), anyString()).thenReturn(false);
+
+ assertFalse("Error, did delete the tunnel", (boolean) Whitebox.invokeMethod(of13Provider, "deleteTunnelPort", mock(Node.class), TYPE, mock(InetAddress.class), mock(InetAddress.class)));
+
+ PowerMockito.verifyPrivate(of13Provider, times(2)).invoke("getTunnelName", anyString(), any(InetAddress.class));
+ PowerMockito.verifyPrivate(of13Provider, times(2)).invoke("deletePort", any(Node.class), anyString(), anyString());
+ }
+
+ @Test
+ public void testProgramLocalBridgeRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalInPort", Long.class, Short.class, Short.class, String.class, Long.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleDropSrcIface", Long.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalUcastOut", Long.class, Short.class, String.class, Long.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalBcastOut", Long.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelFloodOut", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelMiss", Long.class, Short.class, Short.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalTableMiss", Long.class, Short.class, String.class, boolean.class));
+
+
+ Whitebox.invokeMethod(of13Provider, "programLocalBridgeRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT);
+
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalInPort", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleDropSrcIface", anyLong(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalUcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalBcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelFloodOut", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelMiss", anyLong(), anyShort(), anyShort(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalTableMiss", anyLong(), anyShort(), anyString(), anyBoolean());
}
- /**
- * Test method
- * {@link OF13Provider#notifyFlowCapableNodeEventTest(Long, Action)}
- */
@Test
- public void notifyFlowCapableNodeEventTest(){
+ public void testRemoveLocalBridgeRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalInPort", Long.class, Short.class, Short.class, String.class, Long.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleDropSrcIface", Long.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalUcastOut", Long.class, Short.class, String.class, Long.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalBcastOut", Long.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelFloodOut", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
+
- long flowId = 100;
- Action action = Action.ADD;
+ Whitebox.invokeMethod(of13Provider, "removeLocalBridgeRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT);
- //of13Provider.notifyFlowCapableNodeEvent(flowId, action);
- //verify(mdsalConsumer, times(1)).notifyFlowCapableNodeCreateEvent(Constants.OPENFLOW_NODE_PREFIX + flowId, action);
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalInPort", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleDropSrcIface", anyLong(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalUcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalBcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelFloodOut", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
}
- /**
- * Test method
- * {@link OF13Provider#initializeFlowRules(Node)}
- */
@Test
- public void initializeFlowRulesTest(){
+ public void testProgramLocalIngressTunnelBridgeRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelIn", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelFloodOut", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
- //Row row = Mockito.mock(Row.class);
- //when(ovsdbConfigurationService.getTypedRow(node, Interface.class, row)).thenReturn(intf);
- //ConcurrentHashMap<String, Row> intfs = new ConcurrentHashMap();
- //intfs.put("intf1", row);
+ Whitebox.invokeMethod(of13Provider, "programLocalIngressTunnelBridgeRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT, LOCAL_PORT);
- NeutronNetwork network = Mockito.mock(NeutronNetwork.class);
- when(network.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_VLAN);
- //when(tenantNetworkManager.getTenantNetwork(intf)).thenReturn(network);
- //when(ovsdbConfigurationService.getRows(node, ovsdbConfigurationService.getTableName(node, Interface.class))).thenReturn(intfs);
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelIn", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelFloodOut", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ }
- of13Provider.initializeFlowRules(node);
+ @Test
+ public void testProgramRemoteEgressTunnelBridgeRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelOut", Long.class, Short.class, Short.class, String.class, Long.class, String.class, boolean.class));
+
+ Whitebox.invokeMethod(of13Provider, "programRemoteEgressTunnelBridgeRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT, LOCAL_PORT);
- /**
- * The final phase of the initialization process is to call triggerInterfaceUpdates(node)
- * This must call tenantNetworkManager.getTenantNetwork(Interface) for each interface.
- * Verify that this is called once since we are initializing flow rules for only one interface.
- */
- /* TODO SB_MIGRATION */
- //verify(tenantNetworkManager, times(1)).getTenantNetwork(intf);
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelOut", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
}
- /**
- * Test method
- * {@link OF13Provider#initializeOFFlowRulesTest(Node)}
- */
@Test
- public void initializeOFFlowRulesTest(){
- /* TODO SB_MIGRATION */
- //of13Provider.initializeOFFlowRules(openflowNode);
- //verify(connectionService, times(1)).getBridgeNodes();
+ public void testRemovePerTunnelRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelIn", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelFloodOut", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleTunnelMiss", Long.class, Short.class, Short.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalTableMiss", Long.class, Short.class, String.class, boolean.class));
+
+ Whitebox.invokeMethod(of13Provider, "removePerTunnelRules", mock(Node.class), Long.valueOf("45"), SEG_ID, LOCAL_PORT);
+
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelIn", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelFloodOut", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleTunnelMiss", anyLong(), anyShort(), anyShort(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalTableMiss", anyLong(), anyShort(), anyString(), anyBoolean());
}
- /**
- * Test method
- * {@link OF13Provider#handleInterfaceUpdateTest(NeutronNetwork, Node, Interface)}
- */
@Test
- public void handleInterfaceUpdateTest(){
- NeutronNetwork network = Mockito.mock(NeutronNetwork.class);
-
- /**
- * For Vlan network type, test ensures that all parameter validations
- * passed by ensuring that ovsdbConfigurationService.getRows(node,"interface_table_name))
- * is called at least once.
- */
-
- when(network.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_VLAN);
- /* TODO SB_MIGRATION */
- //this.of13Provider.handleInterfaceUpdate(network, node, intf);
- //verify(ovsdbConfigurationService, times(1)).getRows(node, ovsdbConfigurationService.getTableName(node, Interface.class));
-
- /**
- * Ideally we want to verify that the right rule tables are constructed for
- * each type of network (vlan, gre, vxlan). However, to simplify things, we just
- * verify that configurationService.getTunnelEndPoint() is called twice for the appropriate
- * network types and for each of the two remaining nodes.
- */
-
- when(network.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_GRE);
- /* TODO SB_MIGRATION */
- //this.of13Provider.handleInterfaceUpdate(network, node, intf);this.of13Provider.handleInterfaceUpdate(network, node, intf);
- /* TODO SB_MIGRATION */
- //verify(configurationService, times(4)).getTunnelEndPoint(node);
-
- when(network.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_VXLAN);
- /* TODO SB_MIGRATION */
- //this.of13Provider.handleInterfaceUpdate(network, node, intf);this.of13Provider.handleInterfaceUpdate(network, node, intf);
- //verify(configurationService, times(8)).getTunnelEndPoint(node);
-
- //assertEquals("Error, handleInterfaceUpdate(String, String) - is returning a non NULL value.", null, this.of13Provider.handleInterfaceUpdate("",""));
+ public void testProgramLocalVlanRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalInPortSetVlan", Long.class, Short.class, Short.class, String.class, Long.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleDropSrcIface", Long.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalVlanUcastOut", Long.class, Short.class, String.class, Long.class, String.class, boolean.class));
+
+ Whitebox.invokeMethod(of13Provider, "programLocalVlanRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT);
+
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalInPortSetVlan", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleDropSrcIface", anyLong(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalVlanUcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
}
- /**
- * Test method
- * {@link OF13Provider#handleInterfaceDelete(String, NeutronNetwork, Node, Interface, boolean)}
- */
@Test
- public void handleInterfaceDeleteTest(){
- NeutronNetwork network = Mockito.mock(NeutronNetwork.class);
+ public void testRemoveLocalVlanRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalInPortSetVlan", Long.class, Short.class, Short.class, String.class, Long.class, String.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleDropSrcIface", Long.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalVlanUcastOut", Long.class, Short.class, String.class, Long.class, String.class, boolean.class));
+ Whitebox.invokeMethod(of13Provider, "programLocalVlanRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT);
- when(network.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_VLAN);
- when(bridgeConfigurationManager.getAllPhysicalInterfaceNames(node)).thenReturn(Arrays.asList(new String[] { "eth0", "eth1" ,"eth2"}));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalInPortSetVlan", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleDropSrcIface", anyLong(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalVlanUcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyString(), anyBoolean());
+ }
- //Column<GenericTableSchema, String> typeColumn = Mockito.mock(Column.class);
- //when(typeColumn.getData()).thenReturn(NetworkHandler.NETWORK_TYPE_VXLAN);
- //when(intf.getTypeColumn()).thenReturn(typeColumn);
- Map<String, String> options = new HashMap();
- options.put("local_ip", "192.168.0.1");
- options.put("remote_ip", "10.0.12.0");
+ @Test
+ public void testProgramLocalIngressVlanRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleVlanIn", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalVlanBcastOut", Long.class, Short.class, String.class, Long.class, Long.class, boolean.class));
+
+ Whitebox.invokeMethod(of13Provider, "programLocalIngressVlanRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT, LOCAL_PORT);
- //Column<GenericTableSchema, Map<String, String>> optionColumns = Mockito.mock(Column.class);
- //when(intf.getOptionsColumn()).thenReturn(optionColumns);
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleVlanIn", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalVlanBcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyLong(), anyBoolean());
+ }
+
+ @Test
+ public void testProgramRemoteEgressVlanRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleVlanMiss", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
- /* TODO SB_MIGRATION */
- Status status = null;//this.of13Provider.handleInterfaceDelete("tunnel1", network, node, intf, true);
+ Whitebox.invokeMethod(of13Provider, "programRemoteEgressVlanRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT);
- assertEquals("Error, handleInterfaceDelete(String, NeutronNetwor, Node, Interface, boolean) - returned the wrong status.", new Status(StatusCode.SUCCESS), status);
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleVlanMiss", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
}
+ @Test
+ public void testRemoveRemoteEgressVlanRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleLocalVlanBcastOut", Long.class, Short.class, String.class, Long.class, Long.class, boolean.class));
+
+ Whitebox.invokeMethod(of13Provider, "removeRemoteEgressVlanRules", mock(Node.class), Long.valueOf("45"), SEG_ID, MAC_ADDRESS, LOCAL_PORT, LOCAL_PORT);
+
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleLocalVlanBcastOut", anyLong(), anyShort(), anyString(), anyLong(), anyLong(), anyBoolean());
+ }
- /**
- * Test method
- * {@link OF13Provider#createNodeBuilderTest(String)}
- */
@Test
- public void createNodeBuilderTest(){
- final String nodeId="node1";
+ public void testRemovePerVlanRules() throws Exception {
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleVlanIn", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "handleVlanMiss", Long.class, Short.class, Short.class, String.class, Long.class, boolean.class));
- NodeBuilder builder = new NodeBuilder();
- builder.setId(new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId(nodeId));
- builder.setKey(new org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey(builder.getId()));
+ Whitebox.invokeMethod(of13Provider, "removePerVlanRules", mock(Node.class), Long.valueOf("45"), SEG_ID, LOCAL_PORT, LOCAL_PORT);
- NodeBuilder builderStatic = OF13Provider.createNodeBuilder(nodeId);
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleVlanIn", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("handleVlanMiss", anyLong(), anyShort(), anyShort(), anyString(), anyLong(), anyBoolean());
+ }
- assertEquals("Error, createNodeBuilder() returned an invalid Node Builder Id", builderStatic.getId(), builder.getId());
- assertEquals("Error, createNodeBuilder() returned an invalid Node Builder key", builderStatic.getKey(), builder.getKey());
+ @Test
+ public void testHandleInterfaceUpdate() throws Exception{
+ NeutronNetwork neutronNetwork = mock(NeutronNetwork.class);
+ when(neutronNetwork.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_VLAN, NetworkHandler.NETWORK_TYPE_GRE);
+ NodeCacheManager nodeCacheManager = mock(NodeCacheManager.class);
+ Map<NodeId, Node> nodes = new HashMap<NodeId, Node>();
+ nodes.put(mock(NodeId.class), mock(Node.class));
+ when(nodeCacheManager.getOvsdbNodes()).thenReturn(nodes);
+ Southbound southbound = mock(Southbound.class);
+ when(southbound.extractBridgeOvsdbNodeId(any(Node.class))).thenReturn(mock(NodeId.class));
+ when(southbound.getBridgeNode(any(Node.class), anyString())).thenReturn(mock(Node.class));
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ when(configurationService.getIntegrationBridgeName()).thenReturn(BR_INT);
+
+ MemberModifier.field(OF13Provider.class, "nodeCacheManager").set(of13Provider , nodeCacheManager);
+ MemberModifier.field(OF13Provider.class, "southbound").set(of13Provider , southbound);
+ MemberModifier.field(OF13Provider.class, "configurationService").set(of13Provider , configurationService);
+
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "programLocalRules", String.class, String.class, Node.class, OvsdbTerminationPointAugmentation.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "programVlanRules", NeutronNetwork.class, Node.class, OvsdbTerminationPointAugmentation.class));
+
+ assertTrue("Error, did not update the interface correclty", of13Provider.handleInterfaceUpdate(neutronNetwork, mock(Node.class), mock(OvsdbTerminationPointAugmentation.class)));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("programLocalRules", anyString(), anyString(), any(Node.class), any(OvsdbTerminationPointAugmentation.class));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("programVlanRules", any(NeutronNetwork.class), any(Node.class), any(OvsdbTerminationPointAugmentation.class));
+
+ when(configurationService.getTunnelEndPoint(any(Node.class))).thenReturn(mock(InetAddress.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "addTunnelPort", Node.class, String.class, InetAddress.class, InetAddress.class));
+ PowerMockito.when(of13Provider, "addTunnelPort", any(Node.class), anyString(), any(InetAddress.class), any(InetAddress.class)).thenReturn(true);
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "programTunnelRules", String.class, String.class, InetAddress.class, Node.class, OvsdbTerminationPointAugmentation.class, boolean.class));
+
+ assertTrue("Error, did not update the interface correclty", of13Provider.handleInterfaceUpdate(neutronNetwork, mock(Node.class), mock(OvsdbTerminationPointAugmentation.class)));
+ PowerMockito.verifyPrivate(of13Provider, times(2)).invoke("addTunnelPort", any(Node.class), anyString(), any(InetAddress.class), any(InetAddress.class));
+ PowerMockito.verifyPrivate(of13Provider, times(2)).invoke("programTunnelRules", anyString(), anyString(), any(InetAddress.class), any(Node.class), any(OvsdbTerminationPointAugmentation.class), anyBoolean());
}
- /**
- * Seeds mock dependencies into the of13Provider object
- * @throws Exception
- */
- private void SeedMockDependencies() throws Exception{
-
- SeedClassFieldValue(of13Provider, "configurationService", configurationService);
- SeedClassFieldValue(of13Provider, "bridgeConfigurationManager", bridgeConfigurationManager);
- SeedClassFieldValue(of13Provider, "tenantNetworkManager", tenantNetworkManager);
- /* TODO SB_MIGRATION */
- //SeedClassFieldValue(of13Provider, "ovsdbConfigurationService", ovsdbConfigurationService);
- //SeedClassFieldValue(of13Provider, "connectionService", connectionService);
- //SeedClassFieldValue(of13Provider, "mdsalConsumer", mdsalConsumer);
- SeedClassFieldValue(of13Provider, "securityServicesManager", securityServicesManager);
- SeedClassFieldValue(of13Provider, "ingressAclProvider", ingressAclProvider);
- SeedClassFieldValue(of13Provider, "egressAclProvider", egressAclProvider);
- SeedClassFieldValue(of13Provider, "classifierProvider", classifierProvider);
- SeedClassFieldValue(of13Provider, "l2ForwardingProvider", l2ForwardingProvider);
- SeedClassFieldValue(of13Provider, "dataBroker", dataBroker);
+ private static final String INTF = "interface";
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testHandlerInterfaceDelete() throws Exception {
+ NeutronNetwork neutronNetwork = mock(NeutronNetwork.class);
+ NodeCacheManager nodeCacheManager = mock(NodeCacheManager.class);
+ NodeId nodeId = mock(NodeId.class);
+ when(nodeId.getValue()).thenReturn(ID);
+ Node node = mock(Node.class);
+ when(node.getNodeId()).thenReturn(nodeId);
+ Map<NodeId, Node> nodes = new HashMap<NodeId, Node>();
+ nodes.put(mock(NodeId.class), node);
+ when(nodeCacheManager.getOvsdbNodes()).thenReturn(nodes);
+ Southbound southbound = mock(Southbound.class);
+ when(southbound.extractBridgeOvsdbNodeId(any(Node.class))).thenReturn(mock(NodeId.class));
+ when(southbound.isTunnel(any(OvsdbTerminationPointAugmentation.class))).thenReturn(true);
+ when(southbound.getOptionsValue(any(List.class), anyString())).thenReturn(IP);
+ OvsdbTerminationPointAugmentation intf = mock(OvsdbTerminationPointAugmentation.class);
+ when(intf.getName()).thenReturn(INTF);
+ List<String> intfs = new ArrayList<String>();
+ intfs.add(INTF);
+ BridgeConfigurationManager bridgeConfigurationManager = mock(BridgeConfigurationManager.class);
+ when(bridgeConfigurationManager.getAllPhysicalInterfaceNames(any(Node.class))).thenReturn(intfs);
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ when(configurationService.getTunnelEndPoint(any(Node.class))).thenReturn(mock(InetAddress.class));
+
+ PowerMockito.mockStatic(InetAddress.class);
+ PowerMockito.when(InetAddress.getByName(anyString())).thenReturn(mock(InetAddress.class));
+
+ PowerMockito.mockStatic(MdsalHelper.class);
+ PowerMockito.when(MdsalHelper.createOvsdbInterfaceType(any(Class.class))).thenReturn(INTF);
+
+ MemberModifier.field(OF13Provider.class, "nodeCacheManager").set(of13Provider , nodeCacheManager);
+ MemberModifier.field(OF13Provider.class, "southbound").set(of13Provider , southbound);
+ MemberModifier.field(OF13Provider.class, "bridgeConfigurationManager").set(of13Provider , bridgeConfigurationManager);
+ MemberModifier.field(OF13Provider.class, "configurationService").set(of13Provider , configurationService);
+
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "deleteTunnelPort", Node.class, String.class, InetAddress.class, InetAddress.class));
+
+ assertTrue("Error, did not delete the interface correclty", of13Provider.handleInterfaceDelete(TYPE, neutronNetwork, mock(Node.class), intf, false));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("deleteTunnelPort", any(Node.class), anyString(), any(InetAddress.class), any(InetAddress.class));
+
+ when(southbound.isTunnel(any(OvsdbTerminationPointAugmentation.class))).thenReturn(false);
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "deletePhysicalPort", Node.class, String.class));
+
+ assertTrue("Error, did not delete the interface correclty", of13Provider.handleInterfaceDelete(TYPE, neutronNetwork, mock(Node.class), intf, false));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("deletePhysicalPort", any(Node.class), anyString());
+
+ intfs.clear();
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "removeLocalRules", String.class, String.class, Node.class, OvsdbTerminationPointAugmentation.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "removeVlanRules", NeutronNetwork.class, Node.class, OvsdbTerminationPointAugmentation.class, boolean.class));
+ when(neutronNetwork.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_VLAN);
+
+ assertTrue("Error, did not delete the interface correclty", of13Provider.handleInterfaceDelete(TYPE, neutronNetwork, mock(Node.class), intf, false));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("removeLocalRules", anyString(), anyString(), any(Node.class), any(OvsdbTerminationPointAugmentation.class));
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("removeVlanRules", any(NeutronNetwork.class), any(Node.class), any(OvsdbTerminationPointAugmentation.class), anyBoolean());
+
+ when(neutronNetwork.getProviderNetworkType()).thenReturn(NetworkHandler.NETWORK_TYPE_GRE);
+ when(southbound.getBridgeNode(any(Node.class), anyString())).thenReturn(node);
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "removeTunnelRules", String.class, String.class, InetAddress.class, Node.class, OvsdbTerminationPointAugmentation.class, boolean.class, boolean.class));
+
+ assertTrue("Error, did not delete the interface correclty", of13Provider.handleInterfaceDelete(TYPE, neutronNetwork, node, intf, false));
+ PowerMockito.verifyPrivate(of13Provider, times(2)).invoke("removeTunnelRules", anyString(), anyString(), any(InetAddress.class), any(Node.class), any(OvsdbTerminationPointAugmentation.class), any(boolean.class), any(boolean.class));
}
- /**
- * Get the specified field from OF13Provider using reflection
- * @param instance - the class instance
- * @param fieldName - the field to retrieve
- *
- * @return the desired field
- */
- private Object getClassField(OF13Provider instance, String fieldName) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
- Field field = OF13Provider.class.getDeclaredField(fieldName);
- field.setAccessible(true);
- return field.get(instance);
+ // Problem with methods signatures: initializeFlowRules(Node) has the same signature than initializeFlowRules(Node, String)
+// @Test
+// public void testInitializeFlowRules() throws Exception {
+// MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "initializeFlowRules", Node.class, String.class));
+// MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "triggerInterfaceUpdates", Node.class));
+//
+// of13Provider.initializeFlowRules(mock(Node.class));
+//
+// PowerMockito.verifyPrivate(of13Provider, times(2)).invoke("initializeFlowRules", any(Node.class), anyString());
+// PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("triggerInterfaceUpdates", any(Node.class));
+// }
+
+ @Test
+ public void testInitializeOFFlowRule() throws Exception{
+ Southbound southbound = mock(Southbound.class);
+ when(southbound.getBridgeName(any(Node.class))).thenReturn(BR_INT);
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ when(configurationService.getIntegrationBridgeName()).thenReturn(BR_INT);
+
+ MemberModifier.field(OF13Provider.class, "southbound").set(of13Provider , southbound);
+ MemberModifier.field(OF13Provider.class, "configurationService").set(of13Provider , configurationService);
+
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "initializeFlowRules", Node.class, String.class));
+ MemberModifier.suppress(MemberMatcher.method(OF13Provider.class, "triggerInterfaceUpdates", Node.class));
+
+ of13Provider.initializeOFFlowRules(mock(Node.class));
+
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("initializeFlowRules", any(Node.class), anyString());
+ PowerMockito.verifyPrivate(of13Provider, times(1)).invoke("triggerInterfaceUpdates", any(Node.class));
+ }
+
+ @Test
+ public void testSetDependencies() throws Exception {
+ ConfigurationService configurationService = mock(ConfigurationService.class);
+ TenantNetworkManager tenantNetworkManager = mock(TenantNetworkManager.class);
+ BridgeConfigurationManager bridgeConfigurationManager = mock(BridgeConfigurationManager.class);
+ NodeCacheManager nodeCacheManager = mock(NodeCacheManager.class);
+ ClassifierProvider classifierProvider = mock(ClassifierProvider.class);
+ IngressAclProvider ingressAclProvider = mock(IngressAclProvider.class);
+ EgressAclProvider egressAclProvider = mock(EgressAclProvider.class);
+ L2ForwardingProvider l2ForwardingProvider = mock(L2ForwardingProvider.class);
+ SecurityServicesManager securityServicesManager = mock(SecurityServicesManager.class);
+ Southbound southbound = mock(Southbound.class);
+
+ PowerMockito.mockStatic(ServiceHelper.class);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(ConfigurationService.class, of13Provider)).thenReturn(configurationService);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(TenantNetworkManager.class, of13Provider)).thenReturn(tenantNetworkManager);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(BridgeConfigurationManager.class, of13Provider)).thenReturn(bridgeConfigurationManager);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(NodeCacheManager.class, of13Provider)).thenReturn(nodeCacheManager);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(ClassifierProvider.class, of13Provider)).thenReturn(classifierProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(IngressAclProvider.class, of13Provider)).thenReturn(ingressAclProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(EgressAclProvider.class, of13Provider)).thenReturn(egressAclProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(L2ForwardingProvider.class, of13Provider)).thenReturn(l2ForwardingProvider);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(SecurityServicesManager.class, of13Provider)).thenReturn(securityServicesManager);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(Southbound.class, of13Provider)).thenReturn(southbound);
+
+ of13Provider.setDependencies(mock(BundleContext.class), mock(ServiceReference.class));
+
+ assertEquals("Error, did not return the correct object", getField("configurationService"), configurationService);
+ assertEquals("Error, did not return the correct object", getField("tenantNetworkManager"), tenantNetworkManager);
+ assertEquals("Error, did not return the correct object", getField("bridgeConfigurationManager"), bridgeConfigurationManager);
+ assertEquals("Error, did not return the correct object", getField("nodeCacheManager"), nodeCacheManager);
+ assertEquals("Error, did not return the correct object", getField("classifierProvider"), classifierProvider);
+ assertEquals("Error, did not return the correct object", getField("ingressAclProvider"), ingressAclProvider);
+ assertEquals("Error, did not return the correct object", getField("egressAclProvider"), egressAclProvider);
+ assertEquals("Error, did not return the correct object", getField("l2ForwardingProvider"), l2ForwardingProvider);
+ assertEquals("Error, did not return the correct object", getField("securityServicesManager"), securityServicesManager);
+ assertEquals("Error, did not return the correct object", getField("southbound"), southbound);
}
- /**
- * Sets the internal value of a field from OF13Provider using reflection
- * @param instance
- * @param fieldName
- * @param value
- * @throws NoSuchFieldException
- * @throws SecurityException
- * @throws IllegalArgumentException
- * @throws IllegalAccessException
- */
- private void SeedClassFieldValue(OF13Provider instance, String fieldName, Object value)throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testSetDependenciesObject() throws Exception{
+ NetworkingProviderManager networkingProviderManager = mock(NetworkingProviderManager.class);
+ BundleContext bundleContext = mock(BundleContext.class);
+ when(bundleContext.getServiceReference(NetworkingProvider.class.getName())).thenReturn(mock(ServiceReference.class));
+
+ MemberModifier.field(OF13Provider.class, "bundleContext").set(of13Provider , bundleContext);
+ of13Provider.setDependencies(networkingProviderManager);
+ assertEquals("Error, did not return the correct object", getField("networkingProviderManager"), networkingProviderManager);
+}
+
+ private Object getField(String fieldName) throws Exception {
Field field = OF13Provider.class.getDeclaredField(fieldName);
field.setAccessible(true);
- field.set(instance, value);
+ return field.get(of13Provider);
}
-}
+}
\ No newline at end of file