Added new module in Dependency folder that contains wrapper functions
diff --git a/TestON/tests/FuncIntent/Dependency/FuncIntentFunction.py b/TestON/tests/FuncIntent/Dependency/FuncIntentFunction.py
new file mode 100644
index 0000000..3c6f559
--- /dev/null
+++ b/TestON/tests/FuncIntent/Dependency/FuncIntentFunction.py
@@ -0,0 +1,267 @@
+"""
+ Wrapper functions for FuncIntent
+ This functions include Onosclidriver and Mininetclidriver driver functions
+"""
+def __init__( self ):
+ self.default = ''
+
+def addHostIntent( main, item ):
+ """
+ Add host intents
+ """
+ import time
+ stepResult = main.TRUE
+ global itemName
+ itemName = item[ 'name' ]
+ h1Name = item[ 'host1' ][ 'name' ]
+ h2Name = item[ 'host2' ][ 'name' ]
+ h1Mac = item[ 'host1' ][ 'MAC' ]
+ h2Mac = item[ 'host2' ][ 'MAC' ]
+ h1Id = item[ 'host1' ][ 'id']
+ h2Id = item[ 'host2' ][ 'id']
+ sw1 = item[ 'link' ][ 'switch1' ]
+ sw2 = item[ 'link' ][ 'switch2' ]
+ expectLink = item[ 'link' ][ 'expect' ]
+ intentsId = []
+ pingResult = main.TRUE
+ intentResult = main.TRUE
+ flowResult = main.TRUE
+ topoResult = main.TRUE
+ linkDownResult = main.TRUE
+ linkUpResult = main.TRUE
+
+ # Discover hosts using arping
+ main.log.info( itemName + ": Discover host using arping" )
+ main.Mininet1.arping( host=h1Name )
+ main.Mininet1.arping( host=h2Name )
+ host1 = main.CLIs[ 0 ].getHost( mac=h1Mac )
+ host2 = main.CLIs[ 0 ].getHost( mac=h2Mac )
+
+ # Adding host intents
+ main.log.info( itemName + ": Adding host intents" )
+ intent1 = main.CLIs[ 0 ].addHostIntent( hostIdOne=h1Id,
+ hostIdTwo=h2Id )
+ intentsId.append( intent1 )
+ time.sleep( 5 )
+ intent2 = main.CLIs[ 0 ].addHostIntent( hostIdOne=h2Id,
+ hostIdTwo=h1Id )
+ intentsId.append( intent2 )
+
+ # Check intents state
+ time.sleep( 50 )
+ intentResult = checkIntentState( main, intentsId )
+
+ # Verify flows
+ checkFlowsState( main )
+
+ # Ping hosts
+ pingHost( main, h1Name, h2Name )
+ # Ping hosts again...
+ pingResult = pingHost( main, h1Name, h2Name )
+ time.sleep( 5 )
+
+ # link down
+ link( main, sw1, sw2, "down" )
+ intentResult = intentResult and checkIntentState( main, intentsId )
+
+ # Verify flows
+ checkFlowsState( main )
+
+ # Check OnosTopology
+ topoResult = checkTopology( main, expectLink )
+
+ # Ping hosts
+ pingResult = pingResult and pingHost( main, h1Name, h2Name )
+
+ intentResult = checkIntentState( main, intentsId )
+
+ # link up
+ link( main, sw1, sw2, "up" )
+ time.sleep( 5 )
+
+ # Verify flows
+ checkFlowsState( main )
+
+ # Check OnosTopology
+ topoResult = checkTopology( main, expectLink )
+
+ # Ping hosts
+ pingResult = pingResult and pingHost( main, h1Name, h2Name )
+
+ # Remove intents
+ for intent in intentsId:
+ main.CLIs[ 0 ].removeIntent( intentId=intent, purge=True )
+
+ print main.CLIs[ 0 ].intents()
+ stepResult = pingResult and linkDownResult and linkUpResult \
+ and intentResult
+
+ return stepResult
+
+def addPointIntent( main, item ):
+ """
+ Add Point intents
+ """
+ import time
+ stepResult = main.TRUE
+ global itemName
+ itemName = item[ 'name' ]
+ ingress = item[ 'ingress' ]
+ egress = item[ 'egress' ]
+ option = item[ 'option' ]
+ sw1 = item[ 'link' ][ 'switch1' ]
+ sw2 = item[ 'link' ][ 'switch2' ]
+ expectLink = item[ 'link' ][ 'expect' ]
+ intentsId = []
+
+ print 'OPTIONS ', option
+ return main.TRUE
+ pingResult = main.TRUE
+ intentResult = main.TRUE
+ flowResult = main.TRUE
+ topoResult = main.TRUE
+ linkDownResult = main.TRUE
+ linkUpResult = main.TRUE
+
+ # Discover hosts using arping
+ main.log.info( itemName + ": Discover host using arping" )
+ main.Mininet1.arping( host=h1Name )
+ main.Mininet1.arping( host=h2Name )
+ host1 = main.CLIs[ 0 ].getHost( mac=h1Mac )
+ host2 = main.CLIs[ 0 ].getHost( mac=h2Mac )
+
+ # Adding host intents
+ main.log.info( itemName + ": Adding host intents" )
+ intent1 = main.CLIs[ 0 ].addHostIntent( hostIdOne=h1Id,
+ hostIdTwo=h2Id )
+ intentsId.append( intent1 )
+ time.sleep( 5 )
+ intent2 = main.CLIs[ 0 ].addHostIntent( hostIdOne=h2Id,
+ hostIdTwo=h1Id )
+ intentsId.append( intent2 )
+
+ # Check intents state
+ time.sleep( 50 )
+ intentResult = checkIntentState( main, intentsId )
+
+ # Verify flows
+ checkFlowsState( main )
+
+ # Ping hosts
+ pingHost( main, h1Name, h2Name )
+ # Ping hosts again...
+ pingResult = pingHost( main, h1Name, h2Name )
+ time.sleep( 5 )
+
+ # link down
+ link( main, sw1, sw2, "down" )
+ intentResult = intentResult and checkIntentState( main, intentsId )
+
+ # Verify flows
+ checkFlowsState( main )
+
+ # Check OnosTopology
+ topoResult = checkTopology( main, expectLink )
+
+ # Ping hosts
+ pingResult = pingResult and pingHost( main, h1Name, h2Name )
+
+ intentResult = checkIntentState( main, intentsId )
+
+ # link up
+ link( main, sw1, sw2, "up" )
+ time.sleep( 5 )
+
+ # Verify flows
+ checkFlowsState( main )
+
+ # Check OnosTopology
+ topoResult = checkTopology( main, expectLink )
+
+ # Ping hosts
+ pingResult = pingResult and pingHost( main, h1Name, h2Name )
+
+ # Remove intents
+ for intent in intentsId:
+ main.CLIs[ 0 ].removeIntent( intentId=intent, purge=True )
+
+ print main.CLIs[ 0 ].intents()
+ stepResult = pingResult and linkDownResult and linkUpResult \
+ and intentResult
+
+ return stepResult
+
+def link( main, sw1, sw2, option):
+
+ # link down
+ main.log.info( itemName + ": Bring link " + option + "between " +
+ sw1 + " and " + sw2 )
+ main.Mininet1.link( end1=sw1, end2=sw2, option=option )
+
+def pingHost( main, h1Name, h2Name ):
+
+ # Ping hosts
+ main.log.info( itemName + ": Ping " + h1Name + " and " +
+ h2Name )
+ pingResult1 = main.Mininet1.pingHost( src=h1Name , target=h2Name )
+ if not pingResult1:
+ main.log.info( itemName + ": " + h1Name + " cannot ping "
+ + h2Name )
+ pingResult2 = main.Mininet1.pingHost( src=h2Name , target=h1Name )
+ if not pingResult2:
+ main.log.info( itemName + ": " + h2Name + " cannot ping "
+ + h1Name )
+ pingResult = pingResult1 and pingResult2
+ if pingResult:
+ main.log.info( itemName + ": Successfully pinged " +
+ "both hosts" )
+ else:
+ main.log.info( itemName + ": Failed to ping " +
+ "both hosts" )
+ return pingResult
+
+def checkItem( item ):
+ """
+ Checks the dictionary
+ """
+
+def checkTopology( main, expectedLink ):
+ statusResult = main.TRUE
+ # Check onos topology
+ main.log.info( itemName + ": Checking ONOS topology " )
+
+ for i in range( main.numCtrls ):
+ topologyResult = main.CLIs[ i ].topology()
+ statusResult = main.ONOSbench.checkStatus( topologyResult,
+ main.numSwitch,
+ expectedLink )\
+ and statusResult
+ if not statusResult:
+ main.log.info( itemName + ": Topology mismatch" )
+ else:
+ main.log.info( itemName + ": Topology match" )
+ return statusResult
+
+def checkIntentState( main, intentsId ):
+
+ main.log.info( itemName + ": Check host intents state" )
+ for i in range( main.numCtrls ):
+ intentResult = main.CLIs[ i ].checkIntentState( intentsId=intentsId )
+ if not intentResult:
+ main.log.info( itemName + ": Check host intents state again")
+ for i in range( main.numCtrls ):
+ intentResult = main.CLIs[ i ].checkIntentState(
+ intentsId=intentsId )
+ return intentResult
+
+def checkFlowsState( main ):
+
+ main.log.info( itemName + ": Check flows state" )
+ checkFlowsResult = main.CLIs[ 0 ].checkFlowsState()
+ return checkFlowsResult
+
+def printMsg( main, h1Name, h2Name ):
+ main.log.info("PINGING HOST INSIDE printMSG")
+ pingHost( main, itemName, h1Name, h2Name )
+ print 'lala'
+