import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.keepRuntimeFolder;
-import com.google.common.collect.Maps;
import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.atomic.AtomicBoolean;
+
import org.junit.Assert;
import org.junit.Before;
import org.junit.Ignore;
import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.AclUtils;
import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.ClassifierUtils;
import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.ServiceFunctionChainUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.ServiceFunctionPathUtils;
-import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.SfcUtils;
import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.ServiceFunctionForwarderUtils;
+import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.ServiceFunctionPathUtils;
import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.ServiceFunctionUtils;
+import org.opendaylight.ovsdb.openstack.netvirt.sfc.utils.SfcUtils;
import org.opendaylight.ovsdb.southbound.SouthboundConstants;
import org.opendaylight.ovsdb.southbound.SouthboundUtil;
import org.opendaylight.ovsdb.utils.mdsal.openflow.FlowUtils;
import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
+import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SftType;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.ServiceFunctions;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.ServiceFunctionsBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev140701.ServiceFunctionPathsBuilder;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev140701.service.function.paths.ServiceFunctionPath;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev140701.service.function.paths.ServiceFunctionPathBuilder;
-import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sft.rev140701.Firewall;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessLists;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.AccessListsBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev150317.access.lists.AclBuilder;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.junit.PaxExam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.collect.Maps;
+
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerClass.class)
public class NetvirtSfcIT extends AbstractMdsalTestBase {
private static String addressStr;
private static String portStr;
private static String connectionType;
+ private static boolean ovsdb_wait = false;
private static Southbound southbound;
private static DataBroker dataBroker;
public static final String CONTROLLER_IPADDRESS = "ovsdb.controller.address";
public static final String INTEGRATION_BRIDGE_NAME = "br-int";
private static final String NETVIRT_TOPOLOGY_ID = "netvirt:1";
private static final String OVSDB_TRACE = "ovsdb.trace";
+ private static final String OVSDB_WAIT = "ovsdb.wait";
private static final String SF1NAME = "firewall-72";
private static final String SF2NAME = "dpi-72";
private static final String SF1IP = "10.2.1.1";//"192.168.50.70";//"192.168.120.31";
private static final String SF2IP = "10.2.1.2";
- private static final String SF1DPLNAME = "sf1";
- private static final String SF2DPLNAME = "sf2";
+ private static final String SF1DPLNAME = "sf1Dpl";
+ private static final String SF2DPLNAME = "sf2Dpl";
private static final String SFF1IP = "127.0.0.1"; //"192.168.1.129"
private static final String SFF2IP = "192.168.1.129";//"127.0.0.1";
- private static final String SFF1NAME = "SFF1";
- private static final String SFF2NAME = "SFF2";
+ private static final String SFF1NAME = "sff1";
+ private static final String SFF2NAME = "sff2";
private static final String SFFDPL1NAME = "vxgpe";
private static final String SFFDPL2NAME = "vxgpe";
- private static final String SN1NAME = "OVSDB1";
- private static final String SN2NAME = "OVSDB2";
+ private static final String SN1NAME = "ovsdb1";
+ private static final String SN2NAME = "ovsdb2";
private static final String BRIDGE1NAME= "br-int";
private static final String BRIDGE2NAME= "br-int";
private static final String ACLNAME= "httpAcl";
- private static final String SFCNAME = "SFC";
+ private static final String RULENAME= "httpRule";
+ private static final String SFCNAME = "sfc1";
+ private static final String SFCPATH = "SFC-Path";
+ private static final String SFCSF1NAME = "firewall-abstract";
+ private static final SftType SFCSF1TYPE = new SftType("firewall");
private static final int GPEPORT = 6633;
@Override
public Option[] getPropertiesOptions() {
return new Option[] {
propagateSystemProperties(SERVER_IPADDRESS, SERVER_PORT, CONNECTION_TYPE,
- CONTROLLER_IPADDRESS, OVSDB_TRACE),
+ CONTROLLER_IPADDRESS, OVSDB_TRACE, OVSDB_WAIT),
};
}
editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG,
"log4j.logger.org.opendaylight.ovsdb.openstack.netvirt.sfc",
LogLevel.TRACE.name()),
- editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG,
- "log4j.logger.org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13",
- LogLevel.TRACE.name()),
+ //editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG,
+ // "log4j.logger.org.opendaylight.ovsdb.openstack.netvirt.providers.openflow13",
+ // LogLevel.TRACE.name()),
editConfigurationFilePut(ORG_OPS4J_PAX_LOGGING_CFG,
"log4j.logger.org.opendaylight.sfc",
LogLevel.TRACE.name()),
}
}
LOG.info("getProperties {}: {}", OVSDB_TRACE, props.getProperty(OVSDB_TRACE));
+ LOG.info("getProperties {}: {}", OVSDB_WAIT, props.getProperty(OVSDB_WAIT));
+ if (props.getProperty(OVSDB_WAIT).equals("true")) {
+ ovsdb_wait = true;
+ }
}
@Before
}
private AccessListsBuilder accessListsBuilder() {
+ String ruleName = RULENAME;
+ String sfcName = SFCNAME;
MatchesBuilder matchesBuilder = aclUtils.matchesBuilder(new MatchesBuilder(), 80);
LOG.info("Matches: {}", matchesBuilder.build());
- //ActionsBuilder actionsBuilder = aclUtils.actionsBuilder(new ActionsBuilder(), Boolean.TRUE);
- ActionsBuilder actionsBuilder = aclUtils.actionsBuilder(new ActionsBuilder(), SFCNAME);
+ ActionsBuilder actionsBuilder = aclUtils.actionsBuilder(new ActionsBuilder(), sfcName);
AceBuilder accessListEntryBuilder =
- aclUtils.aceBuilder(new AceBuilder(), "httpRule", matchesBuilder, actionsBuilder);
+ aclUtils.aceBuilder(new AceBuilder(), ruleName, matchesBuilder, actionsBuilder);
AccessListEntriesBuilder accessListEntriesBuilder =
aclUtils.accessListEntriesBuidler(new AccessListEntriesBuilder(), accessListEntryBuilder);
AclBuilder accessListBuilder =
private ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder() {
String sf1Name = SF1NAME;
String sf1Ip = SF1IP;
+ String sf1DplName = SF1DPLNAME;
String sff1Ip = SFF1IP;
String sff1Name = SFF1NAME;
String sffDpl1Name = SFFDPL1NAME;
ServiceFunctionForwarderBuilder serviceFunctionForwarderBuilder =
serviceFunctionForwarderUtils.serviceFunctionForwarderBuilder(
- sff1Name, sff1Ip, port, sffDpl1Name, sf1Name, sf1Ip, sn1Name, bridge1Name, Firewall.class);
+ sff1Name, sff1Ip, port, sffDpl1Name, sf1Ip, sn1Name, bridge1Name, sf1Name, sf1DplName);
List<ServiceFunctionForwarder> serviceFunctionForwarderList = serviceFunctionForwarderUtils.list(
new ArrayList<ServiceFunctionForwarder>(), serviceFunctionForwarderBuilder);
}
private ServiceFunctionChainsBuilder serviceFunctionChainsBuilder() {
- String sf1Name = "firewall-abstract1";
- String sf2Name = "dpi-abstract1";
+ String sf1Name = SFCSF1NAME;
+ SftType sfType = SFCSF1TYPE;
String sfcName = SFCNAME;
SfcServiceFunctionBuilder sfcServiceFunctionBuilder = serviceFunctionChainUtils.sfcServiceFunctionBuilder(
- new SfcServiceFunctionBuilder(), sf1Name, Firewall.class);
+ new SfcServiceFunctionBuilder(), sf1Name, sfType);
List<SfcServiceFunction> sfcServiceFunctionList =
serviceFunctionChainUtils.list(new ArrayList<SfcServiceFunction>(), sfcServiceFunctionBuilder);
}
private ServiceFunctionPathsBuilder serviceFunctionPathsBuilder() {
- String sfpName = "SFC-Path";
- String sfcName = "SFC";
+ String sfpName = SFCPATH;
+ String sfcName = SFCNAME;
short startingIndex = 255;
ServiceFunctionPathBuilder serviceFunctionPathBuilder =
Map<String, String> externalIds = Maps.newHashMap();
externalIds.put("attached-mac", "f6:00:00:0f:00:01");
- southboundUtils.addTerminationPoint(bridgeNode, null, SF1DPLNAME, "internal", null, externalIds);
- southboundUtils.addTerminationPoint(bridgeNode, null, "vm1", "internal");
- southboundUtils.addTerminationPoint(bridgeNode, null, "vm2", "internal");
+ southboundUtils.addTerminationPoint(bridgeNode, SF1DPLNAME, "internal", null, externalIds);
+ southboundUtils.addTerminationPoint(bridgeNode, "vm1", "internal");
+ southboundUtils.addTerminationPoint(bridgeNode, "vm2", "internal");
Map<String, String> options = Maps.newHashMap();
options.put("key", "flow");
options.put("remote_ip", "192.168.120.32");
- southboundUtils.addTerminationPoint(bridgeNode, null, "vx", "vxlan", options, null);
+ southboundUtils.addTerminationPoint(bridgeNode, "vx", "vxlan", options, null);
Thread.sleep(1000);
testModelPut(serviceFunctionsBuilder(), ServiceFunctions.class);
Thread.sleep(10000);
- ISfcClassifierService sfcClassifierService = (ISfcClassifierService) ServiceHelper.getGlobalInstance(ISfcClassifierService.class, this);
- LOG.info("SfcClassifierService: {}", sfcClassifierService);
readwait();
- //sfcClassifierService.programIngressClassifier(datapathId);
NodeBuilder nodeBuilder = FlowUtils.createNodeBuilder(datapathId);
FlowBuilder flowBuilder = getSfcIngressClassifierFlowBuilder();
private FlowBuilder getSfcIngressClassifierFlowBuilder() {
FlowBuilder flowBuilder = new FlowBuilder();
- String flowId = "sfcClass_" + "httpRule";
+ String flowId = "sfcIngressClass_" + "httpRule";
flowBuilder.setId(new FlowId(flowId));
FlowKey key = new FlowKey(new FlowId(flowId));
flowBuilder.setKey(key);
}
private void readwait() {
- try {
- System.in.read();
- } catch (IOException e) {
- e.printStackTrace();
+ if (ovsdb_wait) {
+ LOG.warn("Waiting, kill with ps -ef | grep java, kill xxx... ");
+ try {
+ System.in.read();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
}
}