update IT for new SFC model changes for DPLs
[netvirt.git] / openstack / net-virt-sfc / it / src / test / java / org / opendaylight / ovsdb / openstack / netvirt / sfc / NetvirtSfcIT.java
index 08a1f0069560fc98dc0c3f1d555de973ea8876bb..8fda8609c850d049ffdc88da7aaf56ee0444e546 100644 (file)
@@ -25,7 +25,6 @@ import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.configure
 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;
@@ -33,6 +32,7 @@ import java.util.List;
 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;
@@ -48,10 +48,10 @@ import org.opendaylight.ovsdb.openstack.netvirt.sfc.standalone.openflow13.SfcCla
 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;
@@ -59,6 +59,7 @@ import org.opendaylight.ovsdb.utils.mdsal.openflow.MatchUtils;
 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;
@@ -77,7 +78,6 @@ import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfp.rev1407
 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;
@@ -113,7 +113,6 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 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;
@@ -125,6 +124,8 @@ import org.ops4j.pax.exam.spi.reactors.PerClass;
 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 {
@@ -142,6 +143,7 @@ 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";
@@ -154,24 +156,29 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     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
@@ -228,7 +235,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     public Option[] getPropertiesOptions() {
         return new Option[] {
                 propagateSystemProperties(SERVER_IPADDRESS, SERVER_PORT, CONNECTION_TYPE,
-                        CONTROLLER_IPADDRESS, OVSDB_TRACE),
+                        CONTROLLER_IPADDRESS, OVSDB_TRACE, OVSDB_WAIT),
         };
     }
 
@@ -248,9 +255,9 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
                 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()),
@@ -276,6 +283,10 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
             }
         }
         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
@@ -365,12 +376,13 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     }
 
     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 =
@@ -471,6 +483,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     private ServiceFunctionForwardersBuilder serviceFunctionForwardersBuilder() {
         String sf1Name = SF1NAME;
         String sf1Ip = SF1IP;
+        String sf1DplName = SF1DPLNAME;
         String sff1Ip = SFF1IP;
         String sff1Name = SFF1NAME;
         String sffDpl1Name = SFFDPL1NAME;
@@ -488,7 +501,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
 
         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);
 
@@ -506,12 +519,12 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     }
 
     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);
 
@@ -532,8 +545,8 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     }
 
     private ServiceFunctionPathsBuilder serviceFunctionPathsBuilder() {
-        String sfpName = "SFC-Path";
-        String sfcName = "SFC";
+        String sfpName = SFCPATH;
+        String sfcName = SFCNAME;
         short startingIndex = 255;
 
         ServiceFunctionPathBuilder serviceFunctionPathBuilder =
@@ -591,10 +604,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
 
         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();
@@ -806,7 +816,7 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
 
     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);
@@ -830,10 +840,13 @@ public class NetvirtSfcIT extends AbstractMdsalTestBase {
     }
 
     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();
+            }
         }
     }
 }