import java.util.concurrent.ExecutorService;
import org.opendaylight.sfc.sfc_ovs.provider.SfcOvsUtil;
-import org.opendaylight.sfc.sfc_ovs.provider.util.HopOvsdbBridgePair;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffDataPlaneLocatorName;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsBridgeAugmentation;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsLocatorOptionsAugmentation;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsLocatorOptionsAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsNodeAugmentation;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.bridge.OvsBridge;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.node.OvsNode;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.options.OvsOptions;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.options.OvsOptionsBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.SffDataPlaneLocator;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.SffDataPlaneLocatorBuilder;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.sff.data.plane.locator.DataPlaneLocatorBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.DataPlaneLocator;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.Mac;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.Other;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.VxlanGpe;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.data.plane.locator.locator.type.Ip;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.data.plane.locator.locator.type.IpBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeBase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeDpdk;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsBuilder;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger LOG = LoggerFactory.getLogger(SfcSffToOvsMappingAPI.class);
- private static final String VXLAN = "-vxlan-";
- private static final String TO = "to";
private static final String OF_PORT = "6653";
/**
private static List<ControllerEntry> getControllerEntries(OvsdbNodeAugmentation connection) {
ControllerEntryBuilder controllerBuilder = new ControllerEntryBuilder();
- List<ControllerEntry> result = new ArrayList<ControllerEntry>();
+ List<ControllerEntry> result = new ArrayList<>();
if (connection.getConnectionInfo().getLocalIp() != null) {
String localIp = String.valueOf(connection.getConnectionInfo().getLocalIp().getValue());
String targetString = "tcp:" + localIp + ":" + OF_PORT;
return ovsdbTerminationPointList;
}
- private static List<Options> getDataPlaneLocatorOptions(DataPlaneLocator dataPlaneLocator) {
- Preconditions.checkNotNull(dataPlaneLocator,
- "Cannot determine DataPlaneLocator locator type, dataPlaneLocator is null.");
- List<Options> options = new ArrayList<>();
-
- if (dataPlaneLocator.getLocatorType() != null) {
- Class<? extends DataContainer> locatorType = dataPlaneLocator.getLocatorType().getImplementedInterface();
- if (locatorType.isAssignableFrom(Ip.class)) {
- Ip ipPortLocator = (Ip) dataPlaneLocator.getLocatorType();
-
- OptionsBuilder optionsIpBuilder = new OptionsBuilder();
- optionsIpBuilder.setOption(SfcOvsUtil.OVSDB_OPTION_LOCAL_IP);
- optionsIpBuilder.setValue(ipPortLocator.getIp().getIpv4Address().getValue());
-
- options.add(optionsIpBuilder.build());
- }
- } else {
- LOG.warn("Cannot determine DataPlaneLocator locator type, dataPlaneLocator.getLocatorType() is null.");
- }
-
- return options;
- }
-
/**
* Get SFF dataplane Locator options such as remote_ip and local_ip.
* <p>
Preconditions.checkNotNull(sffDataPlaneLocator,
"Cannot gather SffDataPlaneLocator Options, sffDataPlaneLocator is null.");
List<Options> options = new ArrayList<>();
- OvsOptions ovsOptions = null;
SffOvsLocatorOptionsAugmentation sffDataPlaneLocatorOvsOptions =
sffDataPlaneLocator.getAugmentation(SffOvsLocatorOptionsAugmentation.class);
if (sffDataPlaneLocatorOvsOptions != null) {
- ovsOptions = sffDataPlaneLocatorOvsOptions.getOvsOptions();
+ OvsOptions ovsOptions = sffDataPlaneLocatorOvsOptions.getOvsOptions();
if (ovsOptions.getLocalIp() != null) {
OptionsBuilder optionsLocalIpBuilder = new OptionsBuilder();
return InterfaceTypeInternal.class;
}
}
-
- public static SffDataPlaneLocator buildVxlanTunnelDataPlaneLocator(RenderedServicePath renderedServicePath,
- HopOvsdbBridgePair hopOvsdbBridgePairFrom, HopOvsdbBridgePair hopOvsdbBridgePairTo) {
- Preconditions.checkNotNull(renderedServicePath,
- "Cannot build VxlanTunnel DataPlane locator, renderedServicePath is null");
- Preconditions.checkNotNull(hopOvsdbBridgePairFrom,
- "Cannot build VxlanTunnel DataPlane locator, source Hop is null");
- Preconditions.checkNotNull(hopOvsdbBridgePairTo,
- "Cannot build VxlanTunnel DataPlane locator, destination Hop is null");
-
- SffDataPlaneLocatorBuilder sffDataPlaneLocatorBuilder = new SffDataPlaneLocatorBuilder();
- // the name will be e.g. RSP1-vxlan-0to1
- String stringDpl =
- buildVxlanTunnelDataPlaneLocatorName(renderedServicePath, hopOvsdbBridgePairFrom, hopOvsdbBridgePairTo);
- SffDataPlaneLocatorName sffDplName = new SffDataPlaneLocatorName(stringDpl);
- sffDataPlaneLocatorBuilder.setName(sffDplName);
-
- // build IP:Port locator
- IpAddress ipAddress = SfcOvsToSffMappingAPI.getOvsBridgeLocalIp(hopOvsdbBridgePairFrom.ovsdbBridgeAugmentation);
- IpBuilder ipBuilder = new IpBuilder();
- ipBuilder.setIp(ipAddress);
- ipBuilder.setPort(SfcOvsUtil.NSH_VXLAN_TUNNEL_PORT);
-
- // build Vxlan DataPlane locator
- DataPlaneLocatorBuilder dataPlaneLocatorBuilder = new DataPlaneLocatorBuilder();
- dataPlaneLocatorBuilder.setTransport(VxlanGpe.class);
- dataPlaneLocatorBuilder.setLocatorType(ipBuilder.build());
- sffDataPlaneLocatorBuilder.setDataPlaneLocator(dataPlaneLocatorBuilder.build());
-
- // build OVS Options for Vxlan tunnel
- OvsOptionsBuilder ovsOptionsBuilder = new OvsOptionsBuilder();
- String ipAddressString = null;
- if (ipAddress.getIpv4Address() != null) {
- ipAddressString = ipAddress.getIpv4Address().getValue();
- } else if (ipAddress.getIpv6Address() != null) {
- ipAddressString = ipAddress.getIpv6Address().getValue();
- }
- ovsOptionsBuilder.setLocalIp(ipAddressString);
- ovsOptionsBuilder.setRemoteIp(SfcOvsToSffMappingAPI
- .getOvsBridgeLocalIp(hopOvsdbBridgePairTo.ovsdbBridgeAugmentation).getValue().toString());
- ovsOptionsBuilder.setDstPort(String.valueOf(SfcOvsUtil.NSH_VXLAN_TUNNEL_PORT));
- ovsOptionsBuilder.setNsp(renderedServicePath.getPathId().toString());
- ovsOptionsBuilder.setNsi(hopOvsdbBridgePairFrom.renderedServicePathHop.getServiceIndex().toString());
- ovsOptionsBuilder.setKey(renderedServicePath.getPathId().toString());
-
- // add OVS Options augmentation to SffDataPlaneLocator
- SffOvsLocatorOptionsAugmentationBuilder sffDataPlaneLocator2Builder =
- new SffOvsLocatorOptionsAugmentationBuilder();
- sffDataPlaneLocator2Builder.setOvsOptions(ovsOptionsBuilder.build());
- sffDataPlaneLocatorBuilder.addAugmentation(SffOvsLocatorOptionsAugmentation.class,
- sffDataPlaneLocator2Builder.build());
-
- return sffDataPlaneLocatorBuilder.build();
- }
-
- public static String buildVxlanTunnelDataPlaneLocatorName(RenderedServicePath renderedServicePath,
- HopOvsdbBridgePair hopOvsdbBridgePairFrom, HopOvsdbBridgePair hopOvsdbBridgePairTo) {
- Preconditions.checkNotNull(renderedServicePath,
- "Cannot build VxlanTunnel DataPlane locator Name, renderedServicePath is null");
- Preconditions.checkNotNull(hopOvsdbBridgePairFrom,
- "Cannot build VxlanTunnel DataPlane locator Name, source Hop is null");
- Preconditions.checkNotNull(hopOvsdbBridgePairTo,
- "Cannot build VxlanTunnel DataPlane locator Name, destination Hop is null");
-
- // the name will be e.g. RSP1-vxlan-0to1
- return (renderedServicePath.getName().getValue() + VXLAN
- + hopOvsdbBridgePairFrom.renderedServicePathHop.getHopNumber() + TO
- + hopOvsdbBridgePairTo.renderedServicePathHop.getHopNumber());
- }
}
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-/**
- * Rendered Service Path Hop - OvsdbBridgeAugmentation pair
- *
- * @version 0.1
- * @since 2015-04-14
- */
-
-package org.opendaylight.sfc.sfc_ovs.provider.util;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-
-import org.opendaylight.sfc.sfc_ovs.provider.SfcOvsUtil;
-import org.opendaylight.sfc.sfc_ovs.provider.api.SfcOvsDataStoreAPI;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePath;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.rendered.service.path.RenderedServicePathHop;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Preconditions;
-
-public class HopOvsdbBridgePair {
-
- private static final Logger LOG = LoggerFactory.getLogger(HopOvsdbBridgePair.class);
-
- public final RenderedServicePathHop renderedServicePathHop;
- public final OvsdbBridgeAugmentation ovsdbBridgeAugmentation;
-
- public HopOvsdbBridgePair(RenderedServicePathHop renderedServicePathHop,
- OvsdbBridgeAugmentation ovsdbBridgeAugmentation) {
- Preconditions.checkNotNull(renderedServicePathHop, "Passed argument renderedServicePathHop cannot be null");
- Preconditions.checkNotNull(ovsdbBridgeAugmentation, "Passed argument ovsdbBridgeAugmentation cannot be null");
-
- this.renderedServicePathHop = renderedServicePathHop;
- this.ovsdbBridgeAugmentation = ovsdbBridgeAugmentation;
- }
-
- public static List<HopOvsdbBridgePair> buildHopOvsdbBridgePairList(RenderedServicePath renderedServicePath,
- ExecutorService executor) {
- Preconditions.checkNotNull(renderedServicePath);
- Preconditions.checkNotNull(renderedServicePath.getRenderedServicePathHop(),
- "Cannot build HopOvsdbBridgePairList for RSP '" + renderedServicePath.getName()
- + "', the RSP does not contain any HOPS!");
- Preconditions.checkNotNull(executor);
-
- List<HopOvsdbBridgePair> hopOvsdbBridgePairList = new ArrayList<>();
-
- for (RenderedServicePathHop hop : renderedServicePath.getRenderedServicePathHop()) {
- Object[] methodParams = {SfcOvsUtil.buildOvsdbBridgeIID(hop.getServiceFunctionForwarder().getValue())};
- SfcOvsDataStoreAPI readOvsdbBridge =
- new SfcOvsDataStoreAPI(SfcOvsDataStoreAPI.Method.READ_OVSDB_BRIDGE, methodParams);
-
- OvsdbBridgeAugmentation ovsdbBridge =
- (OvsdbBridgeAugmentation) SfcOvsUtil.submitCallable(readOvsdbBridge, executor);
-
- if (ovsdbBridge != null) {
- if (hop.getHopNumber() >= 0 && hop.getHopNumber() <= hopOvsdbBridgePairList.size()) {
- hopOvsdbBridgePairList.add(hop.getHopNumber(), new HopOvsdbBridgePair(hop, ovsdbBridge));
- } else {
- LOG.warn("Some of the hops in RSP: '{}' are not using OVS SFF. Hybrid chains are not supported yet",
- renderedServicePath.getName());
- return Collections.emptyList();
- }
- }
- }
-
- if (hopOvsdbBridgePairList.size() != renderedServicePath.getRenderedServicePathHop().size()) {
- LOG.warn("Some of the hops in RSP: '{}' are not using OVS SFF. Hybrid chains are not supported yet",
- renderedServicePath.getName());
- return Collections.emptyList();
- }
-
- return hopOvsdbBridgePairList;
- }
-
-}
ovsdbBridgeAugmentationBuilder.setBridgeName(OvsdbBridgeName.getDefaultInstance(testBridgeName))
.setManagedBy(new OvsdbNodeRef(nodeIID));
+ // TODO remove reflection for "getManagedByNodeId"
NodeId nodeId =
Whitebox.invokeMethod(SfcOvsUtil.class, "getManagedByNodeId", ovsdbBridgeAugmentationBuilder.build());
public void testGetOvsDataPathId() throws Exception {
// id does not exist, should return null
+ // TODO remove reflection for "getOvsDataPathId"
DatapathId datapathId = Whitebox.invokeMethod(SfcOvsUtil.class, "getOvsDataPathId", new NodeId("fake id"));
assertNull("Must be null", datapathId);
+ // TODO remove reflection for "getOvsDataPathId"
datapathId = Whitebox.invokeMethod(SfcOvsUtil.class, "getOvsDataPathId",
InstanceIdentifier.keyOf(nodeIID).getNodeId());
// this test will not pass!
Long expectedResult = 95075992133360L;
+ // TODO remove reflection for "getLongFromDpid"
result = Whitebox.invokeMethod(SfcOvsUtil.class, "getLongFromDpid", testDataPath);
assertNotNull("Must not be null", result);
ovsdbTerminationPointAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder();
// empty list
+ //TODO remove reflection for "buildSffDataPlaneLocatorList"
sffDataPlaneLocatorList = Whitebox.invokeMethod(SfcOvsToSffMappingAPI.class, "buildSffDataPlaneLocatorList",
ovsdbBridgeAugmentationBuilder.build(), null);
ovsdbTerminationPointAugmentationBuilder.build());
terminationPointList.add(terminationPointBuilder.build());
+ //TODO remove reflection for "buildSffDataPlaneLocatorList"
sffDataPlaneLocatorList = Whitebox.invokeMethod(SfcOvsToSffMappingAPI.class, "buildSffDataPlaneLocatorList",
ovsdbBridgeAugmentationBuilder.build(), terminationPointList);
optionsBuilder.setOption(SfcOvsUtil.OVSDB_OPTION_REMOTE_IP).setValue(OVSDB_OPTION_REMOTE_IP);
options.add(optionsBuilder.build());
ovsdbTerminationPointAugmentationBuilder.setInterfaceType(InterfaceTypeVxlan.class).setOptions(options);
+
+ //TODO remove reflection for "buildDataPlaneLocatorFromTerminationPoint"
dataPlaneLocator = Whitebox.invokeMethod(SfcOvsToSffMappingAPI.class,
"buildDataPlaneLocatorFromTerminationPoint", ovsdbTerminationPointAugmentationBuilder.build());
ovsdbTerminationPointAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder()
.setInterfaceType(InterfaceTypePatch.class).setOptions(options);
+
+ //TODO remove reflection for "buildDataPlaneLocatorFromTerminationPoint"
dataPlaneLocator = Whitebox.invokeMethod(SfcOvsToSffMappingAPI.class,
"buildDataPlaneLocatorFromTerminationPoint", ovsdbTerminationPointAugmentationBuilder.build());
ovsdbTerminationPointAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder();
ovsdbTerminationPointAugmentationBuilder.setOptions(options);
+ //TODO remove reflection for "buildOvsOptionsFromTerminationPoint"
ovsOptions = Whitebox.invokeMethod(SfcOvsToSffMappingAPI.class, "buildOvsOptionsFromTerminationPoint",
ovsdbTerminationPointAugmentationBuilder.build());
ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
ovsdbBridgeAugmentationBuilder.setBridgeOtherConfigs(bridgeOtherConfigsList);
+ //TODO remove reflection for "getOvsBridgeLocalIp"
ipAddress = Whitebox.invokeMethod(SfcOvsToSffMappingAPI.class, "getOvsBridgeLocalIp",
ovsdbBridgeAugmentationBuilder.build());
import org.junit.Test;
import org.junit.runner.RunWith;
import org.opendaylight.sfc.sfc_ovs.provider.SfcOvsUtil;
-import org.opendaylight.sfc.sfc_ovs.provider.util.HopOvsdbBridgePair;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.RspName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffDataPlaneLocatorName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffName;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePathBuilder;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.rendered.service.path.RenderedServicePathHopBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsBridgeAugmentation;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsBridgeAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.ovs.rev140701.SffOvsLocatorOptionsAugmentation;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.sff.data.plane.locator.DataPlaneLocatorBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.Other;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.VxlanGpe;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.data.plane.locator.locator.type.IpBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeInternal;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeVxlan;
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.OvsdbBridgeAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeRef;
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.BridgeOtherConfigs;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.BridgeOtherConfigsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder;
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.network.topology.topology.NodeBuilder;
private static final String OVSDB_OPTION_NSHC2 = "Nshc2";
private static final String OVSDB_OPTION_NSHC3 = "Nshc3";
private static final String OVSDB_OPTION_NSHC4 = "Nshc4";
- private static final Long pathId = 25L;
- private static final Short hopNumberFrom = 10, hopNumberTo = 5, serviceIndex = 15;
- private static final String renderedServicePathName = "Test name";
- private static final String ipAddress = "170.0.0.1";
- private static final String ip6Address = "00:00:00:00:00:00:00:00";
private static final String testString = "testString";
private static final String bridgeName = "bridge name";
private static final String uuid = "00000000-0000-0000-0000-000000000000";
private Class<? extends InterfaceTypeBase> interfaceTypeClass;
private DataPlaneLocatorBuilder dataPlaneLocatorBuilder;
- private HopOvsdbBridgePair hopOvsdbBridgePairFrom, hopOvsdbBridgePairTo;
private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options> optionsList;
private List<OvsdbTerminationPointAugmentation> ovsdbTerminationPointAugmentationList;
private OvsBridgeBuilder ovsBridgeBuilder;
private OvsdbBridgeAugmentation ovsdbBridgeAugmentation;
- private OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder;
private OvsOptionsBuilder ovsOptionsBuilder;
- private RenderedServicePathBuilder renderedServicePathBuilder;
- private RenderedServicePathHopBuilder renderedServicePathHopBuilderFrom, renderedServicePathHopBuilderTo;
private ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder;
private SffOvsNodeAugmentationBuilder sffOvsNodeAugmentationBuilder;
private SffOvsBridgeAugmentationBuilder sffOvsBridgeAugmentationBuilder;
assertEquals("Must be equal", ovsdbTerminationPointAugmentationList.get(0).getName(), testString);
}
- @Test
- public void testGetDataPlaneLocatorOptions_nullDpl() throws Exception {
- dataPlaneLocatorBuilder = new DataPlaneLocatorBuilder();
-
- optionsList = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getDataPlaneLocatorOptions",
- dataPlaneLocatorBuilder.build());
-
- assertEquals("Must be equal", optionsList, Collections.emptyList());
- }
-
- @Test
- public void testGetDataPlaneLocatorOptions() throws Exception {
- IpBuilder ipBuilder = new IpBuilder();
- dataPlaneLocatorBuilder = new DataPlaneLocatorBuilder();
- optionsList = new ArrayList<>();
-
- ipBuilder.setIp(SfcOvsUtil.convertStringToIpAddress(OVSDB_OPTION_LOCAL_IP_VALUE));
- dataPlaneLocatorBuilder.setLocatorType(ipBuilder.build());
- optionsList = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getDataPlaneLocatorOptions",
- dataPlaneLocatorBuilder.build());
-
- assertEquals("Must be equal", optionsList.get(0).getValue(), OVSDB_OPTION_LOCAL_IP_VALUE);
- }
-
@Test
public void testGetSffDataPlaneLocatorOptions_nullSffDplOvsOptions() throws Exception {
sffDataPlaneLocatorBuilder = new SffDataPlaneLocatorBuilder();
+ //TODO remove reflection for "getSffDataPlaneLocatorOptions"
optionsList = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getSffDataPlaneLocatorOptions",
sffDataPlaneLocatorBuilder.build());
sffDataPlaneLocatorBuilder.addAugmentation(SffOvsLocatorOptionsAugmentation.class,
sffOvsLocatorOptionsAugmentationBuilder.build());
+ //TODO remove reflection for "getSffDataPlaneLocatorOptions"
optionsList = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getSffDataPlaneLocatorOptions",
sffDataPlaneLocatorBuilder.build());
sffOvsLocatorOptionsAugmentationBuilder.setOvsOptions(ovsOptionsBuilder.build());
sffDataPlaneLocatorBuilder.addAugmentation(SffOvsLocatorOptionsAugmentation.class,
sffOvsLocatorOptionsAugmentationBuilder.build());
+
+ //TODO remove reflection for "getSffDataPlaneLocatorOptions"
optionsList = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getSffDataPlaneLocatorOptions",
sffDataPlaneLocatorBuilder.build());
public void testGetDataPlaneLocatorInterfaceType_NoTransport() throws Exception {
dataPlaneLocatorBuilder = new DataPlaneLocatorBuilder();
+ //TODO remove reflection for "getDataPlaneLocatorInterfaceType"
interfaceTypeClass = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getDataPlaneLocatorInterfaceType",
dataPlaneLocatorBuilder.build());
dataPlaneLocatorBuilder = new DataPlaneLocatorBuilder();
dataPlaneLocatorBuilder.setTransport(Other.class);
+
+ //TODO remove reflection for "getDataPlaneLocatorInterfaceType"
interfaceTypeClass = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getDataPlaneLocatorInterfaceType",
dataPlaneLocatorBuilder.build());
dataPlaneLocatorBuilder = new DataPlaneLocatorBuilder();
dataPlaneLocatorBuilder.setTransport(VxlanGpe.class);
+
+ //TODO remove reflection for "getDataPlaneLocatorInterfaceType"
interfaceTypeClass = Whitebox.invokeMethod(SfcSffToOvsMappingAPI.class, "getDataPlaneLocatorInterfaceType",
dataPlaneLocatorBuilder.build());
assertEquals("Must be Equal", interfaceTypeClass, InterfaceTypeVxlan.class);
}
-
- @Test
- public void testBuildVxlanTunnelDataPlaneLocator() throws Exception {
- List<BridgeOtherConfigs> bridgeOtherConfigsList = new ArrayList<>();
- BridgeOtherConfigsBuilder bridgeOtherConfigsBuilder = new BridgeOtherConfigsBuilder();
- ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
- renderedServicePathBuilder = new RenderedServicePathBuilder();
- renderedServicePathHopBuilderFrom = new RenderedServicePathHopBuilder();
- renderedServicePathHopBuilderTo = new RenderedServicePathHopBuilder();
- SffDataPlaneLocator sffDataPlaneLocator;
-
- renderedServicePathBuilder.setName(new RspName(renderedServicePathName)).setPathId(pathId);
-
- renderedServicePathHopBuilderFrom.setHopNumber(hopNumberFrom).setServiceIndex(serviceIndex);
-
- renderedServicePathHopBuilderTo.setHopNumber(hopNumberTo);
-
- bridgeOtherConfigsBuilder.setBridgeOtherConfigKey(SfcOvsUtil.OVSDB_OPTION_LOCAL_IP)
- .setBridgeOtherConfigValue(ip6Address);
- bridgeOtherConfigsList.add(bridgeOtherConfigsBuilder.build());
-
- ovsdbBridgeAugmentationBuilder.setBridgeOtherConfigs(bridgeOtherConfigsList);
-
- hopOvsdbBridgePairFrom = new HopOvsdbBridgePair(renderedServicePathHopBuilderFrom.build(),
- ovsdbBridgeAugmentationBuilder.build());
- hopOvsdbBridgePairTo =
- new HopOvsdbBridgePair(renderedServicePathHopBuilderTo.build(), ovsdbBridgeAugmentationBuilder.build());
-
- sffDataPlaneLocator = SfcSffToOvsMappingAPI.buildVxlanTunnelDataPlaneLocator(renderedServicePathBuilder.build(),
- hopOvsdbBridgePairFrom, hopOvsdbBridgePairTo);
-
- Assert.assertEquals("Must be Equal", sffDataPlaneLocator.getName().getValue(),
- renderedServicePathName + "-vxlan-" + hopNumberFrom + "to" + hopNumberTo);
- Assert.assertEquals("Must be Equal",
- sffDataPlaneLocator.getAugmentation(SffOvsLocatorOptionsAugmentation.class).getOvsOptions().getNsi(),
- serviceIndex.toString());
- Assert.assertEquals("Must be Equal",
- sffDataPlaneLocator.getAugmentation(SffOvsLocatorOptionsAugmentation.class).getOvsOptions().getNsp(),
- pathId.toString());
- Assert.assertEquals("Must be Equal", sffDataPlaneLocator.getAugmentation(SffOvsLocatorOptionsAugmentation.class)
- .getOvsOptions()
- .getLocalIp(), ip6Address);
-
- bridgeOtherConfigsBuilder.setBridgeOtherConfigKey(SfcOvsUtil.OVSDB_OPTION_LOCAL_IP)
- .setBridgeOtherConfigValue(ipAddress);
- bridgeOtherConfigsList.clear();
- bridgeOtherConfigsList.add(bridgeOtherConfigsBuilder.build());
-
- ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
- ovsdbBridgeAugmentationBuilder.setBridgeOtherConfigs(bridgeOtherConfigsList);
-
- sffDataPlaneLocator = SfcSffToOvsMappingAPI.buildVxlanTunnelDataPlaneLocator(renderedServicePathBuilder.build(),
- hopOvsdbBridgePairFrom, hopOvsdbBridgePairTo);
-
- Assert.assertEquals("Must be Equal", sffDataPlaneLocator.getAugmentation(SffOvsLocatorOptionsAugmentation.class)
- .getOvsOptions()
- .getLocalIp(), ipAddress);
- }
-
- @Test
- public void testBuildVxlanTunnelDataPlaneLocatorName() throws Exception {
- ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
- renderedServicePathBuilder = new RenderedServicePathBuilder();
- renderedServicePathHopBuilderFrom = new RenderedServicePathHopBuilder();
- renderedServicePathHopBuilderTo = new RenderedServicePathHopBuilder();
- String result;
-
- renderedServicePathBuilder.setName(new RspName(renderedServicePathName));
- renderedServicePathHopBuilderFrom.setHopNumber(hopNumberFrom);
- renderedServicePathHopBuilderTo.setHopNumber(hopNumberTo);
- hopOvsdbBridgePairFrom = new HopOvsdbBridgePair(renderedServicePathHopBuilderFrom.build(),
- ovsdbBridgeAugmentationBuilder.build());
- hopOvsdbBridgePairTo =
- new HopOvsdbBridgePair(renderedServicePathHopBuilderTo.build(), ovsdbBridgeAugmentationBuilder.build());
-
- result = SfcSffToOvsMappingAPI.buildVxlanTunnelDataPlaneLocatorName(renderedServicePathBuilder.build(),
- hopOvsdbBridgePairFrom, hopOvsdbBridgePairTo);
-
- assertEquals("Must be Equal", result, renderedServicePathName + "-vxlan-" + hopNumberFrom + "to" + hopNumberTo);
- }
}
+++ /dev/null
-/*
- * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.sfc.sfc_ovs.provider.util;
-
-import static junit.framework.Assert.assertNotNull;
-import static junit.framework.TestCase.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opendaylight.sfc.sfc_ovs.provider.SfcOvsUtil;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffName;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.RenderedServicePathBuilder;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.rendered.service.path.RenderedServicePathHop;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.rsp.rev140701.rendered.service.paths.rendered.service.path.RenderedServicePathHopBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentationBuilder;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-/**
- * @author Vladimir Lavor
- * @version 0.1
- * @see HopOvsdbBridgePair
- * @since 2015-04-30
- */
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(SfcOvsUtil.class)
-public class HopOvsdbBridgePairTest {
-
- private static final SffName sff = new SffName("sff");
- private RenderedServicePathHopBuilder renderedServicePathHopBuilder;
- private OvsdbBridgeAugmentationBuilder ovsdbBridgeAugmentationBuilder;
-
- @Test
- public void constructorTest() throws Exception {
- renderedServicePathHopBuilder = new RenderedServicePathHopBuilder();
- ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
- HopOvsdbBridgePair hopOvsdbBridgePair =
- new HopOvsdbBridgePair(renderedServicePathHopBuilder.build(), ovsdbBridgeAugmentationBuilder.build());
-
- assertNotNull("Must be not null", hopOvsdbBridgePair.ovsdbBridgeAugmentation);
- assertNotNull("Must be not null", hopOvsdbBridgePair.renderedServicePathHop);
- }
-
- @Test
- public void buildHopOvsdbBridgePair_EmptyList0() throws Exception {
- ExecutorService executorService = Executors.newFixedThreadPool(10);
- RenderedServicePathBuilder renderedServicePathBuilder = new RenderedServicePathBuilder();
- renderedServicePathHopBuilder = new RenderedServicePathHopBuilder();
- List<RenderedServicePathHop> renderedServicePathHopList = new ArrayList<>();
-
- renderedServicePathHopBuilder.setHopNumber(Short.valueOf("5")).setServiceFunctionForwarder(sff);
- renderedServicePathHopList.add(renderedServicePathHopBuilder.build());
- renderedServicePathBuilder.setRenderedServicePathHop(renderedServicePathHopList);
- ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
-
- PowerMockito.stub(PowerMockito.method(SfcOvsUtil.class, "submitCallable")).toReturn(null);
-
- List<HopOvsdbBridgePair> hopOvsdbBridgePairList =
- HopOvsdbBridgePair.buildHopOvsdbBridgePairList(renderedServicePathBuilder.build(), executorService);
-
- assertEquals("Must be Equal", hopOvsdbBridgePairList, Collections.emptyList());
- }
-
- @Test
- public void buildHopOvsdbBridgePair_EmptyList1() throws Exception {
- ExecutorService executorService = Executors.newFixedThreadPool(10);
- RenderedServicePathBuilder renderedServicePathBuilder = new RenderedServicePathBuilder();
- renderedServicePathHopBuilder = new RenderedServicePathHopBuilder();
- List<RenderedServicePathHop> renderedServicePathHopList = new ArrayList<>();
-
- renderedServicePathHopBuilder.setHopNumber(Short.valueOf("5")).setServiceFunctionForwarder(sff);
- renderedServicePathHopList.add(renderedServicePathHopBuilder.build());
- renderedServicePathBuilder.setRenderedServicePathHop(renderedServicePathHopList);
- ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
-
- PowerMockito.stub(PowerMockito.method(SfcOvsUtil.class, "submitCallable"))
- .toReturn(ovsdbBridgeAugmentationBuilder.build());
-
- List<HopOvsdbBridgePair> hopOvsdbBridgePairList =
- HopOvsdbBridgePair.buildHopOvsdbBridgePairList(renderedServicePathBuilder.build(), executorService);
-
- assertEquals("Must be equal", hopOvsdbBridgePairList, Collections.emptyList());
- }
-
- @Test
- public void buildHopOvsdbBridgePairTest() throws Exception {
- ExecutorService executorService = Executors.newFixedThreadPool(10);
- RenderedServicePathBuilder renderedServicePathBuilder = new RenderedServicePathBuilder();
- renderedServicePathHopBuilder = new RenderedServicePathHopBuilder();
- List<RenderedServicePathHop> renderedServicePathHopList = new ArrayList<>();
-
- renderedServicePathHopBuilder.setHopNumber(Short.valueOf("0")).setServiceFunctionForwarder(sff);
- renderedServicePathHopList.add(renderedServicePathHopBuilder.build());
- renderedServicePathBuilder.setRenderedServicePathHop(renderedServicePathHopList);
- ovsdbBridgeAugmentationBuilder = new OvsdbBridgeAugmentationBuilder();
-
- PowerMockito.stub(PowerMockito.method(SfcOvsUtil.class, "submitCallable"))
- .toReturn(ovsdbBridgeAugmentationBuilder.build());
-
- List<HopOvsdbBridgePair> hopOvsdbBridgePairList =
- HopOvsdbBridgePair.buildHopOvsdbBridgePairList(renderedServicePathBuilder.build(), executorService);
-
- assertEquals(hopOvsdbBridgePairList.size(), 1);
- }
-}