Merge branch 'HA' of https://github.com/opennetworkinglab/ONLabTest into devl/merge
Conflicts:
TestON/core/teston.py
TestON/drivers/common/cli/emulator/mininetclidriver.py
TestON/drivers/common/cli/onosdriver.py
TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py
TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py
diff --git a/TestON/core/iniparser.py b/TestON/core/iniparser.py
index b952f2d..c350a20 100644
--- a/TestON/core/iniparser.py
+++ b/TestON/core/iniparser.py
@@ -48,7 +48,7 @@
try :
parsedInfo = ConfigObj(self.fileName)
return parsedInfo
- except :
+ except Exception:
print "There is no such file to parse "+fileName
else:
return 0
diff --git a/TestON/core/jsonparser.py b/TestON/core/jsonparser.py
index 8726e87..fea797a 100644
--- a/TestON/core/jsonparser.py
+++ b/TestON/core/jsonparser.py
@@ -21,7 +21,6 @@
'''
-import re
import json
class JsonParser:
'''
@@ -37,7 +36,7 @@
response_dict = {}
try :
response_dict = json.loads(json_response)
- except :
+ except Exception:
main.log.error("Json Parser is unable to parse the string")
return response_dict
@@ -50,7 +49,7 @@
json_response = {}
try :
json_response = json.dumps(response_dict)
- except :
+ except Exception:
main.log.error("Json Parser is unable to parse the string")
return json_response
'''
diff --git a/TestON/core/teston.py b/TestON/core/teston.py
index 3b5985b..70de8ec 100644
--- a/TestON/core/teston.py
+++ b/TestON/core/teston.py
@@ -90,7 +90,6 @@
self.logs_path = logs_path
self.driver = ''
self.Thread = Thread
-
self.configparser()
verifyOptions(options)
@@ -142,7 +141,7 @@
try :
self.configDict = xmldict.xml_to_dict(xml)
return self.configDict
- except (Exception):
+ except Exception:
print "There is no such file to parse " + self.configFile
def componentInit(self,component):
@@ -199,14 +198,14 @@
test = testparser.TestParser(testFile)
self.testscript = test.testscript
self.code = test.getStepCode()
- repeat= int(self.params['repeat']) if ('repeat' in self.params) else 1
- main.TOTAL_TC_PLANNED = len(self.testcases_list)*repeat
+ repeat= int(self.params['repeat']) if ('repeat' in self.params) else 1
+ self.TOTAL_TC_PLANNED = len(self.testcases_list)*repeat
result = self.TRUE
- while(repeat):
+ while(repeat):
for self.CurrentTestCaseNumber in self.testcases_list:
result = self.runCase(self.CurrentTestCaseNumber)
- repeat-=1
+ repeat-=1
return result
def runCase(self,testCaseNumber):
@@ -220,15 +219,15 @@
try :
self.stepList = self.code[self.testCaseNumber].keys()
except KeyError:
- main.log.error("There is no Test-Case "+ self.testCaseNumber)
- return main.FALSE
+ self.log.error("There is no Test-Case "+ self.testCaseNumber)
+ return self.FALSE
self.stepCount = 0
while self.stepCount < len(self.code[self.testCaseNumber].keys()):
result = self.runStep(self.stepList,self.code,self.testCaseNumber)
- if result == main.FALSE:
+ if result == self.FALSE:
break
- elif result == main.TRUE :
+ elif result == self.TRUE:
continue
if not stopped :
@@ -437,7 +436,7 @@
xml_match = re.search('^\s*\<', response)
ini_match = re.search('^\s*\[', response)
if json_match :
- main.log.info(" Response is in 'JSON' format and Converting to '"+return_format+"' format")
+ self.log.info(" Response is in 'JSON' format and Converting to '"+return_format+"' format")
# Formatting the json string
response = re.sub(r"{\s*'?(\w)", r'{"\1', response)
@@ -449,12 +448,12 @@
import json
response_dict = json.loads(response)
except Exception, e:
- main.log.exception( e )
- main.log.error("Json Parser is unable to parse the string")
+ self.log.exception( e )
+ self.log.error("Json Parser is unable to parse the string")
return response_dict
elif ini_match :
- main.log.info(" Response is in 'INI' format and Converting to '"+return_format+"' format")
+ self.log.info(" Response is in 'INI' format and Converting to '"+return_format+"' format")
from configobj import ConfigObj
response_file = open("respnse_file.temp",'w')
response_file.write(response)
@@ -463,11 +462,11 @@
return response_dict
elif xml_match :
- main.log.info(" Response is in 'XML' format and Converting to '"+return_format+"' format")
+ self.log.info(" Response is in 'XML' format and Converting to '"+return_format+"' format")
try :
response_dict = xmldict.xml_to_dict("<response> "+str(response)+" </response>")
except Exception, e:
- main.log.exception( e )
+ self.log.exception( e )
return response_dict
def dict_to_return_format(self,response,return_format,response_dict):
@@ -495,7 +494,7 @@
- #response_table = response_table + '\t'.join(response_dict.values())
+ # response_table = response_table + '\t'.join(response_dict.values())
return response_table
@@ -539,7 +538,7 @@
import pprint
pp = pprint.PrettyPrinter(indent=4)
- #pp.pprint(options)
+ # pp.pprint(options)
verifyTest(options)
verifyExample(options)
verifyTestScript(options)
@@ -568,7 +567,7 @@
main.classPath = "examples."+main.TEST+"."+main.TEST
def verifyLogdir(options):
- #Verifying Log directory option
+ # Verifying Log directory option
if options.logdir:
main.logdir = options.logdir
else :
@@ -584,10 +583,10 @@
main.mail = 'paxweb@paxterrasolutions.com'
def verifyTestCases(options):
- #Getting Test cases list
+ # Getting Test cases list
if options.testcases:
- testcases_list = options.testcases
- #sys.exit()
+ testcases_list = options.testcases
+ # sys.exit()
testcases_list = re.sub("(\[|\])", "", options.testcases)
main.testcases_list = eval(testcases_list+",")
else :
@@ -595,18 +594,18 @@
temp = eval(main.params['testcases']+",")
list1=[]
if type(temp[0])==list:
- for test in temp:
- for testcase in test:
- if type(testcase)==int:
- testcase=[testcase]
- list1.extend(testcase)
- else :
- temp=list(temp)
- for testcase in temp:
- if type(testcase)==int:
- testcase=[testcase]
- list1.extend(testcase)
- main.testcases_list=list1
+ for test in temp:
+ for testcase in test:
+ if type(testcase)==int:
+ testcase=[testcase]
+ list1.extend(testcase)
+ else :
+ temp=list(temp)
+ for testcase in temp:
+ if type(testcase)==int:
+ testcase=[testcase]
+ list1.extend(testcase)
+ main.testcases_list=list1
else :
print "testcases not specifed in params, please provide in params file or 'testcases' commandline argument"
sys.exit()
diff --git a/TestON/core/utilities.py b/TestON/core/utilities.py
index b6bed3e..671dba5 100644
--- a/TestON/core/utilities.py
+++ b/TestON/core/utilities.py
@@ -29,11 +29,9 @@
'''
import re
from configobj import ConfigObj
-import pydoc
from core import ast as ast
import smtplib
-import mimetypes
import email
import os
import email.mime.application
@@ -265,7 +263,7 @@
try :
parsedInfo = ConfigObj(self.fileName)
return parsedInfo
- except :
+ except Exception:
print "There is no such file to parse "+fileName
else:
return 0
diff --git a/TestON/core/xmldict.py b/TestON/core/xmldict.py
index 34e9cfc..f873014 100644
--- a/TestON/core/xmldict.py
+++ b/TestON/core/xmldict.py
@@ -37,7 +37,7 @@
root = ElementTree.XML(root_or_str)
try :
return {root.tag: _from_xml(root, strict)}
- except :
+ except Exception:
return None
def dict_to_xml(dict_xml):
diff --git a/TestON/core/xmlparser.py b/TestON/core/xmlparser.py
index 3cb4aee..a46750a 100644
--- a/TestON/core/xmlparser.py
+++ b/TestON/core/xmlparser.py
@@ -39,7 +39,7 @@
try :
parsedInfo = xmldict.xml_to_dict(xml)
return parsedInfo
- except :
+ except Exception:
print "There is no such file to parse " + fileName
else :
print "file name is not correct"
diff --git a/TestON/drivers/common/cli/dpclidriver.py b/TestON/drivers/common/cli/dpclidriver.py
index 057a3f1..81743d3 100644
--- a/TestON/drivers/common/cli/dpclidriver.py
+++ b/TestON/drivers/common/cli/dpclidriver.py
@@ -1,16 +1,8 @@
"""
Driver for blank dataplane VMs. Created for SDNIP test.
"""
-import time
import pexpect
-import struct
-import fcntl
-import os
import sys
-import signal
-import sys
-import re
-import json
sys.path.append( "../" )
from drivers.common.clidriver import CLI
@@ -26,9 +18,9 @@
self.name = self.options[ 'name' ]
self.handle = super( DPCliDriver, self ).connect( user_name=self.user_name,
- ip_address=self.ip_address,
- port=self.port,
- pwd=self.pwd )
+ ip_address=self.ip_address,
+ port=self.port,
+ pwd=self.pwd )
if self.handle:
return self.handle
@@ -38,11 +30,17 @@
def create_interfaces( self, net, number, start ):
"""
- Creates a number,specified by 'number,' of subinterfaces on eth0. Ip addresses start at 'net'.'start'.1.1 with a 24 bit netmask. Addresses increment sequentially in the third quad,
- therefore all interfaces are in different subnets on the same machine. When the third quad reaches 255, it is reset to 1 and the second quad is incremented.
- Every single ip address is placed in a file in /tmp titled 'ip_table{net}.txt'
- The file is used by 'pingall_interfaces()' as a fping argument
- This method returns true if all interfaces are created without a hitch, and false if a single interface has issues
+ Creates a number,specified by 'number,' of subinterfaces on eth0.
+ Ip addresses start at 'net'.'start'.1.1 with a 24 bit netmask.
+ Addresses increment sequentially in the third quad, therefore all
+ interfaces are in different subnets on the same machine. When the
+ third quad reaches 255, it is reset to 1 and the second quad is
+ incremented. Every single ip address is placed in a file in /tmp
+ titled 'ip_table{net}.txt'. The file is used by 'pingall_interfaces()'
+ as a fping argument
+
+ This method returns true if all interfaces are created without a hitch,
+ and false if a single interface has issues
"""
self.handle.sendline( "" )
self.handle.expect( "\$" )
@@ -68,11 +66,11 @@
intf ) + " " + ip + " netmask 255.255.255.0" )
i = self.handle.expect( [
- "\$",
+ "\$",
"password",
pexpect.TIMEOUT,
pexpect.EOF ],
- timeout=120 )
+ timeout=120 )
if i == 0:
self.handle.sendline(
@@ -88,22 +86,27 @@
def pingall_interfaces( self, netsrc, netstrt, netdst, destlogin, destip ):
"""
- Copies the /tmp/ip_table{ net }.txt file from the machine you wish to ping, then runs fping with a source address of { netsrc }.{ netstrt }.1.1 on the copied file.
- Check every single response for reachable or unreachable. If all are reachable, function returns true. If a SINGLE host is unreachable, then the function stops and returns false
- If fping is not installed, this function will install fping then run the same command
+ Copies the /tmp/ip_table{ net }.txt file from the machine you wish to
+ ping, then runs fping with a source address of
+ { netsrc }.{ netstrt }.1.1 on the copied file.
+ Check every single response for reachable or unreachable. If all are
+ reachable, function returns true. If a SINGLE host is unreachable,
+ then the function stops and returns false. If fping is not installed,
+ this function will install fping then run the same command
"""
self.handle.sendline( "" )
self.handle.expect( "\$" )
- self.handle.sendline( "scp " + str( destlogin ) + "@" +
- str( destip ) + ":/tmp/local_ip.txt /tmp/ip_table" +
- str( net ) + ".txt" )
-
- i = self.handle.expect( [
- "100%",
+ self.handle.sendline( "scp " + str( destlogin ) + "@" +
+ str( destip ) +
+ ":/tmp/local_ip.txt /tmp/ip_table" +
+ str( netsrc ) + ".txt" )
+
+ i = self.handle.expect( [
+ "100%",
"password",
pexpect.TIMEOUT ],
- timeout=30 )
+ timeout=30 )
if i == 0:
main.log.info( "Copied ping file successfully" )
@@ -120,20 +123,20 @@
self.handle.expect( "\$" )
main.log.info( "Pinging interfaces on the " + str( netdst ) +
- " network from " + str( netsrc ) + "." +
- str( netstrt ) + ".1.1" )
+ " network from " + str( netsrc ) + "." +
+ str( netstrt ) + ".1.1" )
self.handle.sendline( "sudo fping -S " + str( netsrc ) + "." +
- str( netstrt ) + ".1.1 -f /tmp/ip_table" +
- str( netdst ) + ".txt" )
+ str( netstrt ) + ".1.1 -f /tmp/ip_table" +
+ str( netdst ) + ".txt" )
while 1:
i = self.handle.expect( [
- "reachable",
+ "reachable",
"unreachable",
"\$",
"password",
pexpect.TIMEOUT,
"not installed" ],
- timeout=45 )
+ timeout=45 )
if i == 0:
result = main.TRUE
elif i == 1:
@@ -142,6 +145,7 @@
return result
elif i == 2:
main.log.info( "All interfaces reachable" )
+ result = main.FALSE
return result
elif i == 3:
self.handle.sendline( self.pwd )
@@ -152,11 +156,10 @@
elif i == 5:
main.log.info( "fping not installed, installing fping" )
self.handle.sendline( "sudo apt-get install fping" )
- i = self.handle.expect(
- [ "password",
- "\$",
- pexpect.TIMEOUT ],
- timeout=60 )
+ i = self.handle.expect( [ "password",
+ "\$",
+ pexpect.TIMEOUT ],
+ timeout=60 )
if i == 0:
self.handle.sendline( self.pwd )
self.handle.expect( "\$", timeout=30 )
@@ -183,8 +186,8 @@
try:
self.handle.sendline( "exit" )
self.handle.expect( "closed" )
- except:
- main.log.error( "Connection failed to the host" )
+ except pexpect.ExceptionPexpect:
+ main.log.exception( "Connection failed to the host" )
response = main.FALSE
return response
diff --git a/TestON/drivers/common/cli/emulator/flowvisordriver.py b/TestON/drivers/common/cli/emulator/flowvisordriver.py
index d0e6ea5..46c47a7 100644
--- a/TestON/drivers/common/cli/emulator/flowvisordriver.py
+++ b/TestON/drivers/common/cli/emulator/flowvisordriver.py
@@ -21,17 +21,10 @@
FlowVisorDriver is the basic driver which will handle the Mininet functions
"""
-import pexpect
-import struct
-import fcntl
-import os
-import signal
import re
import sys
-import core.teston
sys.path.append( "../" )
from drivers.common.cli.emulatordriver import Emulator
-from drivers.common.clidriver import CLI
class FlowVisorDriver( Emulator ):
@@ -147,15 +140,15 @@
try :
if self.dl_src and self.nw_dst:
flowspace = "any 100 dl_type=0x806,dl_src="+self.dl_src+",nw_dst="+self.nw_dst+" Slice:"+self.Slice+"=4"
- except :
+ except Exception:
try :
if self.nw_src and self.tp_dst:
flowspace = "any 100 dl_type=0x800,nw_proto=6,nw_src="+self.nw_src+",tp_dst="+self.tp_dst+" Slice:"+self.Slice+"=4"
- except :
+ except Exception:
try :
if self.nw_src and self.tp_src:
flowspace = "any 100 dl_type=0x800,nw_proto=6,nw_src="+self.nw_src+",tp_src="+self.tp_dst+" Slice:"+self.Slice+"=4"
- except :
+ except Exception:
main.log.error( "Please specify flowspace properly" )
"""
# self.execute( cmd="clear",prompt="\$",timeout=10 )
diff --git a/TestON/drivers/common/cli/emulator/lincoedriver.py b/TestON/drivers/common/cli/emulator/lincoedriver.py
index 82179a5..b1bc05a 100644
--- a/TestON/drivers/common/cli/emulator/lincoedriver.py
+++ b/TestON/drivers/common/cli/emulator/lincoedriver.py
@@ -14,20 +14,11 @@
OCT 20 2014
"""
-import traceback
+
import pexpect
-import struct
-import fcntl
-import os
-import signal
-import re
import sys
-import core.teston
-import time
sys.path.append( "../" )
-from math import pow
from drivers.common.cli.emulatordriver import Emulator
-from drivers.common.clidriver import CLI
class LincOEDriver( Emulator ):
@@ -45,7 +36,6 @@
"""
Create ssh handle for Linc-OE cli
"""
- import time
for key in connectargs:
vars( self )[ key ] = connectargs[ key ]
@@ -127,10 +117,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -153,10 +141,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -175,10 +161,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -197,10 +181,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -220,10 +202,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -242,10 +222,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -265,10 +243,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -288,10 +264,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -339,10 +313,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " :::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " :::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 8399546..dc9de05 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -35,7 +35,6 @@
Note that you may need to run 'sudo make develop' if your mnexec.c file
changed when switching branches."""
-import traceback
import pexpect
import re
import sys
@@ -52,6 +51,7 @@
def __init__( self ):
super( Emulator, self ).__init__()
self.handle = self
+ self.name = None
self.wrapped = sys.modules[ __name__ ]
self.flag = 0
@@ -73,16 +73,16 @@
pwd=self.pwd )
if self.handle:
- main.log.info("Connection successful to the host " +
- self.user_name +
- "@" +
- self.ip_address )
+ main.log.info( "Connection successful to the host " +
+ self.user_name +
+ "@" +
+ self.ip_address )
return main.TRUE
else:
main.log.error( "Connection failed to the host " +
- self.user_name +
- "@" +
- self.ip_address )
+ self.user_name +
+ "@" +
+ self.ip_address )
main.log.error( "Failed to connect to the Mininet CLI" )
return main.FALSE
except pexpect.EOF:
@@ -90,18 +90,15 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":::::::::::::::::::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( ":::::::::::::::::::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
-
- def startNet( self, topoFile = '', args = '', timeout = 120 ):
+ def startNet( self, topoFile='', args='', timeout=120 ):
"""
Starts Mininet accepts a topology(.py) file and/or an optional
- arguement ,to start the mininet, as a parameter.
+ argument ,to start the mininet, as a parameter.
Returns main.TRUE if the mininet starts successfully and
main.FALSE otherwise
"""
@@ -118,7 +115,7 @@
if i == 0:
main.log.info( self.name + ": Sending sudo password" )
self.handle.sendline( self.pwd )
- i = self.handle.expect( [ '%s:' % ( self.user ),
+ i = self.handle.expect( [ '%s:' % self.user,
'\$',
pexpect.EOF,
pexpect.TIMEOUT ],
@@ -131,7 +128,7 @@
main.log.error(
self.name +
": Something while cleaning MN took too long... " )
- if topoFile == '' and args == '':
+ if topoFile == '' and args == '':
main.log.info( self.name + ": building fresh mininet" )
# for reactive/PARP enabled tests
cmdString = "sudo mn " + self.options[ 'arg1' ] +\
@@ -180,15 +177,14 @@
return main.TRUE
else:
main.log.info( "Starting topo file " + topoFile )
- if args == None:
+ if args is None:
args = ''
else:
main.log.info( "args = " + args)
self.handle.sendline( 'sudo ' + topoFile + ' ' + args)
- i = 1
i = self.handle.expect( [ 'mininet>',
- pexpect.EOF ,
- pexpect.TIMEOUT ],
+ pexpect.EOF,
+ pexpect.TIMEOUT ],
timeout)
if i == 0:
main.log.info(self.name + ": Network started")
@@ -244,10 +240,8 @@
numLinks = totalNumHosts + ( numSwitches - 1 )
print "num_switches for %s(%d,%d) = %d and links=%d" %\
( topoType, depth, fanout, numSwitches, numLinks )
- topoDict = {}
- topoDict = {
- "num_switches": int( numSwitches ),
- "num_corelinks": int( numLinks ) }
+ topoDict = { "num_switches": int( numSwitches ),
+ "num_corelinks": int( numLinks ) }
return topoDict
def calculateSwAndLinks( self ):
@@ -397,6 +391,7 @@
main.log.error( self.name + ": Connection failed to the host" )
def verifySSH( self, **connectargs ):
+ # FIXME: Who uses this and what is the purpose? seems very specific
try:
response = self.execute(
cmd="h1 /usr/sbin/sshd -D&",
@@ -437,17 +432,16 @@
if self.handle:
try:
# Bring link between oldSw-host down
- cmd = "py net.configLinkStatus('" + oldSw + "'," + "'" + host + "'," +\
- "'down')"
+ cmd = "py net.configLinkStatus('" + oldSw + "'," + "'"+ host +\
+ "'," + "'down')"
print "cmd1= ", cmd
- response = self.execute(
- cmd=cmd,
- prompt="mininet>",
- timeout=10 )
+ response = self.execute( cmd=cmd,
+ prompt="mininet>",
+ timeout=10 )
# Determine hostintf and Oldswitchintf
cmd = "px hintf,sintf = " + host + ".connectionsTo(" + oldSw +\
- ")[0]"
+ ")[0]"
print "cmd2= ", cmd
self.handle.sendline( cmd )
self.handle.expect( "mininet>" )
@@ -477,7 +471,7 @@
# Determine hostintf and Newswitchintf
cmd = "px hintf,sintf = " + host + ".connectionsTo(" + newSw +\
- ")[0]"
+ ")[0]"
print "cmd6= ", cmd
self.handle.sendline( cmd )
self.handle.expect( "mininet>" )
@@ -566,7 +560,7 @@
def addStaticMACAddress( self, host, GW, macaddr ):
"""
- Changes the mac address of a geateway host"""
+ Changes the mac address of a gateway host"""
if self.handle:
try:
# h1 arp -s 10.0.1.254 00:00:00:00:11:11
@@ -576,7 +570,7 @@
response = self.handle.before
main.log.info( "response = " + response )
main.log.info(
- "Mac adrress of gateway " +
+ "Mac address of gateway " +
GW +
" changed to " +
macaddr )
@@ -805,7 +799,7 @@
self.handle.expect( "mininet>" )
response = self.handle.before
if re.search( 'Results:', response ):
- main.log.info( self.name + ": iperf test succssful" )
+ main.log.info( self.name + ": iperf test successful" )
return main.TRUE
else:
main.log.error( self.name + ": iperf test failed" )
@@ -1034,10 +1028,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":" * 50 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 50 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1065,10 +1057,10 @@
dynamic_topo branch
NOTE: cannot currently specify what type of switch
required params:
- switchname = name of the new switch as a string
- optional keyvalues:
+ sw = name of the new switch as a string
+ optional keywords:
dpid = "dpid"
- returns: main.FASLE on an error, else main.TRUE
+ returns: main.FALSE on an error, else main.TRUE
"""
dpid = kwargs.get( 'dpid', '' )
command = "addswitch " + str( sw ) + " " + str( dpid )
@@ -1100,8 +1092,8 @@
NOTE: This uses a custom mn function. MN repo should be on
dynamic_topo branch
required params:
- switchname = name of the switch as a string
- returns: main.FASLE on an error, else main.TRUE"""
+ sw = name of the switch as a string
+ returns: main.FALSE on an error, else main.TRUE"""
command = "delswitch " + str( sw )
try:
response = self.execute(
@@ -1134,7 +1126,7 @@
required params:
node1 = the string node name of the first endpoint of the link
node2 = the string node name of the second endpoint of the link
- returns: main.FASLE on an error, else main.TRUE"""
+ returns: main.FALSE on an error, else main.TRUE"""
command = "addlink " + str( node1 ) + " " + str( node2 )
try:
response = self.execute(
@@ -1166,7 +1158,7 @@
required params:
node1 = the string node name of the first endpoint of the link
node2 = the string node name of the second endpoint of the link
- returns: main.FASLE on an error, else main.TRUE"""
+ returns: main.FALSE on an error, else main.TRUE"""
command = "dellink " + str( node1 ) + " " + str( node2 )
try:
response = self.execute(
@@ -1200,7 +1192,7 @@
hostname = the string hostname
optional key-value params
switch = "switch name"
- returns: main.FASLE on an error, else main.TRUE
+ returns: main.FALSE on an error, else main.TRUE
"""
switch = kwargs.get( 'switch', '' )
command = "addhost " + str( hostname ) + " " + str( switch )
@@ -1237,7 +1229,7 @@
NOTE: this uses a custom mn function
required params:
hostname = the string hostname
- returns: main.FASLE on an error, else main.TRUE"""
+ returns: main.FALSE on an error, else main.TRUE"""
command = "delhost " + str( hostname )
try:
response = self.execute(
@@ -1268,7 +1260,7 @@
"""
self.handle.sendline('')
i = self.handle.expect( [ 'mininet>', pexpect.EOF, pexpect.TIMEOUT ],
- timeout = 2)
+ timeout=2)
if i == 0:
self.stopNet()
elif i == 1:
@@ -1283,10 +1275,10 @@
main.log.error( "Connection failed to the host" )
return response
- def stopNet( self , timeout = 5):
+ def stopNet( self, timeout=5):
"""
Stops mininet.
- Returns main.TRUE if the mininet succesfully stops and
+ Returns main.TRUE if the mininet successfully stops and
main.FALSE if the pexpect handle does not exist.
Will cleanup and exit the test if mininet fails to stop
@@ -1332,8 +1324,6 @@
response = main.FALSE
return response
-
-
def arping( self, src, dest, destmac ):
self.handle.sendline( '' )
self.handle.expect( [ "mininet", pexpect.EOF, pexpect.TIMEOUT ] )
@@ -1344,7 +1334,7 @@
main.log.info( self.name + ": ARP successful" )
self.handle.expect( [ "mininet", pexpect.EOF, pexpect.TIMEOUT ] )
return main.TRUE
- except:
+ except Exception:
main.log.warn( self.name + ": ARP FAILURE" )
self.handle.expect( [ "mininet", pexpect.EOF, pexpect.TIMEOUT ] )
return main.FALSE
@@ -1395,12 +1385,10 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- else:
- main.log.info( response )
def startTcpdump( self, filename, intf="eth0", port="port 6633" ):
"""
- Runs tpdump on an intferface and saves the file
+ Runs tpdump on an interface and saves the file
intf can be specified, or the default eth0 is used"""
try:
self.handle.sendline( "" )
@@ -1450,15 +1438,14 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":" * 50 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 50 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def stopTcpdump( self ):
- "pkills tcpdump"
+ """
+ pkills tcpdump"""
try:
self.handle.sendline( "sh sudo pkill tcpdump" )
self.handle.expect( "mininet>" )
@@ -1469,10 +1456,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":" * 50 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 50 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1491,8 +1476,7 @@
ports = []
for port in switch.ports.values():
ports.append( { 'of_port': port.port_no,
- 'mac': str( port.hw_addr ).replace( '\'',
- '' ),
+ 'mac': str( port.hw_addr ).replace( '\'', '' ),
'name': port.name } )
output[ 'switches' ].append( {
"name": switch.name,
@@ -1573,17 +1557,15 @@
ports = []
for port in switch.ports.values():
# print port.hw_addr.toStr( separator='' )
- tmpPort = {}
- tmpPort[ 'of_port' ] = port.port_no
- tmpPort[ 'mac' ] = str( port.hw_addr ).replace( '\'', '' )
- tmpPort[ 'name' ] = port.name
- tmpPort[ 'enabled' ] = port.enabled
+ tmpPort = { 'of_port': port.port_no,
+ 'mac': str( port.hw_addr ).replace( '\'', '' ),
+ 'name': port.name,
+ 'enabled': port.enabled }
ports.append( tmpPort )
- tmpSwitch = {}
- tmpSwitch[ 'name' ] = switch.name
- tmpSwitch[ 'dpid' ] = str( switch.dpid ).zfill( 16 )
- tmpSwitch[ 'ports' ] = ports
+ tmpSwitch = { 'name': switch.name,
+ 'dpid': str( switch.dpid ).zfill( 16 ),
+ 'ports': ports }
output[ 'switches' ].append( tmpSwitch )
@@ -1664,8 +1646,7 @@
This uses the sts TestONTopology object"""
# FIXME: this does not look for extra links in ONOS, only checks that
- # ONOS has what is in MN
- linkResults = main.TRUE
+ # ONOS has what is in MN
output = { "switches": [] }
onos = linksJson
# iterate through the MN topology and pull out switches and and port
@@ -1677,8 +1658,7 @@
for port in switch.ports.values():
# print port.hw_addr.toStr( separator='' )
ports.append( { 'of_port': port.port_no,
- 'mac': str( port.hw_addr ).replace( '\'',
- '' ),
+ 'mac': str( port.hw_addr ).replace( '\'', '' ),
'name': port.name } )
output[ 'switches' ].append( {
"name": switch.name,
@@ -1754,7 +1734,7 @@
main.log.warn(
'The port numbers do not match for ' +
str( link ) +
- ' between ONOS and MN. When cheking ONOS for ' +
+ ' between ONOS and MN. When checking ONOS for ' +
'link %s/%s -> %s/%s' %
( node1,
port1,
@@ -1776,7 +1756,7 @@
main.log.warn(
'The port numbers do not match for ' +
str( link ) +
- ' between ONOS and MN. When cheking ONOS for ' +
+ ' between ONOS and MN. When checking ONOS for ' +
'link %s/%s -> %s/%s' %
( node2,
port2,
@@ -1856,13 +1836,6 @@
indent=4,
separators=( ',', ': ' ) )
main.log.info( output )
- # DEBUG
- main.log.debug( "mn hosts" )
- for h in hosts:
- main.log.debug( h )
- main.log.debug( "onos hosts" )
- main.log.debug( hostsJson )
- # /DEBUG
return hostResults
def getHosts( self ):
@@ -1894,7 +1867,7 @@
updates the port address and status information for
each port in mn"""
# TODO: Add error checking. currently the mininet command has no output
- main.log.info( "Updateing MN port information" )
+ main.log.info( "Updating MN port information" )
try:
self.handle.sendline( "" )
self.handle.expect( "mininet>" )
diff --git a/TestON/drivers/common/cli/emulator/remotemininetdriver.py b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
index 9c9585a..8e445a9 100644
--- a/TestON/drivers/common/cli/emulator/remotemininetdriver.py
+++ b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
@@ -21,7 +21,6 @@
MininetCliDriver is the basic driver which will handle the Mininet functions
"""
-import traceback
import pexpect
import re
import sys
@@ -40,6 +39,7 @@
def __init__( self ):
super( Emulator, self ).__init__()
self.handle = self
+ self.name = None
self.wrapped = sys.modules[ __name__ ]
self.flag = 0
@@ -59,8 +59,6 @@
port=None,
pwd=self.pwd )
- self.sshHandle = self.handle
-
# Copying the readme file to process the
if self.handle:
return main.TRUE
@@ -99,7 +97,7 @@
def pingLong( self, **pingParams ):
"""
- Starts a continuous ping on the mininet host outputing
+ Starts a continuous ping on the mininet host outputting
to a file in the /tmp dir.
"""
self.handle.sendline( "" )
@@ -109,8 +107,9 @@
precmd = "sudo rm /tmp/ping." + args[ "SRC" ]
self.execute( cmd=precmd, prompt="(.*)", timeout=10 )
command = "sudo mininet/util/m " + args[ "SRC" ] + " ping " +\
- args[ "TARGET" ] + " -i .2 -w " + str( args[ 'PINGTIME' ] ) +\
- " -D > /tmp/ping." + args[ "SRC" ] + " &"
+ args[ "TARGET" ] + " -i .2 -w " +\
+ str( args[ 'PINGTIME' ] ) + " -D > /tmp/ping." +\
+ args[ "SRC" ] + " &"
main.log.info( command )
self.execute( cmd=command, prompt="(.*)", timeout=10 )
self.handle.sendline( "" )
@@ -182,7 +181,7 @@
def pingHostOptical( self, **pingParams ):
"""
- This function is only for Packey Optical related ping
+ This function is only for Packet Optical related ping
Use the next pingHost() function for all normal scenarios )
Ping from one mininet host to another
Currently the only supported Params: SRC and TARGET
@@ -281,7 +280,7 @@
port="port 6633",
user="admin" ):
"""
- Runs tpdump on an intferface and saves the file
+ Runs tcpdump on an interface and saves the file
intf can be specified, or the default eth0 is used
"""
try:
@@ -323,16 +322,14 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info(
- self.name + ":" * 60 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 80 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def stopTcpdump( self ):
- "pkills tcpdump"
+ """
+ pkills tcpdump"""
try:
self.handle.sendline( "sudo pkill tcpdump" )
self.handle.sendline( "" )
@@ -342,11 +339,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info(
- self.name + ":" * 60 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 80 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -376,9 +370,9 @@
if self.handle:
# Close the ssh connection
self.handle.sendline( "" )
- #self.handle.expect( "\$" )
+ # self.handle.expect( "\$" )
i = self.handle.expect( [ '\$', 'mininet>', pexpect.TIMEOUT ],
- timeout = 2)
+ timeout=2)
if i == 0:
self.handle.sendline( "exit" )
self.handle.expect( "closed" )
@@ -397,7 +391,7 @@
def getFlowTable( self, protoVersion, sw ):
"""
TODO document usage
- TODO add option to look at cookies. ignoreing them for now
+ TODO add option to look at cookies. ignoring them for now
print "get_flowTable(" + str( protoVersion ) +" " + str( sw ) +")"
NOTE: Use format to force consistent flow table output across
@@ -570,7 +564,7 @@
str( rule ) )
infoString = "Rules added to " + str( self.name )
- infoString += "iptable rule added to block IP: " + \
+ infoString += "iptables rule added to block IP: " + \
str( dstIp )
infoString += "Port: " + \
str( dstPort ) + " Rule: " + str( rule )
@@ -583,8 +577,9 @@
main.log.error(
self.name +
": Timeout exception in setIpTables function" )
- except:
- main.log.error( traceback.print_exc() )
+ except Exception:
+ main.log.exception( self.name +
+ ": Uncaught exception!" )
main.cleanup()
main.exit()
else:
@@ -596,6 +591,7 @@
if actionType == 'remove':
# -D is the 'delete' rule of iptables
actionRemove = '-D'
+ # noinspection PyBroadException
try:
self.handle.sendline( "" )
# Delete a specific rule specified into the function
@@ -626,8 +622,9 @@
main.log.error(
self.name +
": Timeout exception in setIpTables function" )
- except:
- main.log.error( traceback.print_exc() )
+ except Exception:
+ main.log.exception( self.name +
+ ": Uncaught exception!" )
main.cleanup()
main.exit()
else:
diff --git a/TestON/drivers/common/cli/emulatordriver.py b/TestON/drivers/common/cli/emulatordriver.py
index bb8da7c..778a32b 100644
--- a/TestON/drivers/common/cli/emulatordriver.py
+++ b/TestON/drivers/common/cli/emulatordriver.py
@@ -19,12 +19,6 @@
"""
-import pexpect
-import struct
-import fcntl
-import os
-import sys
-import signal
import sys
sys.path.append( "../" )
from drivers.common.clidriver import CLI
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index d6702c7..7146211 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -31,6 +31,9 @@
"""
Initialize client
"""
+ self.name = None
+ self.home = None
+ self.handle = None
super( CLI, self ).__init__()
def connect( self, **connectargs ):
@@ -71,7 +74,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -81,6 +84,7 @@
Called when Test is complete to disconnect the ONOS handle.
"""
response = main.TRUE
+ # noinspection PyBroadException
try:
self.logout()
self.handle.sendline( "" )
@@ -93,7 +97,7 @@
except pexpect.EOF:
main.log.error( self.name + ": EOF exception found" )
main.log.error( self.name + ": " + self.handle.before )
- except:
+ except Exception:
main.log.exception( self.name + ": Connection failed to the host" )
response = main.FALSE
return response
@@ -122,7 +126,7 @@
self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -164,14 +168,14 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def startOnosCli( self, ONOSIp, karafTimeout="" ):
"""
- karafTimeout is an optional arugument. karafTimeout value passed
+ karafTimeout is an optional argument. karafTimeout value passed
by user would be used to set the current karaf shell idle timeout.
Note that when ever this property is modified the shell will exit and
the subsequent login would reflect new idle timeout.
@@ -242,16 +246,16 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
- def log( self, cmdStr , level = "" ):
+ def log( self, cmdStr, level="" ):
"""
log the commands in the onos CLI.
returns main.TRUE on success
- returns main.FALSE if Error occured
+ returns main.FALSE if Error occurred
Available level: DEBUG, TRACE, INFO, WARN, ERROR
Level defaults to INFO
"""
@@ -275,7 +279,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -324,7 +328,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -345,6 +349,7 @@
Optional:
* tcpPort
"""
+ # noinspection PyBroadException
try:
cmdStr = "add-node " + str( nodeId ) + " " +\
str( ONOSIp ) + " " + str( tcpPort )
@@ -364,7 +369,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -392,7 +397,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -415,7 +420,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -423,7 +428,7 @@
def topology( self ):
"""
Shows the current state of the topology
- by issusing command: 'onos> onos:topology'
+ by issuing command: 'onos> onos:topology'
"""
try:
# either onos:topology or 'topology' will work in CLI
@@ -439,7 +444,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -464,7 +469,7 @@
main.log.report( "Exiting test" )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.log.report( "Failed to install feature" )
main.log.report( "Exiting test" )
@@ -484,7 +489,8 @@
self.sendline( cmdStr )
# TODO: Check for possible error responses from karaf
else:
- main.log.info( "Feature needs to be installed before uninstalling it" )
+ main.log.info( "Feature needs to be installed before " +
+ "uninstalling it" )
return main.TRUE
except TypeError:
main.log.exception( self.name + ": Object not as expected" )
@@ -494,7 +500,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -537,7 +543,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -561,7 +567,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -604,7 +610,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -627,7 +633,7 @@
escape sequences. In json.loads( somestring ), this somestring
variable is actually repr( somestring ) and json.loads would
fail with the escape sequence. So we take off that escape
- sequence using the following commads:
+ sequence using the following commands:
ansiEscape = re.compile( r'\r\r\n\x1b[^m]*m' )
handle1 = ansiEscape.sub( '', handle )
@@ -648,7 +654,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -694,7 +700,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -730,7 +736,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -760,7 +766,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -788,7 +794,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -831,7 +837,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -840,7 +846,7 @@
"""
Return the first host from the hosts api whose 'id' contains 'mac'
- Note: mac must be a colon seperated mac address, but could be a
+ Note: mac must be a colon separated mac address, but could be a
partial mac address
Return None if there is no match
@@ -868,7 +874,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -910,7 +916,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -921,7 +927,7 @@
* hostIdOne: ONOS host id for host1
* hostIdTwo: ONOS host id for host2
Description:
- Adds a host-to-host intent ( bidrectional ) by
+ Adds a host-to-host intent ( bidirectional ) by
specifying the two hosts.
Returns:
A string of the intent id or None on Error
@@ -950,7 +956,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -993,7 +999,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1041,8 +1047,6 @@
intent via cli
"""
try:
- cmd = ""
-
# If there are no optional arguments
if not ethType and not ethSrc and not ethDst\
and not bandwidth and not lambdaAlloc \
@@ -1125,7 +1129,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1180,12 +1184,10 @@
A string of the intent id or None on error
NOTE: This function may change depending on the
- options developers provide for multipointpoint-to-singlepoint
+ options developers provide for multipoint-to-singlepoint
intent via cli
"""
try:
- cmd = ""
-
# If there are no optional arguments
if not ethType and not ethSrc and not ethDst\
and not bandwidth and not lambdaAlloc\
@@ -1288,13 +1290,13 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
- def removeIntent( self, intentId, app = 'org.onosproject.cli',
- purge = False, sync = False ):
+ def removeIntent( self, intentId, app='org.onosproject.cli',
+ purge=False, sync=False ):
"""
Remove intent for specified application id and intent id
Optional args:-
@@ -1328,7 +1330,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1360,7 +1362,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1390,7 +1392,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1401,8 +1403,8 @@
Accepts a single intent ID (string type) or a list of intent IDs.
Returns the state(string type) of the id if a single intent ID is
accepted.
- Returns a dictionary with intent IDs as the key and its corresponding
- states as the values
+ Returns a dictionary with intent IDs as the key and its
+ corresponding states as the values
Parameters:
intentId: intent ID (string type)
intentsJson: parsed json object from the onos:intents api
@@ -1414,17 +1416,18 @@
try:
state = "State is Undefined"
if not intentsJson:
- intentsJsonTemp = json.loads(self.intents())
+ intentsJsonTemp = json.loads( self.intents() )
else:
- intentsJsonTemp = json.loads(intentsJson)
- if isinstance(intentsId,types.StringType):
+ intentsJsonTemp = json.loads( intentsJson )
+ if isinstance( intentsId, types.StringType ):
for intent in intentsJsonTemp:
if intentsId == intent['id']:
state = intent['state']
return state
- main.log.info("Cannot find intent ID" + str(intentsId) +" on the list")
+ main.log.info( "Cannot find intent ID" + str( intentsId ) +
+ " on the list" )
return state
- elif isinstance(intentsId,types.ListType):
+ elif isinstance( intentsId, types.ListType ):
dictList = []
for ID in intentsId:
stateDict = {}
@@ -1432,16 +1435,14 @@
if ID == intents['id']:
stateDict['state'] = intents['state']
stateDict['id'] = ID
- dictList.append(stateDict)
+ dictList.append( stateDict )
break
- if len(intentsId) != len(dictList):
- main.log.info("Cannot find some of the intent ID state")
+ if len( intentsId ) != len( dictList ):
+ main.log.info( "Cannot find some of the intent ID state" )
return dictList
else:
main.log.info("Invalid intents ID entry")
return None
- main.log.info("Something went wrong getting intent ID state")
- return None
except TypeError:
main.log.exception( self.name + ": Object not as expected" )
return None
@@ -1450,7 +1451,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1483,13 +1484,13 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def pushTestIntents( self, dpidSrc, dpidDst, numIntents,
- numMult="", appId="", report=True ):
+ numMult="", appId="", report=True ):
"""
Description:
Push a number of intents in a batch format to
@@ -1542,7 +1543,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1572,7 +1573,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1602,7 +1603,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1641,7 +1642,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1661,7 +1662,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1707,7 +1708,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1747,7 +1748,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1778,28 +1779,28 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def checkStatus( self, ip, numoswitch, numolink, logLevel="info" ):
"""
- Checks the number of swithes & links that ONOS sees against the
+ Checks the number of switches & links that ONOS sees against the
supplied values. By default this will report to main.log, but the
- log level can be specifid.
+ log level can be specified.
Params: ip = ip used for the onos cli
numoswitch = expected number of switches
- numlink = expected number of links
+ numolink = expected number of links
logLevel = level to log to. Currently accepts
'info', 'warn' and 'report'
logLevel can
- Returns: main.TRUE if the number of switchs and links are correct,
- main.FALSE if the numer of switches and links is incorrect,
+ Returns: main.TRUE if the number of switches and links are correct,
+ main.FALSE if the number of switches and links is incorrect,
and main.ERROR otherwise
"""
try:
@@ -1817,13 +1818,12 @@
linkCheck = ( int( links ) == int( numolink ) )
if ( switchCheck and linkCheck ):
# We expected the correct numbers
- output = output + "The number of links and switches match "\
- + "what was expected"
+ output += "The number of links and switches match " +\
+ "what was expected"
result = main.TRUE
else:
- output = output + \
- "The number of links and switches does not matc\
- h what was expected"
+ output += "The number of links and switches does not match " +\
+ "what was expected"
result = main.FALSE
output = output + "\n ONOS sees %i devices (%i expected) \
and %i links (%i expected)" % (
@@ -1844,7 +1844,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1887,7 +1887,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1930,7 +1930,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1982,7 +1982,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -2023,7 +2023,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -2064,7 +2064,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -2090,7 +2090,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -2116,7 +2116,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -2141,14 +2141,14 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def intentSummary( self ):
"""
- Returns a dictonary containing the current intent states and the count
+ Returns a dictionary containing the current intent states and the count
"""
try:
intents = self.intents( )
@@ -2166,7 +2166,7 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
+ except Exception:
main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 55a5c0e..30229ef 100644
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -19,7 +19,6 @@
import sys
import time
import pexpect
-import traceback
import os.path
sys.path.append( "../" )
from drivers.common.clidriver import CLI
@@ -31,6 +30,9 @@
"""
Initialize client
"""
+ self.name = None
+ self.home = None
+ self.handle = None
super( CLI, self ).__init__()
def connect( self, **connectargs ):
@@ -68,8 +70,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except Exception as e:
- main.log.exception( "Uncaught exception!" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -86,8 +88,8 @@
except pexpect.EOF:
main.log.error( self.name + ": EOF exception found" )
main.log.error( self.name + ": " + self.handle.before )
- except:
- main.log.error( self.name + ": Connection failed to the host" )
+ except Exception:
+ main.log.exception( self.name + ": Connection failed to the host" )
response = main.FALSE
return response
@@ -111,8 +113,8 @@
except pexpect.EOF:
main.log.error( self.name + ": EOF exception found" )
main.log.error( self.name + ": " + self.handle.before )
- except:
- main.log.error( "Failed to package ONOS" )
+ except Exception:
+ main.log.exception( "Failed to package ONOS" )
main.cleanup()
main.exit()
@@ -141,8 +143,8 @@
except pexpect.EOF:
main.log.error( self.name + ": EOF exception found" )
main.log.error( self.name + ": " + self.handle.before )
- except:
- main.log.error( "Failed to build ONOS" )
+ except Exception:
+ main.log.exception( "Failed to build ONOS" )
main.cleanup()
main.exit()
@@ -168,7 +170,7 @@
while True:
i = self.handle.expect( [
'There\sis\sinsufficient\smemory\sfor\sthe\sJava\s' +
- 'Runtime\sEnvironment\sto\scontinue',
+ 'Runtime\sEnvironment\sto\scontinue',
'BUILD\sFAILURE',
'BUILD\sSUCCESS',
'ONOS\$',
@@ -204,7 +206,7 @@
main.exit()
else:
main.log.error( self.name + ": unexpected response from " +
- "mvn clean install" )
+ "mvn clean install" )
# return main.FALSE
main.cleanup()
main.exit()
@@ -213,10 +215,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":" * 60 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 60 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -318,10 +318,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":" * 60 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 80 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -355,7 +353,7 @@
'Switched\sto\sbranch\s\'' + str( branch ),
pexpect.TIMEOUT,
'error: Your local changes to the following files' +
- 'would be overwritten by checkout:',
+ 'would be overwritten by checkout:',
'error: you need to resolve your current index first',
"You are in 'detached HEAD' state.",
"HEAD is now at " ],
@@ -440,17 +438,15 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":" * 60 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 80 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def getVersion( self, report=False ):
"""
Writes the COMMIT number to the report to be parsed
- by Jenkins data collecter.
+ by Jenkins data collector.
"""
try:
self.handle.sendline( "" )
@@ -490,15 +486,13 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":" * 60 )
- main.log.error( traceback.print_exc() )
- main.log.info( ":" * 80 )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def createCellFile( self, benchIp, fileName, mnIpAddrs,
- extraFeatureString, *onosIpAddrs ):
+ extraFeatureString, *onosIpAddrs ):
"""
Creates a cell file based on arguments
Required:
@@ -574,10 +568,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + ":::::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( ":::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -613,10 +605,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -650,10 +640,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -711,10 +699,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -766,10 +752,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -804,10 +788,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -842,10 +824,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -871,10 +851,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -904,10 +882,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -942,7 +918,7 @@
" not configured" )
return main.FALSE
else:
- main.log.info( "ONOS instasnce was not killed" )
+ main.log.info( "ONOS instance was not killed" )
return main.FALSE
except pexpect.EOF:
@@ -950,10 +926,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -987,10 +961,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1026,10 +998,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1060,10 +1030,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1124,10 +1092,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1172,10 +1138,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1186,21 +1150,21 @@
numolink,
logLevel="info" ):
"""
- Checks the number of swithes & links that ONOS sees against the
+ Checks the number of switches & links that ONOS sees against the
supplied values. By default this will report to main.log, but the
- log level can be specifid.
+ log level can be specific.
Params: ip = ip used for the onos cli
numoswitch = expected number of switches
- numlink = expected number of links
+ numolink = expected number of links
logLevel = level to log to.
Currently accepts 'info', 'warn' and 'report'
logLevel can
- Returns: main.TRUE if the number of switchs and links are correct,
- main.FALSE if the numer of switches and links is incorrect,
+ Returns: main.TRUE if the number of switches and links are correct,
+ main.FALSE if the number of switches and links is incorrect,
and main.ERROR otherwise
"""
try:
@@ -1216,7 +1180,7 @@
switchCheck = ( int( devices ) == int( numoswitch ) )
# Is the number of links is what we expected
linkCheck = ( int( links ) == int( numolink ) )
- if ( switchCheck and linkCheck ):
+ if switchCheck and linkCheck:
# We expected the correct numbers
output = output + "The number of links and switches match "\
+ "what was expected"
@@ -1226,8 +1190,8 @@
"The number of links and switches does not match " + \
"what was expected"
result = main.FALSE
- output = output + "\n ONOS sees %i devices" % int ( devices )
- output = output + " (%i expected) " % int( numoswitch )
+ output = output + "\n ONOS sees %i devices" % int( devices )
+ output = output + " (%i expected) " % int( numoswitch )
output = output + "and %i links " % int( links )
output = output + "(%i expected)" % int( numolink )
if logLevel == "report":
@@ -1242,10 +1206,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
@@ -1258,19 +1220,29 @@
* interface: interface to capture
* dir: directory/filename to store pcap
"""
- self.handle.sendline( "" )
- self.handle.expect( "\$" )
+ try:
+ self.handle.sendline( "" )
+ self.handle.expect( "\$" )
- self.handle.sendline( "tshark -i " + str( interface ) +
- " -t e -w " + str( dirFile ) + " &" )
- self.handle.sendline( "\r" )
- self.handle.expect( "Capturing on" )
- self.handle.sendline( "\r" )
- self.handle.expect( "\$" )
+ self.handle.sendline( "tshark -i " + str( interface ) +
+ " -t e -w " + str( dirFile ) + " &" )
+ self.handle.sendline( "\r" )
+ self.handle.expect( "Capturing on" )
+ self.handle.sendline( "\r" )
+ self.handle.expect( "\$" )
- main.log.info( "Tshark started capturing files on " +
- str( interface ) + " and saving to directory: " +
- str( dirFile ) )
+ main.log.info( "Tshark started capturing files on " +
+ str( interface ) + " and saving to directory: " +
+ str( dirFile ) )
+ except pexpect.EOF:
+ main.log.error( self.name + ": EOF exception found" )
+ main.log.error( self.name + ": " + self.handle.before )
+ main.cleanup()
+ main.exit()
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
def runOnosTopoCfg( self, instanceName, jsonFile ):
"""
@@ -1291,8 +1263,15 @@
self.handle.sendline( "cd ~" )
self.handle.expect( "\$" )
return main.TRUE
- except:
- return main.FALSE
+ except pexpect.EOF:
+ main.log.error( self.name + ": EOF exception found" )
+ main.log.error( self.name + ": " + self.handle.before )
+ main.cleanup()
+ main.exit()
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
def tsharkGrep( self, grep, directory, interface='eth0' ):
"""
@@ -1306,33 +1285,53 @@
and stores the results to specified directory.
The timestamp is hardcoded to be in epoch
"""
- self.handle.sendline( "" )
- self.handle.expect( "\$" )
- self.handle.sendline( "" )
- self.handle.sendline(
- "tshark -i " +
- str( interface ) +
- " -t e | grep --line-buffered \"" +
- str(grep) +
- "\" >" +
- directory +
- " &" )
- self.handle.sendline( "\r" )
- self.handle.expect( "Capturing on" )
- self.handle.sendline( "\r" )
- self.handle.expect( "\$" )
+ try:
+ self.handle.sendline( "" )
+ self.handle.expect( "\$" )
+ self.handle.sendline( "" )
+ self.handle.sendline(
+ "tshark -i " +
+ str( interface ) +
+ " -t e | grep --line-buffered \"" +
+ str(grep) +
+ "\" >" +
+ directory +
+ " &" )
+ self.handle.sendline( "\r" )
+ self.handle.expect( "Capturing on" )
+ self.handle.sendline( "\r" )
+ self.handle.expect( "\$" )
+ except pexpect.EOF:
+ main.log.error( self.name + ": EOF exception found" )
+ main.log.error( self.name + ": " + self.handle.before )
+ main.cleanup()
+ main.exit()
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
def tsharkStop( self ):
"""
Removes wireshark files from /tmp and kills all tshark processes
"""
# Remove all pcap from previous captures
- self.execute( cmd="sudo rm /tmp/wireshark*" )
- self.handle.sendline( "" )
- self.handle.sendline( "sudo kill -9 `ps -ef | grep \"tshark -i\" |" +
- " grep -v grep | awk '{print $2}'`" )
- self.handle.sendline( "" )
- main.log.info( "Tshark stopped" )
+ try:
+ self.execute( cmd="sudo rm /tmp/wireshark*" )
+ self.handle.sendline( "" )
+ self.handle.sendline( "sudo kill -9 `ps -ef | grep \"tshark -i\"" +
+ " | grep -v grep | awk '{print $2}'`" )
+ self.handle.sendline( "" )
+ main.log.info( "Tshark stopped" )
+ except pexpect.EOF:
+ main.log.error( self.name + ": EOF exception found" )
+ main.log.error( self.name + ": " + self.handle.before )
+ main.cleanup()
+ main.exit()
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
def ptpd( self, args ):
"""
@@ -1367,15 +1366,13 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def cpLogsToDir( self, logToCopy,
- destDir, copyFileName="" ):
+ destDir, copyFileName="" ):
"""
Copies logs to a desired directory.
Current implementation of ONOS deletes its karaf
@@ -1407,13 +1404,9 @@
destDir += "/"
if copyFileName:
- self.handle.sendline(
- "cp " +
- str( logToCopy ) +
- " " +
- str( destDir ) +
- str( copyFileName ) +
- localtime )
+ self.handle.sendline( "cp " + str( logToCopy ) + " " +
+ str( destDir ) + str( copyFileName ) +
+ localtime )
self.handle.expect( "cp" )
self.handle.expect( "\$" )
else:
@@ -1428,11 +1421,8 @@
main.log.error( "Copying files failed" )
main.log.error( self.name + ": EOF exception found" )
main.log.error( self.name + ": " + self.handle.before )
- except:
- main.log.error( "Copying files failed" )
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( "Copying files failed" )
def checkLogs( self, onosIp ):
"""
@@ -1450,11 +1440,10 @@
main.log.error( "Lost ssh connection" )
main.log.error( self.name + ": EOF exception found" )
main.log.error( self.name + ": " + self.handle.before )
- except:
- main.log.error( "Some error in check_logs:" )
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
+ main.cleanup()
+ main.exit()
def onosStatus( self, node="" ):
"""
@@ -1485,16 +1474,14 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.info( self.name + " ::::::" )
- main.log.error( traceback.print_exc() )
- main.log.info( self.name + " ::::::" )
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def setIpTables( self, ip, port='', action='add', packet_type='',
direction='INPUT', rule='DROP', states=True ):
- '''
+ """
Description:
add or remove iptables rule to DROP (default) packets from
specific IP and PORT
@@ -1516,7 +1503,7 @@
WARNING:
* This function uses root privilege iptables command which may result
in unwanted network errors. USE WITH CAUTION
- '''
+ """
import time
# NOTE*********
@@ -1593,16 +1580,16 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.exception( "Unknown error:")
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
def detailed_status(self, log_filename):
- '''
+ """
This method is used by STS to check the status of the controller
Reports RUNNING, STARTING, STOPPED, FROZEN, ERROR (and reason)
- '''
+ """
import re
try:
self.handle.sendline( "" )
@@ -1627,7 +1614,7 @@
# return 'FROZEN'
else:
main.log.warn( self.name +
- " WARNING: status recieved unknown response" )
+ " WARNING: status received unknown response" )
main.log.warn( response )
return 'ERROR', "Unknown response: %s" % response
except pexpect.TIMEOUT:
@@ -1639,8 +1626,8 @@
main.log.error( self.name + ": " + self.handle.before )
main.cleanup()
main.exit()
- except:
- main.log.exception( "Unknown error:")
+ except Exception:
+ main.log.exception( self.name + ": Uncaught exception!" )
main.cleanup()
main.exit()
diff --git a/TestON/drivers/common/cli/quaggaclidriver.py b/TestON/drivers/common/cli/quaggaclidriver.py
index 98f83d2..5631c9b 100644
--- a/TestON/drivers/common/cli/quaggaclidriver.py
+++ b/TestON/drivers/common/cli/quaggaclidriver.py
@@ -2,13 +2,7 @@
import time
import pexpect
-import struct
-import fcntl
-import os
import sys
-import signal
-import sys
-import re
import json
sys.path.append( "../" )
from drivers.common.clidriver import CLI
@@ -87,7 +81,7 @@
try:
self.handle.sendline( "" )
self.handle.expect( "bgpd#" )
- except:
+ except Exception:
main.log.warn( "Probably not currently in enable mode!" )
self.disconnect()
return main.FALSE
@@ -98,7 +92,7 @@
self.handle.sendline( routerAS )
self.handle.expect( "config-router", timeout=5 )
return main.TRUE
- except:
+ except Exception:
return main.FALSE
def generatePrefixes( self, net, numRoutes ):
@@ -335,7 +329,7 @@
self.handle.sendline( "" )
# self.handle.expect( "config-router" )
self.handle.expect( "config-router", timeout=5 )
- except:
+ except Exception:
main.log.warn( "Probably not in config-router mode!" )
self.disconnect()
main.log.info( "Start to add routes" )
@@ -345,7 +339,7 @@
try:
self.handle.sendline( routeCmd )
self.handle.expect( "bgpd", timeout=5 )
- except:
+ except Exception:
main.log.warn( "Failed to add route" )
self.disconnect()
# waitTimer = 1.00 / routeRate
@@ -363,7 +357,7 @@
self.handle.sendline( "" )
# self.handle.expect( "config-router" )
self.handle.expect( "config-router", timeout=5 )
- except:
+ except Exception:
main.log.warn( "Probably not in config-router mode!" )
self.disconnect()
main.log.info( "Start to delete routes" )
@@ -373,7 +367,7 @@
try:
self.handle.sendline( routeCmd )
self.handle.expect( "bgpd", timeout=5 )
- except:
+ except Exception:
main.log.warn( "Failed to delete route" )
self.disconnect()
# waitTimer = 1.00 / routeRate
@@ -417,7 +411,7 @@
try:
self.handle.sendline( "" )
self.handle.expect( "config-router" )
- except:
+ except Exception:
main.log.warn( "Probably not in config-router mode!" )
self.disconnect()
main.log.info( "Adding Routes" )
@@ -438,7 +432,7 @@
try:
self.handle.sendline( routeCmd )
self.handle.expect( "bgpd" )
- except:
+ except Exception:
main.log.warn( "failed to add route" )
self.disconnect()
waitTimer = 1.00 / routeRate
@@ -452,9 +446,9 @@
try:
self.handle.sendline( routeCmd )
self.handle.expect( "bgpd" )
- except:
+ except Exception:
main.log.warn( "failed to add route" )
- self.disconnect
+ self.disconnect()
waitTimer = 1.00 / routeRate
time.sleep( waitTimer )
routesAdded = routesAdded + 1
@@ -467,7 +461,7 @@
try:
self.handle.sendline( "" )
self.handle.expect( "config-router" )
- except:
+ except Exception:
main.log.warn( "Probably not in config-router mode!" )
self.disconnect()
main.log.info( "Deleting Routes" )
@@ -488,7 +482,7 @@
try:
self.handle.sendline( routeCmd )
self.handle.expect( "bgpd" )
- except:
+ except Exception:
main.log.warn( "Failed to delete route" )
self.disconnect()
waitTimer = 1.00 / routeRate
@@ -502,7 +496,7 @@
try:
self.handle.sendline( routeCmd )
self.handle.expect( "bgpd" )
- except:
+ except Exception:
main.log.warn( "Failed to delete route" )
self.disconnect()
waitTimer = 1.00 / routeRate
@@ -578,7 +572,7 @@
response = ''
try:
self.handle.close()
- except:
+ except Exception:
main.log.error( "Connection failed to the host" )
response = main.FALSE
return response
diff --git a/TestON/tests/HATestClusterRestart/HATestClusterRestart.py b/TestON/tests/HATestClusterRestart/HATestClusterRestart.py
index 473c6fe..6655f33 100644
--- a/TestON/tests/HATestClusterRestart/HATestClusterRestart.py
+++ b/TestON/tests/HATestClusterRestart/HATestClusterRestart.py
@@ -245,7 +245,7 @@
response = main.Mininet1.getSwController( "s" + str( i ) )
try:
main.log.info( str( response ) )
- except:
+ except Exception:
main.log.info( repr( response ) )
if re.search( "tcp:" + ONOS1Ip, response )\
and re.search( "tcp:" + ONOS2Ip, response )\
@@ -1556,7 +1556,7 @@
print json.dumps( json.loads( ONOS1Intents ),
sort_keys=True, indent=4,
separators=( ',', ': ' ) )
- except:
+ except Exception:
pass
sameIntents = main.FALSE
utilities.assert_equals(
diff --git a/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py b/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py
index b1c0f77..3e7de57 100644
--- a/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py
+++ b/TestON/tests/HATestMinorityRestart/HATestMinorityRestart.py
@@ -245,7 +245,7 @@
response = main.Mininet1.getSwController( "s" + str( i ) )
try:
main.log.info( str( response ) )
- except:
+ except Exception:
main.log.info( repr( response ) )
if re.search( "tcp:" + ONOS1Ip, response )\
and re.search( "tcp:" + ONOS2Ip, response )\
@@ -1330,6 +1330,7 @@
Check state after ONOS failure
"""
import json
+ import time
main.case( "Running ONOS Constant State Tests" )
# Assert that each device has a master
@@ -1545,7 +1546,7 @@
print json.dumps( json.loads( ONOS1Intents ),
sort_keys=True, indent=4,
separators=( ',', ': ' ) )
- except:
+ except Exception:
pass
sameIntents = main.FALSE
utilities.assert_equals(
diff --git a/TestON/tests/HATestSanity/HATestSanity.py b/TestON/tests/HATestSanity/HATestSanity.py
index fccbace..9ba287d 100644
--- a/TestON/tests/HATestSanity/HATestSanity.py
+++ b/TestON/tests/HATestSanity/HATestSanity.py
@@ -245,7 +245,7 @@
response = main.Mininet1.getSwController( "s" + str( i ) )
try:
main.log.info( str( response ) )
- except:
+ except Exception:
main.log.info( repr( response ) )
if re.search( "tcp:" + ONOS1Ip, response )\
and re.search( "tcp:" + ONOS2Ip, response )\
@@ -1520,7 +1520,7 @@
print json.dumps( json.loads( ONOS1Intents ),
sort_keys=True, indent=4,
separators=( ',', ': ' ) )
- except:
+ except Exception:
pass
sameIntents = main.FALSE
utilities.assert_equals(
diff --git a/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py b/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py
index fef844a..9d9a3fa 100644
--- a/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py
+++ b/TestON/tests/HATestSingleInstanceRestart/HATestSingleInstanceRestart.py
@@ -182,7 +182,7 @@
response = main.Mininet1.getSwController( "s" + str( i ) )
try:
main.log.info( str( response ) )
- except:
+ except Exception:
main.log.info( repr( response ) )
if re.search( "tcp:" + ONOS1Ip, response ):
mastershipCheck = mastershipCheck and main.TRUE
@@ -200,10 +200,10 @@
"""
Assign intents
"""
- # FIXME: we must reinstall intents until we have a persistant
- # datastore!
import time
import json
+ # FIXME: we must reinstall intents until we have a persistant
+ # datastore!
main.log.report( "Adding host intents" )
main.case( "Adding host Intents" )
@@ -650,8 +650,9 @@
utilities.assert_equals( expect=main.TRUE, actual=caseResults,
onpass="ONOS restart successful",
onfail="ONOS restart NOT successful" )
- main.log.info( "ESTIMATE: ONOS took %s seconds to restart" %
- str( elapsed ) )
+ if elapsed:
+ main.log.info( "ESTIMATE: ONOS took %s seconds to restart" %
+ str( elapsed ) )
time.sleep( 5 )
def CASE7( self, main ):
@@ -760,7 +761,7 @@
print json.dumps( json.loads( ONOS1Intents ),
sort_keys=True, indent=4,
separators=( ',', ': ' ) )
- except:
+ except Exception:
pass
sameIntents = main.FALSE
utilities.assert_equals(
diff --git a/TestON/tests/IntentPerfNext/__init__.py b/TestON/tests/IntentPerfNext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/IntentPerfNext/__init__.py
diff --git a/TestON/tests/LincOETest/__init__.py b/TestON/tests/LincOETest/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/LincOETest/__init__.py
diff --git a/TestON/tests/MultiProd/MultiProd.bak b/TestON/tests/MultiProd/MultiProd.bak
deleted file mode 100755
index 11af10b..0000000
--- a/TestON/tests/MultiProd/MultiProd.bak
+++ /dev/null
@@ -1,1156 +0,0 @@
-
-#Testing the basic functionality of ONOS Next
-#For sanity and driver functionality excercises only.
-
-import time
-import time
-import json
-
-time.sleep(1)
-class MultiProd:
- def __init__(self):
- self.default = ''
-
- def CASE1(self, main):
- '''
- Startup sequence:
- cell <name>
- onos-verify-cell
- onos-remove-raft-logs
- git pull
- mvn clean install
- onos-package
- onos-install -f
- onos-wait-for-start
- '''
-
- cell_name = main.params['ENV']['cellName']
- ONOS1_ip = main.params['CTRL']['ip1']
- ONOS2_ip = main.params['CTRL']['ip2']
- ONOS3_ip = main.params['CTRL']['ip3']
-
- main.case("Setting up test environment")
- main.log.report("This testcase is testing setting up test environment")
- main.log.report("__________________________________")
-
- main.step("Applying cell variable to environment")
- cell_result1 = main.ONOSbench.set_cell(cell_name)
- #cell_result2 = main.ONOScli1.set_cell(cell_name)
- #cell_result3 = main.ONOScli2.set_cell(cell_name)
- #cell_result4 = main.ONOScli3.set_cell(cell_name)
- verify_result = main.ONOSbench.verify_cell()
- cell_result = cell_result1
-
- main.step("Removing raft logs before a clen installation of ONOS")
- remove_log_Result = main.ONOSbench.onos_remove_raft_logs()
-
- main.step("Git checkout and pull master and get version")
- main.ONOSbench.git_checkout("master")
- git_pull_result = main.ONOSbench.git_pull()
- print "git_pull_result = ", git_pull_result
- main.ONOSbench.get_version(report=True)
-
- if git_pull_result == 1:
- main.step("Using mvn clean & install")
- main.ONOSbench.clean_install()
-
- main.step("Creating ONOS package")
- package_result = main.ONOSbench.onos_package()
-
- #main.step("Creating a cell")
- #cell_create_result = main.ONOSbench.create_cell_file(**************)
-
- main.step("Installing ONOS package")
- onos1_install_result = main.ONOSbench.onos_install(options="-f", node=ONOS1_ip)
- onos2_install_result = main.ONOSbench.onos_install(options="-f", node=ONOS2_ip)
- onos3_install_result = main.ONOSbench.onos_install(options="-f", node=ONOS3_ip)
- onos_install_result = onos1_install_result and onos2_install_result and onos3_install_result
- if onos_install_result == main.TRUE:
- main.log.report("Installing ONOS package successful")
- else:
- main.log.report("Installing ONOS package failed")
-
- onos1_isup = main.ONOSbench.isup(ONOS1_ip)
- onos2_isup = main.ONOSbench.isup(ONOS2_ip)
- onos3_isup = main.ONOSbench.isup(ONOS3_ip)
- onos_isup = onos1_isup and onos2_isup and onos3_isup
- if onos_isup == main.TRUE:
- main.log.report("ONOS instances are up and ready")
- else:
- main.log.report("ONOS instances may not be up")
-
- main.step("Starting ONOS service")
- start_result = main.TRUE
- #start_result = main.ONOSbench.onos_start(ONOS1_ip)
- startcli1 = main.ONOScli1.start_onos_cli(ONOS_ip = ONOS1_ip)
- startcli2 = main.ONOScli2.start_onos_cli(ONOS_ip = ONOS2_ip)
- startcli3 = main.ONOScli3.start_onos_cli(ONOS_ip = ONOS3_ip)
- print startcli1
- print startcli2
- print startcli3
-
- case1_result = (package_result and\
- cell_result and verify_result and onos_install_result and\
- onos_isup and start_result )
- utilities.assert_equals(expect=main.TRUE, actual=case1_result,
- onpass="Test startup successful",
- onfail="Test startup NOT successful")
-
- def CASE11(self, main):
- '''
- Cleanup sequence:
- onos-service <node_ip> stop
- onos-uninstall
-
- TODO: Define rest of cleanup
-
- '''
-
- ONOS1_ip = main.params['CTRL']['ip1']
- ONOS2_ip = main.params['CTRL']['ip2']
- ONOS3_ip = main.params['CTRL']['ip3']
-
- main.case("Cleaning up test environment")
-
- main.step("Testing ONOS kill function")
- kill_result1 = main.ONOSbench.onos_kill(ONOS1_ip)
- kill_result2 = main.ONOSbench.onos_kill(ONOS2_ip)
- kill_result3 = main.ONOSbench.onos_kill(ONOS3_ip)
-
- main.step("Stopping ONOS service")
- stop_result1 = main.ONOSbench.onos_stop(ONOS1_ip)
- stop_result2 = main.ONOSbench.onos_stop(ONOS2_ip)
- stop_result3 = main.ONOSbench.onos_stop(ONOS3_ip)
-
- main.step("Uninstalling ONOS service")
- uninstall_result = main.ONOSbench.onos_uninstall()
-
- def CASE3(self, main):
- '''
- Test 'onos' command and its functionality in driver
- '''
-
- ONOS1_ip = main.params['CTRL']['ip1']
- ONOS2_ip = main.params['CTRL']['ip2']
- ONOS3_ip = main.params['CTRL']['ip3']
-
- main.case("Testing 'onos' command")
-
- main.step("Sending command 'onos -w <onos-ip> system:name'")
- cmdstr1 = "system:name"
- cmd_result1 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr1)
- main.log.info("onos command returned: "+cmd_result1)
- cmd_result2 = main.ONOSbench.onos_cli(ONOS2_ip, cmdstr1)
- main.log.info("onos command returned: "+cmd_result2)
- cmd_result3 = main.ONOSbench.onos_cli(ONOS3_ip, cmdstr1)
- main.log.info("onos command returned: "+cmd_result3)
-
- main.step("Sending command 'onos -w <onos-ip> onos:topology'")
- cmdstr2 = "onos:topology"
- cmd_result4 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr2)
- main.log.info("onos command returned: "+cmd_result4)
- cmd_result5 = main.ONOSbench.onos_cli(ONOS2_ip, cmdstr2)
- main.log.info("onos command returned: "+cmd_result5)
- cmd_result6 = main.ONOSbench.onos_cli(ONOS6_ip, cmdstr2)
- main.log.info("onos command returned: "+cmd_result6)
-
-
- def CASE4(self, main):
- import re
- import time
- ONOS1_ip = main.params['CTRL']['ip1']
- ONOS2_ip = main.params['CTRL']['ip2']
- ONOS3_ip = main.params['CTRL']['ip3']
- ONOS1_port = main.params['CTRL']['port1']
- ONOS2_port = main.params['CTRL']['port2']
- ONOS3_port = main.params['CTRL']['port3']
-
- main.log.report("This testcase is testing the assignment of all the switches to all controllers and discovering the hosts in reactive mode")
- main.log.report("__________________________________")
- main.case("Pingall Test(No intents are added)")
- main.step("Assigning switches to controllers")
- for i in range(1,29): #1 to (num of switches +1)
- main.Mininet1.assign_sw_controller(sw=str(i),count=3,
- ip1=ONOS1_ip, port1=ONOS1_port,
- ip2=ONOS2_ip, port2=ONOS2_port,
- ip3=ONOS3_ip, port3=ONOS3_port)
-
- switch_mastership = main.TRUE
- for i in range (1,29):
- response = main.Mininet1.get_sw_controller("s"+str(i))
- print("Response is " + str(response))
- if re.search("tcp:"+ONOS1_ip,response):
- switch_mastership = switch_mastership and main.TRUE
- else:
- switch_mastership = main.FALSE
-
- if switch_mastership == main.TRUE:
- main.log.report("Controller assignment successfull")
- else:
- main.log.report("Controller assignment failed")
- #REACTIVE FWD test
- main.step("Pingall")
- ping_result = main.FALSE
- time1 = time.time()
- ping_result = main.Mininet1.pingall()
- time2 = time.time()
- print "Time for pingall: %2f seconds" % (time2 - time1)
-
- case4_result = switch_mastership and ping_result
- if ping_result == main.TRUE:
- main.log.report("Pingall Test in reactive mode to discover the hosts successful")
- else:
- main.log.report("Pingall Test in reactive mode to discover the hosts failed")
-
- utilities.assert_equals(expect=main.TRUE, actual=case4_result,onpass="Controller assignment and Pingall Test successful",onfail="Controller assignment and Pingall Test NOT successful")
-
-
-
- def CASE5(self,main) :
- import json
- from subprocess import Popen, PIPE
- from sts.topology.teston_topology import TestONTopology # assumes that sts is already in you PYTHONPATH
- ONOS1_ip = main.params['CTRL']['ip1']
- ONOS2_ip = main.params['CTRL']['ip2']
- ONOS3_ip = main.params['CTRL']['ip3']
-
- main.log.report("This testcase is testing if all ONOS nodes are in topology sync with mininet and its peer ONOS nodes")
- main.log.report("__________________________________")
- main.case ("Testing Mininet topology with the topology of multi instances ONOS")
- main.step("Collecting topology information from ONOS")
- devices1 = main.ONOScli1.devices()
- devices2 = main.ONOScli2.devices()
- devices3 = main.ONOScli3.devices()
- #print "devices1 = ", devices1
- #print "devices2 = ", devices2
- #print "devices3 = ", devices3
- hosts1 = main.ONOScli1.hosts()
- hosts2 = main.ONOScli2.hosts()
- hosts3 = main.ONOScli3.hosts()
- #print "hosts1 = ", hosts1
- #print "hosts2 = ", hosts2
- #print "hosts3 = ", hosts3
- ports1 = main.ONOScli1.ports()
- ports2 = main.ONOScli2.ports()
- ports3 = main.ONOScli3.ports()
- #print "ports1 = ", ports1
- #print "ports2 = ", ports2
- #print "ports3 = ", ports3
- links1 = main.ONOScli1.links()
- links2 = main.ONOScli2.links()
- links3 = main.ONOScli3.links()
- #print "links1 = ", links1
- #print "links2 = ", links2
- #print "links3 = ", links3
-
- print "**************"
-
- main.step("Start continuous pings")
- main.Mininet2.pingLong(src=main.params['PING']['source1'],
- target=main.params['PING']['target1'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source2'],
- target=main.params['PING']['target2'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source3'],
- target=main.params['PING']['target3'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source4'],
- target=main.params['PING']['target4'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source5'],
- target=main.params['PING']['target5'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source6'],
- target=main.params['PING']['target6'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source7'],
- target=main.params['PING']['target7'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source8'],
- target=main.params['PING']['target8'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source9'],
- target=main.params['PING']['target9'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source10'],
- target=main.params['PING']['target10'],pingTime=500)
-
- main.step("Create TestONTopology object")
- global ctrls
- ctrls = []
- count = 1
- while True:
- temp = ()
- if ('ip' + str(count)) in main.params['CTRL']:
- temp = temp + (getattr(main,('ONOS' + str(count))),)
- temp = temp + ("ONOS"+str(count),)
- temp = temp + (main.params['CTRL']['ip'+str(count)],)
- temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
- ctrls.append(temp)
- count = count + 1
- else:
- break
- global MNTopo
- Topo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
- MNTopo = Topo
-
- Topology_Check = main.TRUE
- main.step("Compare ONOS Topology to MN Topology")
-
- switches_results1 = main.Mininet1.compare_switches(MNTopo, json.loads(devices1))
- print "switches_Result1 = ", switches_results1
- utilities.assert_equals(expect=main.TRUE, actual=switches_results1,
- onpass="ONOS1 Switches view is correct",
- onfail="ONOS1 Switches view is incorrect")
-
- switches_results2 = main.Mininet1.compare_switches(MNTopo, json.loads(devices2))
- utilities.assert_equals(expect=main.TRUE, actual=switches_results2,
- onpass="ONOS2 Switches view is correct",
- onfail="ONOS2 Switches view is incorrect")
-
- switches_results3 = main.Mininet1.compare_switches(MNTopo, json.loads(devices3))
- utilities.assert_equals(expect=main.TRUE, actual=switches_results3,
- onpass="ONOS3 Switches view is correct",
- onfail="ONOS3 Switches view is incorrect")
-
- '''
- ports_results1 = main.Mininet1.compare_ports(MNTopo, json.loads(ports1))
- utilities.assert_equals(expect=main.TRUE, actual=ports_results1,
- onpass="ONOS1 Ports view is correct",
- onfail="ONOS1 Ports view is incorrect")
-
- ports_results2 = main.Mininet1.compare_ports(MNTopo, json.loads(ports2))
- utilities.assert_equals(expect=main.TRUE, actual=ports_results2,
- onpass="ONOS2 Ports view is correct",
- onfail="ONOS2 Ports view is incorrect")
-
- ports_results3 = main.Mininet1.compare_ports(MNTopo, json.loads(ports3))
- utilities.assert_equals(expect=main.TRUE, actual=ports_results3,
- onpass="ONOS3 Ports view is correct",
- onfail="ONOS3 Ports view is incorrect")
- '''
-
- links_results1 = main.Mininet1.compare_links(MNTopo, json.loads(links1))
- utilities.assert_equals(expect=main.TRUE, actual=links_results1,
- onpass="ONOS1 Links view is correct",
- onfail="ONOS1 Links view is incorrect")
-
- links_results2 = main.Mininet1.compare_links(MNTopo, json.loads(links2))
- utilities.assert_equals(expect=main.TRUE, actual=links_results2,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect")
-
- links_results3 = main.Mininet1.compare_links(MNTopo, json.loads(links3))
- utilities.assert_equals(expect=main.TRUE, actual=links_results3,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect")
-
- #topo_result = switches_results1 and switches_results2 and switches_results3\
- #and ports_results1 and ports_results2 and ports_results3\
- #and links_results1 and links_results2 and links_results3
-
- topo_result = switches_results1 and switches_results2 and switches_results3\
- and links_results1 and links_results2 and links_results3
-
- if topo_result == main.TRUE:
- main.log.report("Topology Check Test with mininet and ONOS instances successful")
- else:
- main.log.report("Topology Check Test with mininet and ONOS instances failed")
-
- utilities.assert_equals(expect=main.TRUE, actual=topo_result,
- onpass="Topology Check Test successful",
- onfail="Topology Check Test NOT successful")
-
-
-
-
- def CASE10(self):
- main.log.report("This testcase uninstalls the reactive forwarding app")
- main.log.report("__________________________________")
- main.case("Uninstalling reactive forwarding app")
- #Unistall onos-app-fwd app to disable reactive forwarding
- appUninstall_result1 = main.ONOScli1.feature_uninstall("onos-app-fwd")
- appUninstall_result2 = main.ONOScli2.feature_uninstall("onos-app-fwd")
- appUninstall_result3 = main.ONOScli3.feature_uninstall("onos-app-fwd")
- main.log.info("onos-app-fwd uninstalled")
-
- #After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
- #So sleep for 15s
- time.sleep(15)
-
- hosts = main.ONOScli1.hosts()
- main.log.info(hosts)
-
- case10_result = appUninstall_result1 and appUninstall_result2 and appUninstall_result3
- utilities.assert_equals(expect=main.TRUE, actual=case10_result,onpass="Reactive forwarding app uninstallation successful",onfail="Reactive forwarding app uninstallation failed")
-
-
- def CASE6(self):
- main.log.report("This testcase is testing the addition of host intents and then doing pingall")
- main.log.report("__________________________________")
- main.case("Obtaining hostsfor adding host intents")
- main.step("Get hosts")
- hosts = main.ONOScli1.hosts()
- main.log.info(hosts)
-
- main.step("Get all devices id")
- devices_id_list = main.ONOScli1.get_all_devices_id()
- main.log.info(devices_id_list)
-
- #ONOS displays the hosts in hex format unlike mininet which does in decimal format
- #So take care while adding intents
-
- '''
- main.step("Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1")
- hth_intent_result = main.ONOScli1.add_host_intent("00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1")
- '''
-
- for i in range(8,18):
- main.log.info("Adding host intent between h"+str(i)+" and h"+str(i+10))
- host1 = "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
- host2 = "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
- #NOTE: get host can return None
- #TODO: handle this
- host1_id = main.ONOScli1.get_host(host1)['id']
- host2_id = main.ONOScli1.get_host(host2)['id']
- tmp_result = main.ONOScli1.add_host_intent(host1_id, host2_id )
-
- flowHandle = main.ONOScli1.flows()
- #print "flowHandle = ", flowHandle
- main.log.info("flows:" +flowHandle)
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i <18 :
- main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
- if ping == main.FALSE and count <5:
- count+=1
- #i = 8
- Ping_Result = main.FALSE
- main.log.report("Ping between h" + str(i) + " and h" + str(i+10) + " failed. Making attempt number "+str(count) + " in 2 seconds")
- time.sleep(2)
- elif ping==main.FALSE:
- main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
- i=19
- Ping_Result = main.FALSE
- elif ping==main.TRUE:
- main.log.info("Ping test between h" + str(i) + " and h" + str(i+10) + "passed!")
- i+=1
- Ping_Result = main.TRUE
- else:
- main.log.info("Unknown error")
- Ping_Result = main.ERROR
- if Ping_Result==main.FALSE:
- main.log.report("Host intents have not ben installed correctly. Cleaning up")
- #main.cleanup()
- #main.exit()
- if Ping_Result==main.TRUE:
- main.log.report("Host intents have been installed correctly")
-
- case6_result = Ping_Result
- utilities.assert_equals(expect=main.TRUE, actual=case6_result,
- onpass="Host intent addition and Pingall Test successful",
- onfail="Host intent addition and Pingall Test NOT successful")
-
-
- def CASE7 (self,main):
-
- ONOS1_ip = main.params['CTRL']['ip1']
-
- link_sleep = int(main.params['timers']['LinkDiscovery'])
-
- main.log.report("This testscase is killing a link to ensure that link discovery is consistent")
- main.log.report("__________________________________")
- main.case("Killing a link to Ensure that Link Discovery is Working Properly")
- main.step("Start continuous pings")
-
- main.Mininet2.pingLong(src=main.params['PING']['source1'],
- target=main.params['PING']['target1'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source2'],
- target=main.params['PING']['target2'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source3'],
- target=main.params['PING']['target3'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source4'],
- target=main.params['PING']['target4'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source5'],
- target=main.params['PING']['target5'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source6'],
- target=main.params['PING']['target6'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source7'],
- target=main.params['PING']['target7'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source8'],
- target=main.params['PING']['target8'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source9'],
- target=main.params['PING']['target9'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source10'],
- target=main.params['PING']['target10'],pingTime=500)
-
-
- main.step("Determine the current number of switches and links")
- topology_output = main.ONOScli1.topology()
- topology_result = main.ONOSbench.get_topology(topology_output)
- activeSwitches = topology_result['devices']
- links = topology_result['links']
- print "activeSwitches = ", type(activeSwitches)
- print "links = ", type(links)
- main.log.info("Currently there are %s switches and %s links" %(str(activeSwitches), str(links)))
-
- main.step("Kill Link between s3 and s28")
- main.Mininet1.link(END1="s3",END2="s28",OPTION="down")
- time.sleep(link_sleep)
- topology_output = main.ONOScli2.topology()
- Link_Down = main.ONOSbench.check_status(topology_output,activeSwitches,str(int(links)-2))
- if Link_Down == main.TRUE:
- main.log.report("Link Down discovered properly")
- utilities.assert_equals(expect=main.TRUE,actual=Link_Down,
- onpass="Link Down discovered properly",
- onfail="Link down was not discovered in "+ str(link_sleep) + " seconds")
-
- main.step("Bring link between s3 and s28 back up")
- Link_Up = main.Mininet1.link(END1="s3",END2="s28",OPTION="up")
- time.sleep(link_sleep)
- topology_output = main.ONOScli2.topology()
- Link_Up = main.ONOSbench.check_status(topology_output,activeSwitches,str(links))
- if Link_Up == main.TRUE:
- main.log.report("Link up discovered properly")
- utilities.assert_equals(expect=main.TRUE,actual=Link_Up,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in "+ str(link_sleep) + " seconds")
-
- main.step("Compare ONOS Topology to MN Topology")
- main.case ("Testing Mininet topology with the topology of multi instances ONOS")
- main.step("Collecting topology information from ONOS")
- devices1 = main.ONOScli1.devices()
- devices2 = main.ONOScli2.devices()
- devices3 = main.ONOScli3.devices()
- print "devices1 = ", devices1
- print "devices2 = ", devices2
- print "devices3 = ", devices3
- hosts1 = main.ONOScli1.hosts()
- hosts2 = main.ONOScli2.hosts()
- hosts3 = main.ONOScli3.hosts()
- #print "hosts1 = ", hosts1
- #print "hosts2 = ", hosts2
- #print "hosts3 = ", hosts3
- ports1 = main.ONOScli1.ports()
- ports2 = main.ONOScli2.ports()
- ports3 = main.ONOScli3.ports()
- #print "ports1 = ", ports1
- #print "ports2 = ", ports2
- #print "ports3 = ", ports3
- links1 = main.ONOScli1.links()
- links2 = main.ONOScli2.links()
- links3 = main.ONOScli3.links()
- #print "links1 = ", links1
- #print "links2 = ", links2
- #print "links3 = ", links3
-
- print "**************"
-
- main.step("Start continuous pings")
- main.Mininet2.pingLong(src=main.params['PING']['source1'],
- target=main.params['PING']['target1'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source2'],
- target=main.params['PING']['target2'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source3'],
- target=main.params['PING']['target3'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source4'],
- target=main.params['PING']['target4'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source5'],
- target=main.params['PING']['target5'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source6'],
- target=main.params['PING']['target6'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source7'],
- target=main.params['PING']['target7'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source8'],
- target=main.params['PING']['target8'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source9'],
- target=main.params['PING']['target9'],pingTime=500)
- main.Mininet2.pingLong(src=main.params['PING']['source10'],
- target=main.params['PING']['target10'],pingTime=500)
-
- main.step("Create TestONTopology object")
- global ctrls
- ctrls = []
- count = 1
- while True:
- temp = ()
- if ('ip' + str(count)) in main.params['CTRL']:
- temp = temp + (getattr(main,('ONOS' + str(count))),)
- temp = temp + ("ONOS"+str(count),)
- temp = temp + (main.params['CTRL']['ip'+str(count)],)
- temp = temp + (eval(main.params['CTRL']['port'+str(count)]),)
- ctrls.append(temp)
- count = count + 1
- else:
- break
- global MNTopo
- Topo = TestONTopology(main.Mininet1, ctrls) # can also add Intent API info for intent operations
- MNTopo = Topo
-
- Topology_Check = main.TRUE
- main.step("Compare ONOS Topology to MN Topology")
-
- switches_results1 = main.Mininet1.compare_switches(MNTopo, json.loads(devices1))
- print "switches_Result1 = ", switches_results1
- utilities.assert_equals(expect=main.TRUE, actual=switches_results1,
- onpass="ONOS1 Switches view is correct",
- onfail="ONOS1 Switches view is incorrect")
-
- switches_results2 = main.Mininet1.compare_switches(MNTopo, json.loads(devices2))
- utilities.assert_equals(expect=main.TRUE, actual=switches_results2,
- onpass="ONOS2 Switches view is correct",
- onfail="ONOS2 Switches view is incorrect")
-
- switches_results3 = main.Mininet1.compare_switches(MNTopo, json.loads(devices3))
- utilities.assert_equals(expect=main.TRUE, actual=switches_results3,
- onpass="ONOS3 Switches view is correct",
- onfail="ONOS3 Switches view is incorrect")
-
- '''
- ports_results1 = main.Mininet1.compare_ports(MNTopo, json.loads(ports1))
- utilities.assert_equals(expect=main.TRUE, actual=ports_results1,
- onpass="ONOS1 Ports view is correct",
- onfail="ONOS1 Ports view is incorrect")
-
- ports_results2 = main.Mininet1.compare_ports(MNTopo, json.loads(ports2))
- utilities.assert_equals(expect=main.TRUE, actual=ports_results2,
- onpass="ONOS2 Ports view is correct",
- onfail="ONOS2 Ports view is incorrect")
-
- ports_results3 = main.Mininet1.compare_ports(MNTopo, json.loads(ports3))
- utilities.assert_equals(expect=main.TRUE, actual=ports_results3,
- onpass="ONOS3 Ports view is correct",
- onfail="ONOS3 Ports view is incorrect")
- '''
-
- links_results1 = main.Mininet1.compare_links(MNTopo, json.loads(links1))
- utilities.assert_equals(expect=main.TRUE, actual=links_results1,
- onpass="ONOS1 Links view is correct",
- onfail="ONOS1 Links view is incorrect")
-
- links_results2 = main.Mininet1.compare_links(MNTopo, json.loads(links2))
- utilities.assert_equals(expect=main.TRUE, actual=links_results2,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect")
-
- links_results3 = main.Mininet1.compare_links(MNTopo, json.loads(links3))
- utilities.assert_equals(expect=main.TRUE, actual=links_results3,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect")
-
- #topo_result = switches_results1 and switches_results2 and switches_results3\
- #and ports_results1 and ports_results2 and ports_results3\
- #and links_results1 and links_results2 and links_results3
-
- topo_result = switches_results1 and switches_results2 and switches_results3\
- and links_results1 and links_results2 and links_results3
-
- utilities.assert_equals(expect=main.TRUE, actual=topo_result and Link_Up and Link_Down,
- onpass="Topology Check Test successful",
- onfail="Topology Check Test NOT successful")
-
-
- def CASE8(self):
- '''
- Intent removal
- '''
- main.log.report("This testcase removes host any previously added intents")
- main.log.report("__________________________________")
- main.log.info("Removing any previously installed intents")
- main.case("Removing intents")
- main.step("Obtain the intent id's")
- intent_result = main.ONOScli1.intents(json_format = False)
-
- intent_linewise = intent_result.split("\n")
- intentList = []
- for line in intent_linewise:
- if line.startswith("id="):
- intentList.append(line)
-
- intentids = []
- for line in intentList:
- intentids.append(line.split(",")[0].split("=")[1])
- for id in intentids:
- main.log.info("id = " +id)
-
- main.step("Iterate through the intentids list and remove each intent")
- for id in intentids:
- main.ONOScli1.remove_intent(intent_id = id)
-
- intent_result = main.ONOScli1.intents(json_format = False)
- main.log.info("intent_result = " +intent_result)
- case8_result = main.TRUE
-
- i = 8
- Ping_Result = main.TRUE
- while i <18 :
- main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
- if ping==main.TRUE:
- i = 19
- Ping_Result = main.TRUE
- elif ping==main.FALSE:
- i+=1
- Ping_Result = main.FALSE
- else:
- main.log.info("Unknown error")
- Ping_Result = main.ERROR
-
- #Note: If the ping result failed, that means the intents have been withdrawn correctly.
- if Ping_Result==main.TRUE:
- main.log.report("Host intents have not been withdrawn correctly")
- #main.cleanup()
- #main.exit()
- if Ping_Result==main.FALSE:
- main.log.report("Host intents have been withdrawn correctly")
-
- case8_result = case8_result and Ping_Result
-
- if case8_result == main.FALSE:
- main.log.report("Intent removal successful")
- else:
- main.log.report("Intent removal failed")
-
- utilities.assert_equals(expect=main.FALSE, actual=case8_result,
- onpass="Intent removal test failed",
- onfail="Intent removal test successful")
-
-
- def CASE9(self):
- '''
- This test case adds point intents. Make sure you run test case 8 which is host intent removal before executing this test case.
- Else the host intent's flows will persist on switches and the pings would work even if there is some issue with the point intent's flows
- '''
- main.log.report("This testcase adds point intents and then does pingall")
- main.log.report("__________________________________")
- main.log.info("Adding point intents")
- main.case("Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)")
- main.step("Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003008/1", "of:0000000000006018/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006018/1", "of:0000000000003008/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003009/1", "of:0000000000006019/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006019/1", "of:0000000000003009/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003010/1", "of:0000000000006020/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006020/1", "of:0000000000003010/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003011/1", "of:0000000000006021/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006021/1", "of:0000000000003011/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003012/1", "of:0000000000006022/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006022/1", "of:0000000000003012/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003013/1", "of:0000000000006023/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006023/1", "of:0000000000003013/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003014/1", "of:0000000000006024/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006024/1", "of:0000000000003014/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003015/1", "of:0000000000006025/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006025/1", "of:0000000000003015/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- main.step("Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003016/1", "of:0000000000006026/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006026/1", "of:0000000000003016/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
-
- main.step("Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B")
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000003017/1", "of:0000000000006027/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- ptp_intent_result = main.ONOScli1.add_point_intent("of:0000000000006027/1", "of:0000000000003017/1")
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info("Point to point intent install successful")
- #main.log.info(get_intent_result)
-
- print("_______________________________________________________________________________________")
-
- flowHandle = main.ONOScli1.flows()
- #print "flowHandle = ", flowHandle
- main.log.info("flows :" + flowHandle)
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i <18 :
- main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
- if ping == main.FALSE and count <5:
- count+=1
- #i = 8
- Ping_Result = main.FALSE
- main.log.report("Ping between h" + str(i) + " and h" + str(i+10) + " failed. Making attempt number "+str(count) + " in 2 seconds")
- time.sleep(2)
- elif ping==main.FALSE:
- main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
- i=19
- Ping_Result = main.FALSE
- elif ping==main.TRUE:
- main.log.info("Ping test between h" + str(i) + " and h" + str(i+10) + "passed!")
- i+=1
- Ping_Result = main.TRUE
- else:
- main.log.info("Unknown error")
- Ping_Result = main.ERROR
- if Ping_Result==main.FALSE:
- main.log.report("Ping all test after Point intents addition failed. Cleaning up")
- #main.cleanup()
- #main.exit()
- if Ping_Result==main.TRUE:
- main.log.report("Ping all test after Point intents addition successful")
-
- case8_result = Ping_Result
- utilities.assert_equals(expect=main.TRUE, actual=case8_result,
- onpass="Ping all test after Point intents addition successful",
- onfail="Ping all test after Point intents addition failed")
-
- def CASE31(self):
- '''
- This test case adds point intent related to SDN-IP matching on ICMP (ethertype=IPV4, ipProto=1)
- '''
- import json
-
- main.log.report("This test case adds point intent related to SDN-IP matching on ICMP")
- main.case("Adding bidirectional point intent related to SDN-IP matching on ICMP")
- main.step("Adding bidirectional point intent")
- #add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=1 of:0000000000003008/1 of:0000000000006018/1
-
- hosts_json = json.loads(main.ONOScli1.hosts())
- for i in range(8,11):
- main.log.info("Adding point intent between h"+str(i)+" and h"+str(i+10))
- host1 = "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
- host2 = "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
- host1_id = main.ONOScli1.get_host(host1)['id']
- host2_id = main.ONOScli1.get_host(host2)['id']
- for host in hosts_json:
- if host['id'] == host1_id:
- ip1 = host['ips'][0]
- ip1 = str(ip1+"/32")
- device1 = host['location']['device']
- device1 = str(device1+"/1")
- elif host['id'] == host2_id:
- ip2 = str(host['ips'][0])+"/32"
- device2 = host['location']["device"]
- device2 = str(device2+"/1")
-
- p_intent_result1 = main.ONOScli1.add_point_intent(ingress_device=device1, egress_device=device2, ipSrc=ip1, ipDst=ip2,
- ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['icmpProto'])
-
- get_intent_result = main.ONOScli1.intents(json_format = False)
- main.log.info(get_intent_result)
-
- p_intent_result2 = main.ONOScli1.add_point_intent(ingress_device=device2, egress_device=device1, ipSrc=ip2, ipDst=ip1,
- ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['icmpProto'])
-
- get_intent_result = main.ONOScli1.intents(json_format = False)
- main.log.info(get_intent_result)
- if (p_intent_result1 and p_intent_result2) == main.TRUE:
- #get_intent_result = main.ONOScli1.intents()
- #main.log.info(get_intent_result)
- main.log.info("Point intent related to SDN-IP matching on ICMP install successful")
-
- time.sleep(15)
- get_intent_result = main.ONOScli1.intents(json_format = False)
- main.log.info("intents = "+ get_intent_result)
- get_flows_result = main.ONOScli1.flows()
- main.log.info("flows = " + get_flows_result)
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i <11 :
- main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+10))
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+10))
- if ping == main.FALSE and count <3:
- count+=1
- #i = 8
- Ping_Result = main.FALSE
- main.log.report("Ping between h" + str(i) + " and h" + str(i+10) + " failed. Making attempt number "+str(count) + " in 2 seconds")
- time.sleep(2)
- elif ping==main.FALSE:
- main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
- i=19
- Ping_Result = main.FALSE
- elif ping==main.TRUE:
- main.log.info("Ping test between h" + str(i) + " and h" + str(i+10) + "passed!")
- i+=1
- Ping_Result = main.TRUE
- else:
- main.log.info("Unknown error")
- Ping_Result = main.ERROR
- if Ping_Result==main.FALSE:
- main.log.report("Ping test after Point intents related to SDN-IP matching on ICMP failed.")
- #main.cleanup()
- #main.exit()
- if Ping_Result==main.TRUE:
- main.log.report("Ping all test after Point intents related to SDN-IP matching on ICMP successful")
-
- case31_result = Ping_Result and p_intent_result1 and p_intent_result2
- utilities.assert_equals(expect=main.TRUE, actual=case31_result,
- onpass="Point intent related to SDN-IP matching on ICMP and ping test successful",
- onfail="Point intent related to SDN-IP matching on ICMP and ping test failed")
-
- def CASE32(self):
- '''
- This test case adds point intent related to SDN-IP matching on TCP (ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001)
- Note: Although BGP port is 179, we are using 5001 because iperf is used for verifying and iperf's default port is 5001
- '''
- import json
-
- main.log.report("This test case adds point intent related to SDN-IP matching on TCP")
- main.case("Adding bidirectional point intent related to SDN-IP matching on TCP")
- main.step("Adding bidirectional point intent")
- """
- add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001 of:0000000000003008/1 of:0000000000006018/1
-
- add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001 of:0000000000006018/1 of:0000000000003008/1
-
- add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001 of:0000000000003008/1 of:0000000000006018/1
-
- add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001 of:0000000000006018/1 of:0000000000003008/1
-
- """
-
- hosts_json = json.loads(main.ONOScli1.hosts())
- for i in range(8,9):
- main.log.info("Adding point intent between h"+str(i)+" and h"+str(i+10))
- host1 = "00:00:00:00:00:" + str(hex(i)[2:]).zfill(2).upper()
- host2 = "00:00:00:00:00:" + str(hex(i+10)[2:]).zfill(2).upper()
- host1_id = main.ONOScli1.get_host(host1)['id']
- host2_id = main.ONOScli1.get_host(host2)['id']
- for host in hosts_json:
- if host['id'] == host1_id:
- ip1 = host['ips'][0]
- ip1 = str(ip1+"/32")
- device1 = host['location']['device']
- device1 = str(device1+"/1")
- elif host['id'] == host2_id:
- ip2 = str(host['ips'][0])+"/32"
- device2 = host['location']["device"]
- device2 = str(device2+"/1")
-
- p_intent_result1 = main.ONOScli1.add_point_intent(ingress_device=device1, egress_device=device2, ipSrc=ip1, ipDst=ip2,
- ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpDst=main.params['SDNIP']['dstPort'])
- p_intent_result2 = main.ONOScli1.add_point_intent(ingress_device=device2, egress_device=device1, ipSrc=ip2, ipDst=ip1,
- ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpDst=main.params['SDNIP']['dstPort'])
-
- p_intent_result3 = main.ONOScli1.add_point_intent(ingress_device=device1, egress_device=device2, ipSrc=ip1, ipDst=ip2,
- ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpSrc=main.params['SDNIP']['srcPort'])
- p_intent_result4 = main.ONOScli1.add_point_intent(ingress_device=device2, egress_device=device1, ipSrc=ip2, ipDst=ip1,
- ethType=main.params['SDNIP']['ethType'], ipProto=main.params['SDNIP']['tcpProto'], tcpSrc=main.params['SDNIP']['srcPort'])
-
- p_intent_result = p_intent_result1 and p_intent_result2 and p_intent_result3 and p_intent_result4
- if p_intent_result ==main.TRUE:
- get_intent_result = main.ONOScli1.intents(json_format = False)
- main.log.info(get_intent_result)
- main.log.info("Point intent related to SDN-IP matching on TCP install successful")
-
- iperf_result = main.Mininet1.iperf('h8', 'h18')
- if iperf_result == main.TRUE:
- main.log.report("iperf test successful")
- else:
- main.log.report("iperf test failed")
-
-
- case32_result = p_intent_result and iperf_result
- utilities.assert_equals(expect=main.TRUE, actual=case32_result,
- onpass="Ping all test after Point intents addition related to SDN-IP on TCP match successful",
- onfail="Ping all test after Point intents addition related to SDN-IP on TCP match failed")
-
-
- def CASE33(self):
- '''
- This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and the action is to rewrite the mac address
- Here the mac address to be rewritten is the mac address of the egress device
- '''
- import json
- import time
-
- main.log.report("This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and rewrite mac address action")
- main.case("Adding multipoint to singlepoint intent related to SDN-IP matching on destination ip")
- main.step("Adding bidirectional multipoint to singlepoint intent")
- """
- add-multi-to-single-intent --ipDst=10.0.3.0/24 --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
-
- add-multi-to-single-intent --ipDst=10.0.1.0/24 --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1
- """
-
- main.case("Installing multipoint to single point intent with rewrite mac address")
- main.step("Uninstalling proxy arp app")
- #Unistall onos-app-proxyarp app to disable reactive forwarding
- appUninstall_result1 = main.ONOScli1.feature_uninstall("onos-app-proxyarp")
- appUninstall_result2 = main.ONOScli2.feature_uninstall("onos-app-proxyarp")
- appUninstall_result3 = main.ONOScli3.feature_uninstall("onos-app-proxyarp")
- main.log.info("onos-app-proxyarp uninstalled")
-
- main.step("Changing ipaddress of hosts h8,h9 and h18")
- main.Mininet1.changeIP(host='h8', intf='h8-eth0', newIP='10.0.1.1', newNetmask='255.255.255.0')
- main.Mininet1.changeIP(host='h9', intf='h9-eth0', newIP='10.0.2.1', newNetmask='255.255.255.0')
- main.Mininet1.changeIP(host='h10', intf='h10-eth0', newIP='10.0.3.1', newNetmask='255.255.255.0')
-
- main.step("Changing default gateway of hosts h8,h9 and h18")
- main.Mininet1.changeDefaultGateway(host='h8', newGW='10.0.1.254')
- main.Mininet1.changeDefaultGateway(host='h9', newGW='10.0.2.254')
- main.Mininet1.changeDefaultGateway(host='h10', newGW='10.0.3.254')
-
- main.step("Assigning random mac address to the default gateways since proxyarp app is uninstalled")
- main.Mininet1.addStaticMACAddress(host='h8', GW='10.0.1.254', macaddr='00:00:00:00:11:11')
- main.Mininet1.addStaticMACAddress(host='h9', GW='10.0.2.254', macaddr='00:00:00:00:22:22')
- main.Mininet1.addStaticMACAddress(host='h10', GW='10.0.3.254', macaddr='00:00:00:00:33:33')
-
- main.step("Verify static gateway and MAC address assignment")
- main.Mininet1.verifyStaticGWandMAC(host='h8')
- main.Mininet1.verifyStaticGWandMAC(host='h9')
- main.Mininet1.verifyStaticGWandMAC(host='h10')
-
- main.step("Adding multipoint to singlepoint intent")
- p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(ingress_device1=main.params['MULTIPOINT_INTENT']['device1'], ingress_device2=main.params['MULTIPOINT_INTENT']['device2'],
- egress_device=main.params['MULTIPOINT_INTENT']['device3'], ipDst=main.params['MULTIPOINT_INTENT']['ip1'], setEthDst=main.params['MULTIPOINT_INTENT']['mac1'])
-
- p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(ingress_device1=main.params['MULTIPOINT_INTENT']['device3'], ingress_device2=main.params['MULTIPOINT_INTENT']['device2'],
- egress_device=main.params['MULTIPOINT_INTENT']['device1'], ipDst=main.params['MULTIPOINT_INTENT']['ip2'], setEthDst=main.params['MULTIPOINT_INTENT']['mac2'])
-
-
- get_intent_result = main.ONOScli1.intents(json_format = False)
- main.log.info("intents = "+ get_intent_result)
-
- time.sleep(10)
- get_flows_result = main.ONOScli1.flows(json_format = False)
- main.log.info("flows = " + get_flows_result)
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
-
- main.log.info("\n\nh"+str(i)+" is Pinging h" + str(i+2))
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+2))
- if ping == main.FALSE and count <3:
- count+=1
- Ping_Result = main.FALSE
- main.log.report("Ping between h" + str(i) + " and h" + str(i+2) + " failed. Making attempt number "+str(count) + " in 2 seconds")
- time.sleep(2)
- elif ping==main.FALSE:
- main.log.report("All ping attempts between h" + str(i) + " and h" + str(i+10) +"have failed")
- Ping_Result = main.FALSE
- elif ping==main.TRUE:
- main.log.info("Ping test between h" + str(i) + " and h" + str(i+2) + "passed!")
- Ping_Result = main.TRUE
- else:
- main.log.info("Unknown error")
- Ping_Result = main.ERROR
-
- if Ping_Result==main.FALSE:
- main.log.report("Ping test failed.")
- #main.cleanup()
- #main.exit()
- if Ping_Result==main.TRUE:
- main.log.report("Ping all successful")
-
-
- p_intent_result = p_intent_result1 and p_intent_result2
- if p_intent_result ==main.TRUE:
- main.log.info("Multi point intent with rewrite mac address installation successful")
- else:
- main.log.info("Multi point intent with rewrite mac address installation failed")
-
- case33_result = p_intent_result and Ping_Result
- utilities.assert_equals(expect=main.TRUE, actual=case33_result,
- onpass="Ping all test after multipoint to single point intent addition with rewrite mac address successful",
- onfail="Ping all test after multipoint to single point intent addition with rewrite mac address failed")
diff --git a/TestON/tests/MultiProd/MultiProd.bak1 b/TestON/tests/MultiProd/MultiProd.bak1
deleted file mode 100644
index 6b67f63..0000000
--- a/TestON/tests/MultiProd/MultiProd.bak1
+++ /dev/null
@@ -1,1523 +0,0 @@
-
-# Testing the basic functionality of ONOS Next
-# For sanity and driver functionality excercises only.
-
-import time
-import sys
-import os
-import re
-import time
-import json
-
-time.sleep( 1 )
-
-
-class MultiProd:
-
- def __init__( self ):
- self.default = ''
-
- def CASE1( self, main ):
- """
- Startup sequence:
- cell <name>
- onos-verify-cell
- onos-remove-raft-logs
- git pull
- mvn clean install
- onos-package
- onos-install -f
- onos-wait-for-start
- """
- cell_name = main.params[ 'ENV' ][ 'cellName' ]
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
- ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
- ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
- ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
-
- main.case( "Setting up test environment" )
- main.log.report(
- "This testcase is testing setting up test environment" )
- main.log.report( "__________________________________" )
-
- main.step( "Applying cell variable to environment" )
- cell_result1 = main.ONOSbench.set_cell( cell_name )
- #cell_result2 = main.ONOScli1.set_cell( cell_name )
- #cell_result3 = main.ONOScli2.set_cell( cell_name )
- #cell_result4 = main.ONOScli3.set_cell( cell_name )
- verify_result = main.ONOSbench.verify_cell()
- cell_result = cell_result1
-
- main.step( "Removing raft logs before a clen installation of ONOS" )
- remove_log_Result = main.ONOSbench.onos_remove_raft_logs()
-
- main.step( "Git checkout and pull master and get version" )
- main.ONOSbench.git_checkout( "master" )
- git_pull_result = main.ONOSbench.git_pull()
- print "git_pull_result = ", git_pull_result
- version_result = main.ONOSbench.get_version( report=True )
-
- if git_pull_result == 1:
- main.step( "Using mvn clean & install" )
- clean_install_result = main.ONOSbench.clean_install()
- #clean_install_result = main.TRUE
-
- main.step( "Creating ONOS package" )
- package_result = main.ONOSbench.onos_package()
-
- #main.step( "Creating a cell" )
- # cell_create_result = main.ONOSbench.create_cell_file( **************
- # )
-
- main.step( "Installing ONOS package" )
- onos1_install_result = main.ONOSbench.onos_install(
- options="-f",
- node=ONOS1_ip )
- onos2_install_result = main.ONOSbench.onos_install(
- options="-f",
- node=ONOS2_ip )
- onos3_install_result = main.ONOSbench.onos_install(
- options="-f",
- node=ONOS3_ip )
- onos_install_result = onos1_install_result and onos2_install_result and onos3_install_result
- if onos_install_result == main.TRUE:
- main.log.report( "Installing ONOS package successful" )
- else:
- main.log.report( "Installing ONOS package failed" )
-
- onos1_isup = main.ONOSbench.isup( ONOS1_ip )
- onos2_isup = main.ONOSbench.isup( ONOS2_ip )
- onos3_isup = main.ONOSbench.isup( ONOS3_ip )
- onos_isup = onos1_isup and onos2_isup and onos3_isup
- if onos_isup == main.TRUE:
- main.log.report( "ONOS instances are up and ready" )
- else:
- main.log.report( "ONOS instances may not be up" )
-
- main.step( "Starting ONOS service" )
- start_result = main.TRUE
- #start_result = main.ONOSbench.onos_start( ONOS1_ip )
- startcli1 = main.ONOScli1.start_onos_cli( ONOS_ip=ONOS1_ip )
- startcli2 = main.ONOScli2.start_onos_cli( ONOS_ip=ONOS2_ip )
- startcli3 = main.ONOScli3.start_onos_cli( ONOS_ip=ONOS3_ip )
- print startcli1
- print startcli2
- print startcli3
-
- case1_result = ( package_result and
- cell_result and verify_result and onos_install_result and
- onos_isup and start_result )
- utilities.assert_equals( expect=main.TRUE, actual=case1_result,
- onpass="Test startup successful",
- onfail="Test startup NOT successful" )
-
- def CASE11( self, main ):
- """
- Cleanup sequence:
- onos-service <node_ip> stop
- onos-uninstall
-
- TODO: Define rest of cleanup
-
- """
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-
- main.case( "Cleaning up test environment" )
-
- main.step( "Testing ONOS kill function" )
- kill_result1 = main.ONOSbench.onos_kill( ONOS1_ip )
- kill_result2 = main.ONOSbench.onos_kill( ONOS2_ip )
- kill_result3 = main.ONOSbench.onos_kill( ONOS3_ip )
-
- main.step( "Stopping ONOS service" )
- stop_result1 = main.ONOSbench.onos_stop( ONOS1_ip )
- stop_result2 = main.ONOSbench.onos_stop( ONOS2_ip )
- stop_result3 = main.ONOSbench.onos_stop( ONOS3_ip )
-
- main.step( "Uninstalling ONOS service" )
- uninstall_result = main.ONOSbench.onos_uninstall()
-
- def CASE3( self, main ):
- """
- Test 'onos' command and its functionality in driver
- """
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-
- main.case( "Testing 'onos' command" )
-
- main.step( "Sending command 'onos -w <onos-ip> system:name'" )
- cmdstr1 = "system:name"
- cmd_result1 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr1 )
- main.log.info( "onos command returned: " + cmd_result1 )
- cmd_result2 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr1 )
- main.log.info( "onos command returned: " + cmd_result2 )
- cmd_result3 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr1 )
- main.log.info( "onos command returned: " + cmd_result3 )
-
- main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
- cmdstr2 = "onos:topology"
- cmd_result4 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr2 )
- main.log.info( "onos command returned: " + cmd_result4 )
- cmd_result5 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr2 )
- main.log.info( "onos command returned: " + cmd_result5 )
- cmd_result6 = main.ONOSbench.onos_cli( ONOS6_ip, cmdstr2 )
- main.log.info( "onos command returned: " + cmd_result6 )
-
- def CASE4( self, main ):
- import re
- import time
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
- ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
- ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
- ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
-
- main.log.report(
- "This testcase is testing the assignment of all the switches to all controllers and discovering the hosts in reactive mode" )
- main.log.report( "__________________________________" )
- main.case( "Pingall Test(No intents are added)" )
- main.step( "Assigning switches to controllers" )
- for i in range( 1, 29 ): # 1 to ( num of switches +1 )
- main.Mininet1.assign_sw_controller(
- sw=str( i ),
- count=3,
- ip1=ONOS1_ip,
- port1=ONOS1_port,
- ip2=ONOS2_ip,
- port2=ONOS2_port,
- ip3=ONOS3_ip,
- port3=ONOS3_port )
-
- switch_mastership = main.TRUE
- for i in range( 1, 29 ):
- response = main.Mininet1.get_sw_controller( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + ONOS1_ip, response ):
- switch_mastership = switch_mastership and main.TRUE
- else:
- switch_mastership = main.FALSE
-
- if switch_mastership == main.TRUE:
- main.log.report( "Controller assignment successfull" )
- else:
- main.log.report( "Controller assignment failed" )
- # REACTIVE FWD test
- main.step( "Pingall" )
- ping_result = main.FALSE
- time1 = time.time()
- ping_result = main.Mininet1.pingall()
- time2 = time.time()
- print "Time for pingall: %2f seconds" % ( time2 - time1 )
-
- case4_result = switch_mastership and ping_result
- if ping_result == main.TRUE:
- main.log.report(
- "Pingall Test in reactive mode to discover the hosts successful" )
- else:
- main.log.report(
- "Pingall Test in reactive mode to discover the hosts failed" )
-
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case4_result,
- onpass="Controller assignment and Pingall Test successful",
- onfail="Controller assignment and Pingall Test NOT successful" )
-
- def CASE5( self, main ):
- import json
- from subprocess import Popen, PIPE
- # assumes that sts is already in you PYTHONPATH
- from sts.topology.teston_topology import TestONTopology
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-
- main.log.report(
- "This testcase is testing if all ONOS nodes are in topology sync with mininet and its peer ONOS nodes" )
- main.log.report( "__________________________________" )
- main.case(
- "Testing Mininet topology with the topology of multi instances ONOS" )
- main.step( "Collecting topology information from ONOS" )
- devices1 = main.ONOScli1.devices()
- devices2 = main.ONOScli2.devices()
- devices3 = main.ONOScli3.devices()
- # print "devices1 = ", devices1
- # print "devices2 = ", devices2
- # print "devices3 = ", devices3
- hosts1 = main.ONOScli1.hosts()
- hosts2 = main.ONOScli2.hosts()
- hosts3 = main.ONOScli3.hosts()
- # print "hosts1 = ", hosts1
- # print "hosts2 = ", hosts2
- # print "hosts3 = ", hosts3
- ports1 = main.ONOScli1.ports()
- ports2 = main.ONOScli2.ports()
- ports3 = main.ONOScli3.ports()
- # print "ports1 = ", ports1
- # print "ports2 = ", ports2
- # print "ports3 = ", ports3
- links1 = main.ONOScli1.links()
- links2 = main.ONOScli2.links()
- links3 = main.ONOScli3.links()
- # print "links1 = ", links1
- # print "links2 = ", links2
- # print "links3 = ", links3
-
- print "**************"
-
- main.step( "Start continuous pings" )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
-
- main.step( "Create TestONTopology object" )
- global ctrls
- ctrls = []
- count = 1
- while True:
- temp = ()
- if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
- temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
- temp = temp + ( "ONOS" + str( count ), )
- temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
- temp = temp + \
- ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
- ctrls.append( temp )
- count = count + 1
- else:
- break
- global MNTopo
- Topo = TestONTopology(
- main.Mininet1,
- ctrls ) # can also add Intent API info for intent operations
- MNTopo = Topo
-
- Topology_Check = main.TRUE
- main.step( "Compare ONOS Topology to MN Topology" )
-
- switches_results1 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices1 ) )
- print "switches_Result1 = ", switches_results1
- utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
- onpass="ONOS1 Switches view is correct",
- onfail="ONOS1 Switches view is incorrect" )
-
- switches_results2 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
- onpass="ONOS2 Switches view is correct",
- onfail="ONOS2 Switches view is incorrect" )
-
- switches_results3 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
- onpass="ONOS3 Switches view is correct",
- onfail="ONOS3 Switches view is incorrect" )
-
- """
- ports_results1 = main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
- onpass="ONOS1 Ports view is correct",
- onfail="ONOS1 Ports view is incorrect" )
-
- ports_results2 = main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
- onpass="ONOS2 Ports view is correct",
- onfail="ONOS2 Ports view is incorrect" )
-
- ports_results3 = main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
- onpass="ONOS3 Ports view is correct",
- onfail="ONOS3 Ports view is incorrect" )
- """
- links_results1 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results1,
- onpass="ONOS1 Links view is correct",
- onfail="ONOS1 Links view is incorrect" )
-
- links_results2 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results2,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- links_results3 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results3,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- #topo_result = switches_results1 and switches_results2 and switches_results3\
- # and ports_results1 and ports_results2 and ports_results3\
- # and links_results1 and links_results2 and links_results3
-
- topo_result = switches_results1 and switches_results2 and switches_results3\
- and links_results1 and links_results2 and links_results3
-
- if topo_result == main.TRUE:
- main.log.report(
- "Topology Check Test with mininet and ONOS instances successful" )
- else:
- main.log.report(
- "Topology Check Test with mininet and ONOS instances failed" )
-
- utilities.assert_equals( expect=main.TRUE, actual=topo_result,
- onpass="Topology Check Test successful",
- onfail="Topology Check Test NOT successful" )
-
- def CASE10( self ):
- main.log.report(
- "This testcase uninstalls the reactive forwarding app" )
- main.log.report( "__________________________________" )
- main.case( "Uninstalling reactive forwarding app" )
- # Unistall onos-app-fwd app to disable reactive forwarding
- appUninstall_result1 = main.ONOScli1.feature_uninstall(
- "onos-app-fwd" )
- appUninstall_result2 = main.ONOScli2.feature_uninstall(
- "onos-app-fwd" )
- appUninstall_result3 = main.ONOScli3.feature_uninstall(
- "onos-app-fwd" )
- main.log.info( "onos-app-fwd uninstalled" )
-
- # After reactive forwarding is disabled, the reactive flows on switches timeout in 10-15s
- # So sleep for 15s
- time.sleep( 15 )
-
- hosts = main.ONOScli1.hosts()
- main.log.info( hosts )
-
- case10_result = appUninstall_result1 and appUninstall_result2 and appUninstall_result3
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case10_result,
- onpass="Reactive forwarding app uninstallation successful",
- onfail="Reactive forwarding app uninstallation failed" )
-
- def CASE6( self ):
- main.log.report(
- "This testcase is testing the addition of host intents and then doing pingall" )
- main.log.report( "__________________________________" )
- main.case( "Obtaining hostsfor adding host intents" )
- main.step( "Get hosts" )
- hosts = main.ONOScli1.hosts()
- main.log.info( hosts )
-
- main.step( "Get all devices id" )
- devices_id_list = main.ONOScli1.get_all_devices_id()
- main.log.info( devices_id_list )
-
- # ONOS displays the hosts in hex format unlike mininet which does in decimal format
- # So take care while adding intents
-
- """
- main.step( "Add host intents for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent( "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
- """
- for i in range( 8, 18 ):
- main.log.info(
- "Adding host intent between h" + str( i ) + " and h" + str( i + 10 ) )
- host1 = "00:00:00:00:00:" + \
- str( hex( i )[ 2: ] ).zfill( 2 ).upper()
- host2 = "00:00:00:00:00:" + \
- str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
- # NOTE: get host can return None
- # TODO: handle this
- host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
- host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
- tmp_result = main.ONOScli1.add_host_intent( host1_id, host2_id )
-
- flowHandle = main.ONOScli1.flows()
- # print "flowHandle = ", flowHandle
- main.log.info( "flows:" + flowHandle )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 5:
- count += 1
- #i = 8
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
- if Ping_Result == main.FALSE:
- main.log.report(
- "Host intents have not ben installed correctly. Cleaning up" )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report( "Host intents have been installed correctly" )
-
- case6_result = Ping_Result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case6_result,
- onpass="Host intent addition and Pingall Test successful",
- onfail="Host intent addition and Pingall Test NOT successful" )
-
- def CASE7( self, main ):
-
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-
- link_sleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report(
- "This testscase is killing a link to ensure that link discovery is consistent" )
- main.log.report( "__________________________________" )
- main.case(
- "Killing a link to Ensure that Link Discovery is Working Properly" )
- main.step( "Start continuous pings" )
-
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
-
- main.step( "Determine the current number of switches and links" )
- topology_output = main.ONOScli1.topology()
- topology_result = main.ONOSbench.get_topology( topology_output )
- activeSwitches = topology_result[ 'devices' ]
- links = topology_result[ 'links' ]
- print "activeSwitches = ", type( activeSwitches )
- print "links = ", type( links )
- main.log.info(
- "Currently there are %s switches and %s links" %
- ( str( activeSwitches ), str( links ) ) )
-
- main.step( "Kill Link between s3 and s28" )
- main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
- time.sleep( link_sleep )
- topology_output = main.ONOScli2.topology()
- Link_Down = main.ONOSbench.check_status(
- topology_output, activeSwitches, str(
- int( links ) - 2 ) )
- if Link_Down == main.TRUE:
- main.log.report( "Link Down discovered properly" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=Link_Down,
- onpass="Link Down discovered properly",
- onfail="Link down was not discovered in " +
- str( link_sleep ) +
- " seconds" )
-
- main.step( "Bring link between s3 and s28 back up" )
- Link_Up = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
- time.sleep( link_sleep )
- topology_output = main.ONOScli2.topology()
- Link_Up = main.ONOSbench.check_status(
- topology_output,
- activeSwitches,
- str( links ) )
- if Link_Up == main.TRUE:
- main.log.report( "Link up discovered properly" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=Link_Up,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( link_sleep ) +
- " seconds" )
-
- main.step( "Compare ONOS Topology to MN Topology" )
- main.case(
- "Testing Mininet topology with the topology of multi instances ONOS" )
- main.step( "Collecting topology information from ONOS" )
- devices1 = main.ONOScli1.devices()
- devices2 = main.ONOScli2.devices()
- devices3 = main.ONOScli3.devices()
- print "devices1 = ", devices1
- print "devices2 = ", devices2
- print "devices3 = ", devices3
- hosts1 = main.ONOScli1.hosts()
- hosts2 = main.ONOScli2.hosts()
- hosts3 = main.ONOScli3.hosts()
- # print "hosts1 = ", hosts1
- # print "hosts2 = ", hosts2
- # print "hosts3 = ", hosts3
- ports1 = main.ONOScli1.ports()
- ports2 = main.ONOScli2.ports()
- ports3 = main.ONOScli3.ports()
- # print "ports1 = ", ports1
- # print "ports2 = ", ports2
- # print "ports3 = ", ports3
- links1 = main.ONOScli1.links()
- links2 = main.ONOScli2.links()
- links3 = main.ONOScli3.links()
- # print "links1 = ", links1
- # print "links2 = ", links2
- # print "links3 = ", links3
-
- print "**************"
-
- main.step( "Start continuous pings" )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
-
- main.step( "Create TestONTopology object" )
- global ctrls
- ctrls = []
- count = 1
- while True:
- temp = ()
- if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
- temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
- temp = temp + ( "ONOS" + str( count ), )
- temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
- temp = temp + \
- ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
- ctrls.append( temp )
- count = count + 1
- else:
- break
- global MNTopo
- Topo = TestONTopology(
- main.Mininet1,
- ctrls ) # can also add Intent API info for intent operations
- MNTopo = Topo
-
- Topology_Check = main.TRUE
- main.step( "Compare ONOS Topology to MN Topology" )
-
- switches_results1 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices1 ) )
- print "switches_Result1 = ", switches_results1
- utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
- onpass="ONOS1 Switches view is correct",
- onfail="ONOS1 Switches view is incorrect" )
-
- switches_results2 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
- onpass="ONOS2 Switches view is correct",
- onfail="ONOS2 Switches view is incorrect" )
-
- switches_results3 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
- onpass="ONOS3 Switches view is correct",
- onfail="ONOS3 Switches view is incorrect" )
-
- """
- ports_results1 = main.Mininet1.compare_ports( MNTopo, json.loads( ports1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
- onpass="ONOS1 Ports view is correct",
- onfail="ONOS1 Ports view is incorrect" )
-
- ports_results2 = main.Mininet1.compare_ports( MNTopo, json.loads( ports2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
- onpass="ONOS2 Ports view is correct",
- onfail="ONOS2 Ports view is incorrect" )
-
- ports_results3 = main.Mininet1.compare_ports( MNTopo, json.loads( ports3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
- onpass="ONOS3 Ports view is correct",
- onfail="ONOS3 Ports view is incorrect" )
- """
- links_results1 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results1,
- onpass="ONOS1 Links view is correct",
- onfail="ONOS1 Links view is incorrect" )
-
- links_results2 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results2,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- links_results3 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results3,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- #topo_result = switches_results1 and switches_results2 and switches_results3\
- # and ports_results1 and ports_results2 and ports_results3\
- # and links_results1 and links_results2 and links_results3
-
- topo_result = switches_results1 and switches_results2 and switches_results3\
- and links_results1 and links_results2 and links_results3
-
- utilities.assert_equals(
- expect=main.TRUE,
- actual=topo_result and Link_Up and Link_Down,
- onpass="Topology Check Test successful",
- onfail="Topology Check Test NOT successful" )
-
- def CASE8( self ):
- """
- Intent removal
- """
- main.log.report(
- "This testcase removes host any previously added intents" )
- main.log.report( "__________________________________" )
- main.log.info( "Removing any previously installed intents" )
- main.case( "Removing intents" )
- main.step( "Obtain the intent id's" )
- intent_result = main.ONOScli1.intents( json_format=False )
-
- intent_linewise = intent_result.split( "\n" )
- intentList = []
- for line in intent_linewise:
- if line.startswith( "id=" ):
- intentList.append( line )
-
- intentids = []
- for line in intentList:
- intentids.append( line.split( "," )[ 0 ].split( "=" )[ 1 ] )
- for id in intentids:
- main.log.info( "id = " + id )
-
- main.step(
- "Iterate through the intentids list and remove each intent" )
- for id in intentids:
- main.ONOScli1.remove_intent( intent_id=id )
-
- intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( "intent_result = " + intent_result )
- case8_result = main.TRUE
-
- i = 8
- Ping_Result = main.TRUE
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.TRUE:
- i = 19
- Ping_Result = main.TRUE
- elif ping == main.FALSE:
- i += 1
- Ping_Result = main.FALSE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
-
- # Note: If the ping result failed, that means the intents have been
- # withdrawn correctly.
- if Ping_Result == main.TRUE:
- main.log.report( "Host intents have not been withdrawn correctly" )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.FALSE:
- main.log.report( "Host intents have been withdrawn correctly" )
-
- case8_result = case8_result and Ping_Result
-
- if case8_result == main.FALSE:
- main.log.report( "Intent removal successful" )
- else:
- main.log.report( "Intent removal failed" )
-
- utilities.assert_equals( expect=main.FALSE, actual=case8_result,
- onpass="Intent removal test failed",
- onfail="Intent removal test successful" )
-
- def CASE9( self ):
- """
- This test case adds point intents. Make sure you run test case 8 which is host intent removal before executing this test case.
- Else the host intent's flows will persist on switches and the pings would work even if there is some issue with the point intent's flows
- """
- main.log.report(
- "This testcase adds point intents and then does pingall" )
- main.log.report( "__________________________________" )
- main.log.info( "Adding point intents" )
- main.case(
- "Adding bidirectional point for mn hosts(h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,h15-h25,h16-h26,h17-h27)" )
- main.step(
- "Add point-to-point intents for mininet hosts h8 and h18 or ONOS hosts h8 and h12" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003008/1",
- "of:0000000000006018/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006018/1",
- "of:0000000000003008/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h9 and h19 or ONOS hosts h9 and h13" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003009/1",
- "of:0000000000006019/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006019/1",
- "of:0000000000003009/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h10 and h20 or ONOS hosts hA and h14" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003010/1",
- "of:0000000000006020/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006020/1",
- "of:0000000000003010/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h11 and h21 or ONOS hosts hB and h15" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003011/1",
- "of:0000000000006021/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006021/1",
- "of:0000000000003011/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h12 and h22 or ONOS hosts hC and h16" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003012/1",
- "of:0000000000006022/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006022/1",
- "of:0000000000003012/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h13 and h23 or ONOS hosts hD and h17" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003013/1",
- "of:0000000000006023/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006023/1",
- "of:0000000000003013/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h14 and h24 or ONOS hosts hE and h18" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003014/1",
- "of:0000000000006024/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006024/1",
- "of:0000000000003014/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h15 and h25 or ONOS hosts hF and h19" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003015/1",
- "of:0000000000006025/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006025/1",
- "of:0000000000003015/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h16 and h26 or ONOS hosts h10 and h1A" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003016/1",
- "of:0000000000006026/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006026/1",
- "of:0000000000003016/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step(
- "Add point-to-point intents for mininet hosts h17 and h27 or ONOS hosts h11 and h1B" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003017/1",
- "of:0000000000006027/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006027/1",
- "of:0000000000003017/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- print(
- "_______________________________________________________________________________________" )
-
- flowHandle = main.ONOScli1.flows()
- # print "flowHandle = ", flowHandle
- main.log.info( "flows :" + flowHandle )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 5:
- count += 1
- #i = 8
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
- if Ping_Result == main.FALSE:
- main.log.report(
- "Ping all test after Point intents addition failed. Cleaning up" )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report(
- "Ping all test after Point intents addition successful" )
-
- case8_result = Ping_Result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case8_result,
- onpass="Ping all test after Point intents addition successful",
- onfail="Ping all test after Point intents addition failed" )
-
- def CASE31( self ):
- """
- This test case adds point intent related to SDN-IP matching on ICMP ( ethertype=IPV4, ipProto=1 )
- """
- import json
-
- main.log.report(
- "This test case adds point intent related to SDN-IP matching on ICMP" )
- main.case(
- "Adding bidirectional point intent related to SDN-IP matching on ICMP" )
- main.step( "Adding bidirectional point intent" )
- # add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
- # --ethType=IPV4 --ipProto=1 of:0000000000003008/1
- # of:0000000000006018/1
-
- hosts_json = json.loads( main.ONOScli1.hosts() )
- for i in range( 8, 11 ):
- main.log.info(
- "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
- host1 = "00:00:00:00:00:" + \
- str( hex( i )[ 2: ] ).zfill( 2 ).upper()
- host2 = "00:00:00:00:00:" + \
- str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
- host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
- host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
- for host in hosts_json:
- if host[ 'id' ] == host1_id:
- ip1 = host[ 'ips' ][ 0 ]
- ip1 = str( ip1 + "/32" )
- device1 = host[ 'location' ][ 'device' ]
- device1 = str( device1 + "/1" )
- elif host[ 'id' ] == host2_id:
- ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
- device2 = host[ 'location' ][ "device" ]
- device2 = str( device2 + "/1" )
-
- p_intent_result1 = main.ONOScli1.add_point_intent(
- ingress_device=device1,
- egress_device=device2,
- ipSrc=ip1,
- ipDst=ip2,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
-
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( get_intent_result )
-
- p_intent_result2 = main.ONOScli1.add_point_intent(
- ingress_device=device2,
- egress_device=device1,
- ipSrc=ip2,
- ipDst=ip1,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
-
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( get_intent_result )
- if ( p_intent_result1 and p_intent_result2 ) == main.TRUE:
- #get_intent_result = main.ONOScli1.intents()
- # main.log.info( get_intent_result )
- main.log.info(
- "Point intent related to SDN-IP matching on ICMP install successful" )
-
- time.sleep( 15 )
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( "intents = " + get_intent_result )
- get_flows_result = main.ONOScli1.flows()
- main.log.info( "flows = " + get_flows_result )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i < 11:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 3:
- count += 1
- #i = 8
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
- if Ping_Result == main.FALSE:
- main.log.report(
- "Ping test after Point intents related to SDN-IP matching on ICMP failed." )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report(
- "Ping all test after Point intents related to SDN-IP matching on ICMP successful" )
-
- case31_result = Ping_Result and p_intent_result1 and p_intent_result2
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case31_result,
- onpass="Point intent related to SDN-IP matching on ICMP and ping test successful",
- onfail="Point intent related to SDN-IP matching on ICMP and ping test failed" )
-
- def CASE32( self ):
- """
- This test case adds point intent related to SDN-IP matching on TCP ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
- Note: Although BGP port is 179, we are using 5001 because iperf is used for verifying and iperf's default port is 5001
- """
- import json
-
- main.log.report(
- "This test case adds point intent related to SDN-IP matching on TCP" )
- main.case(
- "Adding bidirectional point intent related to SDN-IP matching on TCP" )
- main.step( "Adding bidirectional point intent" )
- """
- add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001 of:0000000000003008/1 of:0000000000006018/1
-
- add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpDst=5001 of:0000000000006018/1 of:0000000000003008/1
-
- add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001 of:0000000000003008/1 of:0000000000006018/1
-
- add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32 --ethType=IPV4 --ipProto=6 --tcpSrc=5001 of:0000000000006018/1 of:0000000000003008/1
-
- """
- hosts_json = json.loads( main.ONOScli1.hosts() )
- for i in range( 8, 9 ):
- main.log.info(
- "Adding point intent between h" + str( i ) + " and h" + str( i + 10 ) )
- host1 = "00:00:00:00:00:" + \
- str( hex( i )[ 2: ] ).zfill( 2 ).upper()
- host2 = "00:00:00:00:00:" + \
- str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
- host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
- host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
- for host in hosts_json:
- if host[ 'id' ] == host1_id:
- ip1 = host[ 'ips' ][ 0 ]
- ip1 = str( ip1 + "/32" )
- device1 = host[ 'location' ][ 'device' ]
- device1 = str( device1 + "/1" )
- elif host[ 'id' ] == host2_id:
- ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
- device2 = host[ 'location' ][ "device" ]
- device2 = str( device2 + "/1" )
-
- p_intent_result1 = main.ONOScli1.add_point_intent(
- ingress_device=device1,
- egress_device=device2,
- ipSrc=ip1,
- ipDst=ip2,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
- p_intent_result2 = main.ONOScli1.add_point_intent(
- ingress_device=device2,
- egress_device=device1,
- ipSrc=ip2,
- ipDst=ip1,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
-
- p_intent_result3 = main.ONOScli1.add_point_intent(
- ingress_device=device1,
- egress_device=device2,
- ipSrc=ip1,
- ipDst=ip2,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
- p_intent_result4 = main.ONOScli1.add_point_intent(
- ingress_device=device2,
- egress_device=device1,
- ipSrc=ip2,
- ipDst=ip1,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
-
- p_intent_result = p_intent_result1 and p_intent_result2 and p_intent_result3 and p_intent_result4
- if p_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( get_intent_result )
- main.log.info(
- "Point intent related to SDN-IP matching on TCP install successful" )
-
- iperf_result = main.Mininet1.iperf( 'h8', 'h18' )
- if iperf_result == main.TRUE:
- main.log.report( "iperf test successful" )
- else:
- main.log.report( "iperf test failed" )
-
- case32_result = p_intent_result and iperf_result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case32_result,
- onpass="Ping all test after Point intents addition related to SDN-IP on TCP match successful",
- onfail="Ping all test after Point intents addition related to SDN-IP on TCP match failed" )
-
- def CASE33( self ):
- """
- This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and the action is to rewrite the mac address
- Here the mac address to be rewritten is the mac address of the egress device
- """
- import json
- import time
-
- main.log.report(
- "This test case adds multipoint to singlepoint intent related to SDN-IP matching on destination ip and rewrite mac address action" )
- main.case(
- "Adding multipoint to singlepoint intent related to SDN-IP matching on destination ip" )
- main.step( "Adding bidirectional multipoint to singlepoint intent" )
- """
- add-multi-to-single-intent --ipDst=10.0.3.0/24 --setEthDst=00:00:00:00:00:12 of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
-
- add-multi-to-single-intent --ipDst=10.0.1.0/24 --setEthDst=00:00:00:00:00:08 of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1
- """
- main.case(
- "Installing multipoint to single point intent with rewrite mac address" )
- main.step( "Uninstalling proxy arp app" )
- # Unistall onos-app-proxyarp app to disable reactive forwarding
- appUninstall_result1 = main.ONOScli1.feature_uninstall(
- "onos-app-proxyarp" )
- appUninstall_result2 = main.ONOScli2.feature_uninstall(
- "onos-app-proxyarp" )
- appUninstall_result3 = main.ONOScli3.feature_uninstall(
- "onos-app-proxyarp" )
- main.log.info( "onos-app-proxyarp uninstalled" )
-
- main.step( "Changing ipaddress of hosts h8,h9 and h18" )
- main.Mininet1.changeIP(
- host='h8',
- intf='h8-eth0',
- newIP='10.0.1.1',
- newNetmask='255.255.255.0' )
- main.Mininet1.changeIP(
- host='h9',
- intf='h9-eth0',
- newIP='10.0.2.1',
- newNetmask='255.255.255.0' )
- main.Mininet1.changeIP(
- host='h10',
- intf='h10-eth0',
- newIP='10.0.3.1',
- newNetmask='255.255.255.0' )
-
- main.step( "Changing default gateway of hosts h8,h9 and h18" )
- main.Mininet1.changeDefaultGateway( host='h8', newGW='10.0.1.254' )
- main.Mininet1.changeDefaultGateway( host='h9', newGW='10.0.2.254' )
- main.Mininet1.changeDefaultGateway( host='h10', newGW='10.0.3.254' )
-
- main.step(
- "Assigning random mac address to the default gateways since proxyarp app is uninstalled" )
- main.Mininet1.addStaticMACAddress(
- host='h8',
- GW='10.0.1.254',
- macaddr='00:00:00:00:11:11' )
- main.Mininet1.addStaticMACAddress(
- host='h9',
- GW='10.0.2.254',
- macaddr='00:00:00:00:22:22' )
- main.Mininet1.addStaticMACAddress(
- host='h10',
- GW='10.0.3.254',
- macaddr='00:00:00:00:33:33' )
-
- main.step( "Verify static gateway and MAC address assignment" )
- main.Mininet1.verifyStaticGWandMAC( host='h8' )
- main.Mininet1.verifyStaticGWandMAC( host='h9' )
- main.Mininet1.verifyStaticGWandMAC( host='h10' )
-
- main.step( "Adding multipoint to singlepoint intent" )
- p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
- ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
- ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
- egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
- ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip1' ],
- setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac1' ] )
-
- p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
- ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
- ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
- egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
- ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip2' ],
- setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac2' ] )
-
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( "intents = " + get_intent_result )
-
- time.sleep( 10 )
- get_flows_result = main.ONOScli1.flows( json_format=False )
- main.log.info( "flows = " + get_flows_result )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
-
- main.log.info( "\n\nh" + str( i ) + " is Pinging h" + str( i + 2 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 2 ) )
- if ping == main.FALSE and count < 3:
- count += 1
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 2 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 2 ) +
- "passed!" )
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
-
- if Ping_Result == main.FALSE:
- main.log.report( "Ping test failed." )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report( "Ping all successful" )
-
- p_intent_result = p_intent_result1 and p_intent_result2
- if p_intent_result == main.TRUE:
- main.log.info(
- "Multi point intent with rewrite mac address installation successful" )
- else:
- main.log.info(
- "Multi point intent with rewrite mac address installation failed" )
-
- case33_result = p_intent_result and Ping_Result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case33_result,
- onpass="Ping all test after multipoint to single point intent addition with rewrite mac address successful",
- onfail="Ping all test after multipoint to single point intent addition with rewrite mac address failed" )
diff --git a/TestON/tests/MultiProd/MultiProd.py.fixed b/TestON/tests/MultiProd/MultiProd.py.fixed
deleted file mode 100644
index e0e772a..0000000
--- a/TestON/tests/MultiProd/MultiProd.py.fixed
+++ /dev/null
@@ -1,1566 +0,0 @@
-
-# Testing the basic functionality of ONOS Next
-# For sanity and driver functionality excercises only.
-
-import time
-import json
-
-time.sleep( 1 )
-
-
-class MultiProd:
-
- def __init__( self ):
- self.default = ''
-
- def CASE1( self, main ):
- """
- Startup sequence:
- cell <name>
- onos-verify-cell
- onos-remove-raft-logs
- git pull
- mvn clean install
- onos-package
- onos-install -f
- onos-wait-for-start
- """
- cell_name = main.params[ 'ENV' ][ 'cellName' ]
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-
- main.case( "Setting up test environment" )
- main.log.report(
- "This testcase is testing setting up test environment" )
- main.log.report( "__________________________________" )
-
- main.step( "Applying cell variable to environment" )
- cell_result1 = main.ONOSbench.set_cell( cell_name )
- # cell_result2 = main.ONOScli1.set_cell( cell_name )
- # cell_result3 = main.ONOScli2.set_cell( cell_name )
- # cell_result4 = main.ONOScli3.set_cell( cell_name )
- verify_result = main.ONOSbench.verify_cell()
- cell_result = cell_result1
-
- main.step( "Removing raft logs before a clen installation of ONOS" )
- main.ONOSbench.onos_remove_raft_logs()
-
- main.step( "Git checkout and pull master and get version" )
- main.ONOSbench.git_checkout( "master" )
- git_pull_result = main.ONOSbench.git_pull()
- print "git_pull_result = ", git_pull_result
- main.ONOSbench.get_version( report=True )
-
- if git_pull_result == 1:
- main.step( "Using mvn clean & install" )
- main.ONOSbench.clean_install()
-
- main.step( "Creating ONOS package" )
- package_result = main.ONOSbench.onos_package()
-
- # main.step( "Creating a cell" )
- # cell_create_result = main.ONOSbench.create_cell_file( **************
- # )
-
- main.step( "Installing ONOS package" )
- onos1_install_result = main.ONOSbench.onos_install(
- options="-f",
- node=ONOS1_ip )
- onos2_install_result = main.ONOSbench.onos_install(
- options="-f",
- node=ONOS2_ip )
- onos3_install_result = main.ONOSbench.onos_install(
- options="-f",
- node=ONOS3_ip )
- onos_install_result = onos1_install_result and onos2_install_result \
- and onos3_install_result
- if onos_install_result == main.TRUE:
- main.log.report( "Installing ONOS package successful" )
- else:
- main.log.report( "Installing ONOS package failed" )
-
- onos1_isup = main.ONOSbench.isup( ONOS1_ip )
- onos2_isup = main.ONOSbench.isup( ONOS2_ip )
- onos3_isup = main.ONOSbench.isup( ONOS3_ip )
- onos_isup = onos1_isup and onos2_isup and onos3_isup
- if onos_isup == main.TRUE:
- main.log.report( "ONOS instances are up and ready" )
- else:
- main.log.report( "ONOS instances may not be up" )
-
- main.step( "Starting ONOS service" )
- start_result = main.TRUE
- # start_result = main.ONOSbench.onos_start( ONOS1_ip )
- startcli1 = main.ONOScli1.start_onos_cli( ONOS_ip=ONOS1_ip )
- startcli2 = main.ONOScli2.start_onos_cli( ONOS_ip=ONOS2_ip )
- startcli3 = main.ONOScli3.start_onos_cli( ONOS_ip=ONOS3_ip )
- print startcli1
- print startcli2
- print startcli3
-
- case1_result = ( package_result and cell_result and
- verify_result and onos_install_result
- and onos_isup and start_result )
- utilities.assert_equals( expect=main.TRUE, actual=case1_result,
- onpass="Test startup successful",
- onfail="Test startup NOT successful" )
-
- def CASE11( self, main ):
- """
- Cleanup sequence:
- onos-service <node_ip> stop
- onos-uninstall
-
- TODO: Define rest of cleanup
-
- """
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-
- main.case( "Cleaning up test environment" )
-
- main.step( "Testing ONOS kill function" )
- kill_result1 = main.ONOSbench.onos_kill( ONOS1_ip )
- kill_result2 = main.ONOSbench.onos_kill( ONOS2_ip )
- kill_result3 = main.ONOSbench.onos_kill( ONOS3_ip )
- kill_result = kill_result1 and kill_result2 and kill_result3
-
- main.step( "Stopping ONOS service" )
- stop_result1 = main.ONOSbench.onos_stop( ONOS1_ip )
- stop_result2 = main.ONOSbench.onos_stop( ONOS2_ip )
- stop_result3 = main.ONOSbench.onos_stop( ONOS3_ip )
- stop_result = stop_result1 and stop_result2 and stop_result3
-
- main.step( "Uninstalling ONOS service" )
- uninstall_result = main.ONOSbench.onos_uninstall()
-
- case11_result = kill_result and stop_result and uninstall_result
- utilities.assert_equals( expect=main.TRUE, actual=case11_result,
- onpass="Cleanup successful",
- onfail="Cleanup failed" )
-
- def CASE3( self, main ):
- """
- Test 'onos' command and its functionality in driver
- """
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
-
- main.case( "Testing 'onos' command" )
-
- main.step( "Sending command 'onos -w <onos-ip> system:name'" )
- cmdstr1 = "system:name"
- cmd_result1 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr1 )
- main.log.info( "onos command returned: " + cmd_result1 )
- cmd_result2 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr1 )
- main.log.info( "onos command returned: " + cmd_result2 )
- cmd_result3 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr1 )
- main.log.info( "onos command returned: " + cmd_result3 )
-
- main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
- cmdstr2 = "onos:topology"
- cmd_result4 = main.ONOSbench.onos_cli( ONOS1_ip, cmdstr2 )
- main.log.info( "onos command returned: " + cmd_result4 )
- cmd_result5 = main.ONOSbench.onos_cli( ONOS2_ip, cmdstr2 )
- main.log.info( "onos command returned: " + cmd_result5 )
- cmd_result6 = main.ONOSbench.onos_cli( ONOS3_ip, cmdstr2 )
- main.log.info( "onos command returned: " + cmd_result6 )
-
- def CASE4( self, main ):
- import re
- import time
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS2_ip = main.params[ 'CTRL' ][ 'ip2' ]
- ONOS3_ip = main.params[ 'CTRL' ][ 'ip3' ]
- ONOS1_port = main.params[ 'CTRL' ][ 'port1' ]
- ONOS2_port = main.params[ 'CTRL' ][ 'port2' ]
- ONOS3_port = main.params[ 'CTRL' ][ 'port3' ]
-
- main.log.report(
- "This testcase is testing the assignment of all the switches to \
- all controllers and discovering the hosts in reactive mode" )
- main.log.report( "__________________________________" )
- main.case( "Pingall Test(No intents are added)" )
- main.step( "Assigning switches to controllers" )
- for i in range( 1, 29 ): # 1 to ( num of switches +1 )
- main.Mininet1.assign_sw_controller(
- sw=str( i ),
- count=3,
- ip1=ONOS1_ip,
- port1=ONOS1_port,
- ip2=ONOS2_ip,
- port2=ONOS2_port,
- ip3=ONOS3_ip,
- port3=ONOS3_port )
-
- switch_mastership = main.TRUE
- for i in range( 1, 29 ):
- response = main.Mininet1.get_sw_controller( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + ONOS1_ip, response ):
- switch_mastership = switch_mastership and main.TRUE
- else:
- switch_mastership = main.FALSE
-
- if switch_mastership == main.TRUE:
- main.log.report( "Controller assignment successfull" )
- else:
- main.log.report( "Controller assignment failed" )
- # REACTIVE FWD test
- main.step( "Pingall" )
- ping_result = main.FALSE
- time1 = time.time()
- ping_result = main.Mininet1.pingall()
- time2 = time.time()
- print "Time for pingall: %2f seconds" % ( time2 - time1 )
-
- case4_result = switch_mastership and ping_result
- if ping_result == main.TRUE:
- main.log.report( "Pingall Test in reactive mode to discover \
- the hosts successful" )
- else:
- main.log.report( "Pingall Test in reactive mode to discover \
- the hosts failed" )
-
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case4_result,
- onpass="Controller assignment and Pingall Test successful",
- onfail="Controller assignment and Pingall Test NOT successful" )
-
- def CASE5( self, main ):
- import json
- from subprocess import Popen, PIPE
- # assumes that sts is already in you PYTHONPATH
- from sts.topology.teston_topology import TestONTopology
-
- main.log.report( "This testcase is testing if all ONOS nodes are in \
- topology sync with mininet and its peer ONOS nodes" )
- main.log.report( "__________________________________" )
- main.case(
- "Testing Mininet topology with the topology \
- of multi instances ONOS" )
- main.step( "Collecting topology information from ONOS" )
- devices1 = main.ONOScli1.devices()
- devices2 = main.ONOScli2.devices()
- devices3 = main.ONOScli3.devices()
- hosts1 = main.ONOScli1.hosts()
- hosts2 = main.ONOScli2.hosts()
- hosts3 = main.ONOScli3.hosts()
- ports1 = main.ONOScli1.ports()
- ports2 = main.ONOScli2.ports()
- ports3 = main.ONOScli3.ports()
- links1 = main.ONOScli1.links()
- links2 = main.ONOScli2.links()
- links3 = main.ONOScli3.links()
-
- main.step( "Start continuous pings" )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
-
- main.step( "Create TestONTopology object" )
- global ctrls
- ctrls = []
- count = 1
- while True:
- temp = ()
- if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
- temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
- temp = temp + ( "ONOS" + str( count ), )
- temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
- temp = temp + \
- ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
- ctrls.append( temp )
- count = count + 1
- else:
- break
- global MNTopo
- Topo = TestONTopology(
- main.Mininet1,
- ctrls ) # can also add Intent API info for intent operations
- MNTopo = Topo
-
- Topology_Check = main.TRUE
- main.step( "Compare ONOS Topology to MN Topology" )
-
- switches_results1 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices1 ) )
- print "switches_Result1 = ", switches_results1
- utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
- onpass="ONOS1 Switches view is correct",
- onfail="ONOS1 Switches view is incorrect" )
-
- switches_results2 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
- onpass="ONOS2 Switches view is correct",
- onfail="ONOS2 Switches view is incorrect" )
-
- switches_results3 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
- onpass="ONOS3 Switches view is correct",
- onfail="ONOS3 Switches view is incorrect" )
-
- ports_results1 = main.Mininet1.compare_ports(
- MNTopo, json.loads( ports1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
- onpass="ONOS1 Ports view is correct",
- onfail="ONOS1 Ports view is incorrect" )
-
- ports_results2 = main.Mininet1.compare_ports(
- MNTopo, json.loads( ports2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
- onpass="ONOS2 Ports view is correct",
- onfail="ONOS2 Ports view is incorrect" )
-
- ports_results3 = main.Mininet1.compare_ports(
- MNTopo, json.loads( ports3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
- onpass="ONOS3 Ports view is correct",
- onfail="ONOS3 Ports view is incorrect" )
-
- links_results1 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results1,
- onpass="ONOS1 Links view is correct",
- onfail="ONOS1 Links view is incorrect" )
-
- links_results2 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results2,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- links_results3 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results3,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- topo_result = switches_results1 and switches_results2 and \
- switches_results3\
- and ports_results1 and ports_results2 and ports_results3\
- and links_results1 and links_results2 and links_results3
-
- '''
- topo_result = switches_results1 and switches_results2 and \
- switches_results3 and links_results1 and \
- links_results2 and links_results3
- '''
-
- if topo_result == main.TRUE:
- main.log.report(
- "Topology Check Test with mininet and \
- ONOS instances successful" )
- else:
- main.log.report(
- "Topology Check Test with mininet and \
- ONOS instances failed" )
-
- utilities.assert_equals( expect=main.TRUE, actual=topo_result,
- onpass="Topology Check Test successful",
- onfail="Topology Check Test NOT successful" )
-
- def CASE10( self ):
- main.log.report(
- "This testcase uninstalls the reactive forwarding app" )
- main.log.report( "__________________________________" )
- main.case( "Uninstalling reactive forwarding app" )
- # Unistall onos-app-fwd app to disable reactive forwarding
- appUninstall_result1 = main.ONOScli1.feature_uninstall(
- "onos-app-fwd" )
- appUninstall_result2 = main.ONOScli2.feature_uninstall(
- "onos-app-fwd" )
- appUninstall_result3 = main.ONOScli3.feature_uninstall(
- "onos-app-fwd" )
- main.log.info( "onos-app-fwd uninstalled" )
-
- # After reactive forwarding is disabled,
- # the reactive flows on switches timeout in 10-15s
- # So sleep for 15s
- time.sleep( 15 )
-
- hosts = main.ONOScli1.hosts()
- main.log.info( hosts )
-
- case10_result = appUninstall_result1 and appUninstall_result2 and \
- appUninstall_result3
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case10_result,
- onpass="Reactive forwarding app uninstallation successful",
- onfail="Reactive forwarding app uninstallation failed" )
-
- def CASE6( self ):
- main.log.report(
- "This testcase is testing the addition of host intents and \
- then doing pingall" )
- main.log.report( "__________________________________" )
- main.case( "Obtaining hostsfor adding host intents" )
- main.step( "Get hosts" )
- hosts = main.ONOScli1.hosts()
- main.log.info( hosts )
-
- main.step( "Get all devices id" )
- devices_id_list = main.ONOScli1.get_all_devices_id()
- main.log.info( devices_id_list )
-
- # ONOS displays the hosts in hex format unlike mininet
- # which does in decimal format
- # So take care while adding intents
-
- """
- main.step(
- "Add host intents for mn hosts
- (h8-h18,h9-h19,h10-h20,h11-h21,h12-h22,h13-h23,h14-h24,
- h15-h25,h16-h26,h17-h27)" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
- hth_intent_result = main.ONOScli1.add_host_intent(
- "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
- """
- for i in range( 8, 18 ):
- main.log.info(
- "Adding host intent between h" + str( i ) +
- " and h" + str( i + 10 ) )
- host1 = "00:00:00:00:00:" + \
- str( hex( i )[ 2: ] ).zfill( 2 ).upper()
- host2 = "00:00:00:00:00:" + \
- str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
- # NOTE: get host can return None
- # TODO: handle this
- host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
- host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
- tmp_result = main.ONOScli1.add_host_intent( host1_id, host2_id )
-
- flowHandle = main.ONOScli1.flows()
- main.log.info( "flows:" + flowHandle )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 5:
- count += 1
- # i = 8
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
- if Ping_Result == main.FALSE:
- main.log.report(
- "Host intents have not ben installed correctly. Cleaning up" )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report( "Host intents have been installed correctly" )
-
- case6_result = Ping_Result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case6_result,
- onpass="Host intent addition and Pingall Test successful",
- onfail="Host intent addition and Pingall Test NOT successful" )
-
- def CASE7( self, main ):
-
- from sts.topology.teston_topology import TestONTopology
- ONOS1_ip = main.params[ 'CTRL' ][ 'ip1' ]
-
- link_sleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report(
- "This testscase is killing a link to ensure that \
- link discovery is consistent" )
- main.log.report( "__________________________________" )
- main.case(
- "Killing a link to ensure that \
- Link Discovery is Working Properly" )
- main.step( "Start continuous pings" )
-
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
-
- main.step( "Determine the current number of switches and links" )
- topology_output = main.ONOScli1.topology()
- topology_result = main.ONOSbench.get_topology( topology_output )
- activeSwitches = topology_result[ 'devices' ]
- links = topology_result[ 'links' ]
- main.log.info(
- "Currently there are %s switches and %s links" %
- ( str( activeSwitches ), str( links ) ) )
-
- main.step( "Kill Link between s3 and s28" )
- main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
- time.sleep( link_sleep )
- topology_output = main.ONOScli2.topology()
- Link_Down = main.ONOSbench.check_status(
- topology_output, activeSwitches, str(
- int( links ) - 2 ) )
- if Link_Down == main.TRUE:
- main.log.report( "Link Down discovered properly" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=Link_Down,
- onpass="Link Down discovered properly",
- onfail="Link down was not discovered in " +
- str( link_sleep ) +
- " seconds" )
-
- main.step( "Bring link between s3 and s28 back up" )
- Link_Up = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
- time.sleep( link_sleep )
- topology_output = main.ONOScli2.topology()
- Link_Up = main.ONOSbench.check_status(
- topology_output,
- activeSwitches,
- str( links ) )
- if Link_Up == main.TRUE:
- main.log.report( "Link up discovered properly" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=Link_Up,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( link_sleep ) +
- " seconds" )
-
- main.step( "Compare ONOS Topology to MN Topology" )
- main.case(
- "Testing Mininet topology with the topology of \
- multi instances ONOS" )
- main.step( "Collecting topology information from ONOS" )
- devices1 = main.ONOScli1.devices()
- devices2 = main.ONOScli2.devices()
- devices3 = main.ONOScli3.devices()
- hosts1 = main.ONOScli1.hosts()
- hosts2 = main.ONOScli2.hosts()
- hosts3 = main.ONOScli3.hosts()
- ports1 = main.ONOScli1.ports()
- ports2 = main.ONOScli2.ports()
- ports3 = main.ONOScli3.ports()
- links1 = main.ONOScli1.links()
- links2 = main.ONOScli2.links()
- links3 = main.ONOScli3.links()
-
- main.step( "Start continuous pings" )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
-
- main.step( "Create TestONTopology object" )
- global ctrls
- ctrls = []
- count = 1
- while True:
- temp = ()
- if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
- temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
- temp = temp + ( "ONOS" + str( count ), )
- temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
- temp = temp + \
- ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
- ctrls.append( temp )
- count = count + 1
- else:
- break
- global MNTopo
- Topo = TestONTopology(
- main.Mininet1,
- ctrls ) # can also add Intent API info for intent operations
- MNTopo = Topo
-
- Topology_Check = main.TRUE
- main.step( "Compare ONOS Topology to MN Topology" )
-
- switches_results1 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices1 ) )
- print "switches_Result1 = ", switches_results1
- utilities.assert_equals( expect=main.TRUE, actual=switches_results1,
- onpass="ONOS1 Switches view is correct",
- onfail="ONOS1 Switches view is incorrect" )
-
- switches_results2 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results2,
- onpass="ONOS2 Switches view is correct",
- onfail="ONOS2 Switches view is incorrect" )
-
- switches_results3 = main.Mininet1.compare_switches(
- MNTopo,
- json.loads( devices3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=switches_results3,
- onpass="ONOS3 Switches view is correct",
- onfail="ONOS3 Switches view is incorrect" )
-
- """
- ports_results1 = main.Mininet1.compare_ports(
- MNTopo, json.loads( ports1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results1,
- onpass="ONOS1 Ports view is correct",
- onfail="ONOS1 Ports view is incorrect" )
-
- ports_results2 = main.Mininet1.compare_ports(
- MNTopo, json.loads( ports2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results2,
- onpass="ONOS2 Ports view is correct",
- onfail="ONOS2 Ports view is incorrect" )
-
- ports_results3 = main.Mininet1.compare_ports(
- MNTopo, json.loads( ports3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=ports_results3,
- onpass="ONOS3 Ports view is correct",
- onfail="ONOS3 Ports view is incorrect" )
- """
- links_results1 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links1 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results1,
- onpass="ONOS1 Links view is correct",
- onfail="ONOS1 Links view is incorrect" )
-
- links_results2 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links2 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results2,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- links_results3 = main.Mininet1.compare_links(
- MNTopo,
- json.loads( links3 ) )
- utilities.assert_equals( expect=main.TRUE, actual=links_results3,
- onpass="ONOS2 Links view is correct",
- onfail="ONOS2 Links view is incorrect" )
-
- # topo_result = switches_results1 and switches_results2 and \
- # switches_results3 and ports_results1 and ports_results2 and \
- # ports_results3 and links_results1 and links_results2 and \
- # links_results3
-
- topo_result = switches_results1 and switches_results2 \
- and switches_results3 and links_results1 and \
- links_results2 and links_results3
-
- utilities.assert_equals(
- expect=main.TRUE,
- actual=topo_result and Link_Up and Link_Down,
- onpass="Topology Check Test successful",
- onfail="Topology Check Test NOT successful" )
-
- def CASE8( self ):
- """
- Intent removal
- """
- main.log.report(
- "This testcase removes host any previously added intents" )
- main.log.report( "__________________________________" )
- main.log.info( "Removing any previously installed intents" )
- main.case( "Removing intents" )
- main.step( "Obtain the intent id's" )
- intent_result = main.ONOScli1.intents( json_format=False )
-
- intent_linewise = intent_result.split( "\n" )
- intentList = []
- for line in intent_linewise:
- if line.startswith( "id=" ):
- intentList.append( line )
-
- intentids = []
- for line in intentList:
- intentids.append( line.split( "," )[ 0 ].split( "=" )[ 1 ] )
- for id in intentids:
- main.log.info( "id = " + id )
-
- main.step(
- "Iterate through the intentids list and remove each intent" )
- for id in intentids:
- main.ONOScli1.remove_intent( intent_id=id )
-
- intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( "intent_result = " + intent_result )
- case8_result = main.TRUE
-
- i = 8
- Ping_Result = main.TRUE
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.TRUE:
- i = 19
- Ping_Result = main.TRUE
- elif ping == main.FALSE:
- i += 1
- Ping_Result = main.FALSE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
-
- # Note: If the ping result failed, that means the intents have been
- # withdrawn correctly.
- if Ping_Result == main.TRUE:
- main.log.report( "Host intents have not been withdrawn correctly" )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.FALSE:
- main.log.report( "Host intents have been withdrawn correctly" )
-
- case8_result = case8_result and Ping_Result
-
- if case8_result == main.FALSE:
- main.log.report( "Intent removal successful" )
- else:
- main.log.report( "Intent removal failed" )
-
- utilities.assert_equals( expect=main.FALSE, actual=case8_result,
- onpass="Intent removal test failed",
- onfail="Intent removal test successful" )
-
- def CASE9( self ):
- """
- This test case adds point intents. Make sure you run test case 8
- which is host intent removal before executing this test case.
- Else the host intents flows will persist on switches and the ping
- would work even if there is some issue with the point intent's flows
- """
- main.log.report(
- "This testcase adds point intents and then does pingall" )
- main.log.report( "__________________________________" )
- main.log.info( "Adding point intents" )
- main.case(
- "Adding bidirectional point for mn hosts \
- h8-h18 h9-h19 h10-h20 h11-h21 h12-h22 h13-h23 \
- h14-h24 h15-h25 h16-h26 h17-h27" )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h8 and h18 or ONOS hosts h8 and h12" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003008/1",
- "of:0000000000006018/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006018/1",
- "of:0000000000003008/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h9 and h19 or ONOS hosts h9 and h13" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003009/1",
- "of:0000000000006019/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006019/1",
- "of:0000000000003009/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h10 and h20 or ONOS hosts hA and h14" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003010/1",
- "of:0000000000006020/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006020/1",
- "of:0000000000003010/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h11 and h21 or ONOS hosts hB and h15" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003011/1",
- "of:0000000000006021/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006021/1",
- "of:0000000000003011/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h12 and h22 or ONOS hosts hC and h16" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003012/1",
- "of:0000000000006022/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006022/1",
- "of:0000000000003012/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h13 and h23 or ONOS hosts hD and h17" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003013/1",
- "of:0000000000006023/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006023/1",
- "of:0000000000003013/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h14 and h24 or ONOS hosts hE and h18" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003014/1",
- "of:0000000000006024/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006024/1",
- "of:0000000000003014/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h15 and h25 or ONOS hosts hF and h19" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003015/1",
- "of:0000000000006025/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006025/1",
- "of:0000000000003015/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h16 and h26 or ONOS hosts h10 and h1A" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003016/1",
- "of:0000000000006026/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006026/1",
- "of:0000000000003016/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- main.step( "Add point-to-point intents for mininet hosts \
- h17 and h27 or ONOS hosts h11 and h1B" )
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000003017/1",
- "of:0000000000006027/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- ptp_intent_result = main.ONOScli1.add_point_intent(
- "of:0000000000006027/1",
- "of:0000000000003017/1" )
- if ptp_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( get_intent_result )
-
- print("___________________________________________________________" )
-
- flowHandle = main.ONOScli1.flows()
- main.log.info( "flows :" + flowHandle )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 5:
- count += 1
- # i = 8
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
-
- if Ping_Result == main.FALSE:
- main.log.report(
- "Ping all test after Point intents addition failed. \
- Cleaning up" )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report(
- "Ping all test after Point intents addition successful" )
-
- case8_result = Ping_Result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case8_result,
- onpass="Ping all test after Point intents addition successful",
- onfail="Ping all test after Point intents addition failed" )
-
- def CASE31( self ):
- """
- This test case adds point intent related to SDN-IP
- matching on ICMP ( ethertype=IPV4, ipProto=1 )
- """
- import json
-
- main.log.report(
- '''This test case adds point intent related to SDN-IP
- matching on ICMP''' )
- main.case(
- '''Adding bidirectional point intent related to SDN-IP
- matching on ICMP''' )
- main.step( "Adding bidirectional point intent" )
- # add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
- # --ethType=IPV4 --ipProto=1 of:0000000000003008/1
- # of:0000000000006018/1
-
- hosts_json = json.loads( main.ONOScli1.hosts() )
- for i in range( 8, 11 ):
- main.log.info(
- "Adding point intent between h" + str( i ) +
- " and h" + str( i + 10 ) )
- host1 = "00:00:00:00:00:" + \
- str( hex( i )[ 2: ] ).zfill( 2 ).upper()
- host2 = "00:00:00:00:00:" + \
- str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
- host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
- host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
- for host in hosts_json:
- if host[ 'id' ] == host1_id:
- ip1 = host[ 'ips' ][ 0 ]
- ip1 = str( ip1 + "/32" )
- device1 = host[ 'location' ][ 'device' ]
- device1 = str( device1 + "/1" )
- elif host[ 'id' ] == host2_id:
- ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
- device2 = host[ 'location' ][ "device" ]
- device2 = str( device2 + "/1" )
-
- p_intent_result1 = main.ONOScli1.add_point_intent(
- ingress_device=device1,
- egress_device=device2,
- ipSrc=ip1,
- ipDst=ip2,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
-
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( get_intent_result )
-
- p_intent_result2 = main.ONOScli1.add_point_intent(
- ingress_device=device2,
- egress_device=device1,
- ipSrc=ip2,
- ipDst=ip1,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'icmpProto' ] )
-
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( get_intent_result )
- if ( p_intent_result1 and p_intent_result2 ) == main.TRUE:
- # get_intent_result = main.ONOScli1.intents()
- # main.log.info( get_intent_result )
- main.log.info(
- '''Point intent related to SDN-IP matching on ICMP install
- successful''' )
-
- time.sleep( 15 )
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( "intents = " + get_intent_result )
- get_flows_result = main.ONOScli1.flows()
- main.log.info( "flows = " + get_flows_result )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
- while i < 11:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 3:
- count += 1
- # i = 8
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
- if Ping_Result == main.FALSE:
- main.log.report(
- "Ping test after Point intents related to SDN-IP \
- matching on ICMP failed." )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report(
- "Ping all test after Point intents related to SDN-IP \
- matching on ICMP successful" )
-
- case31_result = Ping_Result and p_intent_result1 and p_intent_result2
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case31_result,
- onpass="Point intent related to SDN-IP matching on ICMP and \
- ping test successful",
- onfail="Point intent related to SDN-IP matching on ICMP and \
- ping test failed" )
-
- def CASE32( self ):
- '''
- This test case adds point intent related to SDN-IP matching on TCP
- ( ethertype=IPV4, ipProto=6, DefaultPort for iperf=5001 )
- Note: Although BGP port is 179, we are using 5001 because iperf is
- used for verifying and iperf's default port is 5001
- '''
- import json
-
- main.log.report( '''This test case adds point intent related
- to SDN-IP matching on TCP''' )
- main.case( '''Adding bidirectional point intent related to SDN-IP
- matching on TCP''' )
- main.step( "Adding bidirectional point intent" )
-
- """
- add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
- --ethType=IPV4 --ipProto=6 --tcpDst=5001
- of:0000000000003008/1 of:0000000000006018/1
-
- add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
- --ethType=IPV4 --ipProto=6 --tcpDst=5001
- of:0000000000006018/1 of:0000000000003008/1
-
- add-point-intent --ipSrc=10.0.0.8/32 --ipDst=10.0.0.18/32
- --ethType=IPV4 --ipProto=6 --tcpSrc=5001
- of:0000000000003008/1 of:0000000000006018/1
-
- add-point-intent --ipSrc=10.0.0.18/32 --ipDst=10.0.0.8/32
- --ethType=IPV4 --ipProto=6 --tcpSrc=5001
- of:0000000000006018/1 of:0000000000003008/1
-
- """
- hosts_json = json.loads( main.ONOScli1.hosts() )
- for i in range( 8, 9 ):
- main.log.info(
- "Adding point intent between h" + str( i ) +
- " and h" + str( i + 10 ) )
- host1 = "00:00:00:00:00:" + \
- str( hex( i )[ 2: ] ).zfill( 2 ).upper()
- host2 = "00:00:00:00:00:" + \
- str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
- host1_id = main.ONOScli1.get_host( host1 )[ 'id' ]
- host2_id = main.ONOScli1.get_host( host2 )[ 'id' ]
- for host in hosts_json:
- if host[ 'id' ] == host1_id:
- ip1 = host[ 'ips' ][ 0 ]
- ip1 = str( ip1 + "/32" )
- device1 = host[ 'location' ][ 'device' ]
- device1 = str( device1 + "/1" )
- elif host[ 'id' ] == host2_id:
- ip2 = str( host[ 'ips' ][ 0 ] ) + "/32"
- device2 = host[ 'location' ][ "device" ]
- device2 = str( device2 + "/1" )
-
- p_intent_result1 = main.ONOScli1.add_point_intent(
- ingress_device=device1,
- egress_device=device2,
- ipSrc=ip1,
- ipDst=ip2,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
- p_intent_result2 = main.ONOScli1.add_point_intent(
- ingress_device=device2,
- egress_device=device1,
- ipSrc=ip2,
- ipDst=ip1,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpDst=main.params[ 'SDNIP' ][ 'dstPort' ] )
-
- p_intent_result3 = main.ONOScli1.add_point_intent(
- ingress_device=device1,
- egress_device=device2,
- ipSrc=ip1,
- ipDst=ip2,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
- p_intent_result4 = main.ONOScli1.add_point_intent(
- ingress_device=device2,
- egress_device=device1,
- ipSrc=ip2,
- ipDst=ip1,
- ethType=main.params[ 'SDNIP' ][ 'ethType' ],
- ipProto=main.params[ 'SDNIP' ][ 'tcpProto' ],
- tcpSrc=main.params[ 'SDNIP' ][ 'srcPort' ] )
-
- p_intent_result = p_intent_result1 and p_intent_result2 and \
- p_intent_result3 and p_intent_result4
- if p_intent_result == main.TRUE:
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( get_intent_result )
- main.log.info( '''Point intent related to SDN-IP matching
- on TCP install successful''' )
-
- iperf_result = main.Mininet1.iperf( 'h8', 'h18' )
- if iperf_result == main.TRUE:
- main.log.report( "iperf test successful" )
- else:
- main.log.report( "iperf test failed" )
-
- case32_result = p_intent_result and iperf_result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case32_result,
- onpass="Ping all test after Point intents addition related to \
- SDN-IP on TCP match successful",
- onfail="Ping all test after Point intents addition related to \
- SDN-IP on TCP match failed" )
-
- def CASE33( self ):
- """
- This test case adds multipoint to singlepoint intent related
- to SDN-IP matching on destination ip and the action is to
- rewrite the mac address.
- Here the mac address to be rewritten is the mac address
- of the egress device
- """
- import json
- import time
-
- main.log.report( "This test case adds multipoint to singlepoint intent\
- related to SDN-IP matching on destination ip and\
- rewrite mac address action" )
- main.case( "Adding multipoint to singlepoint intent related to SDN-IP\
- matching on destination ip" )
- main.step( "Adding bidirectional multipoint to singlepoint intent" )
- """
- add-multi-to-single-intent --ipDst=10.0.3.0/24
- --setEthDst=00:00:00:00:00:12
- of:0000000000003008/1 0000000000003009/1 of:0000000000006018/1
-
- add-multi-to-single-intent --ipDst=10.0.1.0/24
- --setEthDst=00:00:00:00:00:08
- of:0000000000006018/1 0000000000003009/1 of:0000000000003008/1
- """
- main.case( "Installing multipoint to single point intent with\
- rewrite mac address" )
- main.step( "Uninstalling proxy arp app" )
- # Unistall onos-app-proxyarp app to disable reactive forwarding
- appUninstall_result1 = main.ONOScli1.feature_uninstall(
- "onos-app-proxyarp" )
- appUninstall_result2 = main.ONOScli2.feature_uninstall(
- "onos-app-proxyarp" )
- appUninstall_result3 = main.ONOScli3.feature_uninstall(
- "onos-app-proxyarp" )
- main.log.info( "onos-app-proxyarp uninstalled" )
-
- main.step( "Changing ipaddress of hosts h8,h9 and h18" )
- main.Mininet1.changeIP(
- host='h8',
- intf='h8-eth0',
- newIP='10.0.1.1',
- newNetmask='255.255.255.0' )
- main.Mininet1.changeIP(
- host='h9',
- intf='h9-eth0',
- newIP='10.0.2.1',
- newNetmask='255.255.255.0' )
- main.Mininet1.changeIP(
- host='h10',
- intf='h10-eth0',
- newIP='10.0.3.1',
- newNetmask='255.255.255.0' )
-
- main.step( "Changing default gateway of hosts h8,h9 and h18" )
- main.Mininet1.changeDefaultGateway( host='h8', newGW='10.0.1.254' )
- main.Mininet1.changeDefaultGateway( host='h9', newGW='10.0.2.254' )
- main.Mininet1.changeDefaultGateway( host='h10', newGW='10.0.3.254' )
-
- main.step( "Assigning random mac address to the default gateways\
- since proxyarp app is uninstalled" )
- main.Mininet1.addStaticMACAddress(
- host='h8',
- GW='10.0.1.254',
- macaddr='00:00:00:00:11:11' )
- main.Mininet1.addStaticMACAddress(
- host='h9',
- GW='10.0.2.254',
- macaddr='00:00:00:00:22:22' )
- main.Mininet1.addStaticMACAddress(
- host='h10',
- GW='10.0.3.254',
- macaddr='00:00:00:00:33:33' )
-
- main.step( "Verify static gateway and MAC address assignment" )
- main.Mininet1.verifyStaticGWandMAC( host='h8' )
- main.Mininet1.verifyStaticGWandMAC( host='h9' )
- main.Mininet1.verifyStaticGWandMAC( host='h10' )
-
- main.step( "Adding multipoint to singlepoint intent" )
- p_intent_result1 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
- ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
- ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
- egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
- ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip1' ],
- setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac1' ] )
-
- p_intent_result2 = main.ONOScli1.add_multipoint_to_singlepoint_intent(
- ingress_device1=main.params[ 'MULTIPOINT_INTENT' ][ 'device3' ],
- ingress_device2=main.params[ 'MULTIPOINT_INTENT' ][ 'device2' ],
- egress_device=main.params[ 'MULTIPOINT_INTENT' ][ 'device1' ],
- ipDst=main.params[ 'MULTIPOINT_INTENT' ][ 'ip2' ],
- setEthDst=main.params[ 'MULTIPOINT_INTENT' ][ 'mac2' ] )
-
- get_intent_result = main.ONOScli1.intents( json_format=False )
- main.log.info( "intents = " + get_intent_result )
-
- time.sleep( 10 )
- get_flows_result = main.ONOScli1.flows( json_format=False )
- main.log.info( "flows = " + get_flows_result )
-
- count = 1
- i = 8
- Ping_Result = main.TRUE
-
- main.log.info( "\n\nh" + str( i ) + " is Pinging h" + str( i + 2 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 2 ) )
- if ping == main.FALSE and count < 3:
- count += 1
- Ping_Result = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 2 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- Ping_Result = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 2 ) +
- "passed!" )
- Ping_Result = main.TRUE
- else:
- main.log.info( "Unknown error" )
- Ping_Result = main.ERROR
-
- if Ping_Result == main.FALSE:
- main.log.report( "Ping test failed." )
- # main.cleanup()
- # main.exit()
- if Ping_Result == main.TRUE:
- main.log.report( "Ping all successful" )
-
- p_intent_result = p_intent_result1 and p_intent_result2
- if p_intent_result == main.TRUE:
- main.log.info( "Multi point intent with rewrite mac address\
- installation successful" )
- else:
- main.log.info( "Multi point intent with rewrite mac address\
- installation failed" )
-
- case33_result = p_intent_result and Ping_Result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case33_result,
- onpass="Ping all test after multipoint to single point intent \
- addition with rewrite mac address successful",
- onfail="Ping all test after multipoint to single point intent \
- addition with rewrite mac address failed" )
-
diff --git a/TestON/tests/MultiProd/__init__.py b/TestON/tests/MultiProd/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/MultiProd/__init__.py
diff --git a/TestON/tests/MultiProd13/__init__.py b/TestON/tests/MultiProd13/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/MultiProd13/__init__.py
diff --git a/TestON/tests/PingallExample/PingallExample.py b/TestON/tests/PingallExample/PingallExample.py
index 653397e..dab380f 100644
--- a/TestON/tests/PingallExample/PingallExample.py
+++ b/TestON/tests/PingallExample/PingallExample.py
@@ -127,7 +127,7 @@
response = main.Mininet1.getSwController( "s" + str( i ) )
try:
main.log.info( str( response ) )
- except:
+ except Exception:
main.log.info( repr( response ) )
if re.search( "tcp:" + ONOS1Ip, response ):
mastershipCheck = mastershipCheck and main.TRUE
diff --git a/TestON/tests/ProdFunc/ProdFunc.bakpy b/TestON/tests/ProdFunc/ProdFunc.bakpy
deleted file mode 100755
index c79143b..0000000
--- a/TestON/tests/ProdFunc/ProdFunc.bakpy
+++ /dev/null
@@ -1,1480 +0,0 @@
-
-# Testing the basic functionality of ONOS Next
-# For sanity and driver functionality excercises only.
-
-import time
-# import sys
-# import os
-# import re
-import json
-
-time.sleep( 1 )
-
-
-class ProdFunc:
-
- def __init__( self ):
- self.default = ''
-
- def CASE1( self, main ):
- import time
- """
- Startup sequence:
- cell <name>
- onos-verify-cell
- onos-remove-raft-log
- git pull
- mvn clean install
- onos-package
- onos-install -f
- onos-wait-for-start
- """
- cellName = main.params[ 'ENV' ][ 'cellName' ]
- ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
-
- main.case( "Setting up test environment" )
- main.log.report(
- "This testcase is testing setting up test environment" )
- main.log.report( "__________________________________" )
-
- main.step( "Applying cell variable to environment" )
- cellResult = main.ONOSbench.setCell( cellName )
- verifyResult = main.ONOSbench.verifyCell()
-
- main.step( "Removing raft logs before a clen installation of ONOS" )
- main.ONOSbench.onosRemoveRaftLogs()
-
- main.step( "Git checkout and get version" )
- #main.ONOSbench.gitCheckout( "master" )
- gitPullResult = main.ONOSbench.gitPull()
- main.log.info( "git_pull_result = " + str( gitPullResult ))
- main.ONOSbench.getVersion( report=True )
-
- if gitPullResult == 1:
- main.step( "Using mvn clean & install" )
- main.ONOSbench.cleanInstall()
- elif gitPullResult == 0:
- main.log.report(
- "Git Pull Failed, look into logs for detailed reason" )
- main.cleanup()
- main.exit()
-
- main.step( "Creating ONOS package" )
- packageResult = main.ONOSbench.onosPackage()
-
- main.step( "Installing ONOS package" )
- onosInstallResult = main.ONOSbench.onosInstall()
- if onosInstallResult == main.TRUE:
- main.log.report( "Installing ONOS package successful" )
- else:
- main.log.report( "Installing ONOS package failed" )
-
- onos1Isup = main.ONOSbench.isup()
- if onos1Isup == main.TRUE:
- main.log.report( "ONOS instance is up and ready" )
- else:
- main.log.report( "ONOS instance may not be up" )
-
- main.step( "Starting ONOS service" )
- startResult = main.ONOSbench.onosStart( ONOS1Ip )
-
- main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
-
- main.step( "Starting Mininet CLI..." )
- # Starting the mininet using the old way
- main.step( "Starting Mininet ..." )
- netIsUp = main.Mininet1.startNet()
- if netIsUp:
- main.log.info("Mininet CLI is up")
-
- case1Result = ( packageResult and
- cellResult and verifyResult
- and onosInstallResult and
- onos1Isup and startResult )
- utilities.assert_equals( expect=main.TRUE, actual=case1Result,
- onpass="Test startup successful",
- onfail="Test startup NOT successful" )
-
- def CASE2( self, main ):
- """
- Switch Down
- """
- # NOTE: You should probably run a topology check after this
- import time
-
- main.case( "Switch down discovery" )
- main.log.report( "This testcase is testing a switch down discovery" )
- main.log.report( "__________________________________" )
-
- switchSleep = int( main.params[ 'timers' ][ 'SwitchDiscovery' ] )
-
- description = "Killing a switch to ensure it is discovered correctly"
- main.log.report( description )
- main.case( description )
-
- # TODO: Make this switch parameterizable
- main.step( "Kill s28 " )
- main.log.report( "Deleting s28" )
- # FIXME: use new dynamic topo functions
- main.Mininet1.delSwitch( "s28" )
- main.log.info(
- "Waiting " +
- str( switchSleep ) +
- " seconds for switch down to be discovered" )
- time.sleep( switchSleep )
- # Peek at the deleted switch
- device = main.ONOS2.getDevice( dpid="0028" )
- print "device = ", device
- if device[ u'available' ] == 'False':
- case2Result = main.FALSE
- else:
- case2Result = main.TRUE
- utilities.assert_equals( expect=main.TRUE, actual=case2Result,
- onpass="Switch down discovery successful",
- onfail="Switch down discovery failed" )
-
- def CASE15( self, main ):
- """
- Cleanup sequence:
- onos-service <nodeIp> stop
- onos-uninstall
-
- TODO: Define rest of cleanup
-
- """
- ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
-
- main.case( "Cleaning up test environment" )
-
- main.step( "Testing ONOS kill function" )
- killResult = main.ONOSbench.onosKill( ONOS1Ip )
-
- main.step( "Stopping ONOS service" )
- stopResult = main.ONOSbench.onosStop( ONOS1Ip )
-
- main.step( "Uninstalling ONOS service" )
- uninstallResult = main.ONOSbench.onosUninstall()
-
- case11Result = killResult and stopResult and uninstallResult
- utilities.assert_equals( expect=main.TRUE, actual=case11Result,
- onpass="Cleanup successful",
- onfail="Cleanup failed" )
-
- def CASE3( self, main ):
- """
- Test 'onos' command and its functionality in driver
- """
- ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
-
- main.case( "Testing 'onos' command" )
-
- main.step( "Sending command 'onos -w <onos-ip> system:name'" )
- cmdstr1 = "system:name"
- cmdResult1 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr1 )
- main.log.info( "onos command returned: " + cmdResult1 )
-
- main.step( "Sending command 'onos -w <onos-ip> onos:topology'" )
- cmdstr2 = "onos:topology"
- cmdResult2 = main.ONOSbench.onosCli( ONOS1Ip, cmdstr2 )
- main.log.info( "onos command returned: " + cmdResult2 )
-
- def CASE20( self ):
- """
- Exit from mininet cli
- reinstall ONOS
- """
- cellName = main.params[ 'ENV' ][ 'cellName' ]
- ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
-
- main.log.report( "This testcase exits the mininet cli and reinstalls" +
- "ONOS to switch over to Packet Optical topology" )
- main.log.report( "_____________________________________________" )
- main.case( "Disconnecting mininet and restarting ONOS" )
- main.step( "Disconnecting mininet and restarting ONOS" )
- mininetDisconnect = main.Mininet1.disconnect()
- print "mininetDisconnect = ", mininetDisconnect
-
- main.step( "Removing raft logs before a clen installation of ONOS" )
- main.ONOSbench.onosRemoveRaftLogs()
-
- main.step( "Applying cell variable to environment" )
- cellResult = main.ONOSbench.setCell( cellName )
- verifyResult = main.ONOSbench.verifyCell()
-
- onosInstallResult = main.ONOSbench.onosInstall()
- if onosInstallResult == main.TRUE:
- main.log.report( "Installing ONOS package successful" )
- else:
- main.log.report( "Installing ONOS package failed" )
-
- onos1Isup = main.ONOSbench.isup()
- if onos1Isup == main.TRUE:
- main.log.report( "ONOS instance is up and ready" )
- else:
- main.log.report( "ONOS instance may not be up" )
-
- main.step( "Starting ONOS service" )
- startResult = main.ONOSbench.onosStart( ONOS1Ip )
-
- main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
- case20Result = mininetDisconnect and cellResult and verifyResult \
- and onosInstallResult and onos1Isup and \
- startResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case20Result,
- onpass= "Exiting functionality mininet topology and reinstalling" +
- " ONOS successful",
- onfail= "Exiting functionality mininet topology and reinstalling" +
- " ONOS failed" )
-
- def CASE21( self, main ):
- """
- On ONOS bench, run this command:
- ./~/ONOS/tools/test/bin/onos-topo-cfg
- which starts the rest and copies the links
- json file to the onos instance.
- Note that in case of Packet Optical, the links are not learnt
- from the topology, instead the links are learnt
- from the json config file
- """
- main.log.report(
- "This testcase starts the packet layer topology and REST" )
- main.log.report( "_____________________________________________" )
- main.case( "Starting LINC-OE and other components" )
- main.step( "Starting LINC-OE and other components" )
- startConsoleResult = main.LincOE1.startConsole()
- opticalMnScript = main.LincOE2.runOpticalMnScript()
- onosTopoCfgResult = main.ONOSbench.runOnosTopoCfg(
- instanceName=main.params[ 'CTRL' ][ 'ip1' ],
- jsonFile=main.params[ 'OPTICAL' ][ 'jsonfile' ] )
-
- print "start_console_result =", startConsoleResult
- print "optical_mn_script = ", opticalMnScript
- print "onos_topo_cfg_result =", onosTopoCfgResult
-
- case21Result = startConsoleResult and opticalMnScript and \
- onosTopoCfgResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case21Result,
- onpass="Packet optical topology spawned successsfully",
- onfail="Packet optical topology spawning failed" )
-
- def CASE22( self, main ):
- """
- Curretly we use, 4 linear switch optical topology and
- 2 packet layer mininet switches each with one host.
- Therefore, the roadmCount variable = 4,
- packetLayerSWCount variable = 2 and hostCount = 2
- and this is hardcoded in the testcase. If the topology changes,
- these hardcoded values need to be changed
- """
- main.log.report(
- "This testcase compares the optical+packet topology against what" +
- " is expected" )
- main.case( "Topology comparision" )
- main.step( "Topology comparision" )
- main.ONOS3.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
- devicesResult = main.ONOS3.devices( jsonFormat=False )
-
- print "devices_result = ", devicesResult
- devicesLinewise = devicesResult.split( "\n" )
- devicesLinewise = devicesLinewise[ 1: ]
- roadmCount = 0
- packetLayerSWCount = 0
- for line in devicesLinewise:
- components = line.split( "," )
- availability = components[ 1 ].split( "=" )[ 1 ]
- type = components[ 3 ].split( "=" )[ 1 ]
- if availability == 'true' and type == 'ROADM':
- roadmCount += 1
- elif availability == 'true' and type == 'SWITCH':
- packetLayerSWCount += 1
- if roadmCount == 4:
- print "Number of Optical Switches = %d and is" % roadmCount +\
- " correctly detected"
- main.log.info(
- "Number of Optical Switches = " +
- str( roadmCount ) +
- " and is correctly detected" )
- opticalSWResult = main.TRUE
- else:
- print "Number of Optical Switches = %d and is wrong" % roadmCount
- main.log.info(
- "Number of Optical Switches = " +
- str( roadmCount ) +
- " and is wrong" )
- opticalSWResult = main.FALSE
-
- if packetLayerSWCount == 2:
- print "Number of Packet layer or mininet Switches = %d "\
- % packetLayerSWCount + "and is correctly detected"
- main.log.info(
- "Number of Packet layer or mininet Switches = " +
- str( packetLayerSWCount ) +
- " and is correctly detected" )
- packetSWResult = main.TRUE
- else:
- print "Number of Packet layer or mininet Switches = %d and"\
- % packetLayerSWCount + " is wrong"
- main.log.info(
- "Number of Packet layer or mininet Switches = " +
- str( packetLayerSWCount ) +
- " and is wrong" )
- packetSWResult = main.FALSE
- print "_________________________________"
-
- linksResult = main.ONOS3.links( jsonFormat=False )
- print "links_result = ", linksResult
- print "_________________________________"
-
- # NOTE:Since only point intents are added, there is no
- # requirement to discover the hosts
- # Therfore, the below portion of the code is commented.
- """
- #Discover hosts using pingall
- pingallResult = main.LincOE2.pingall()
-
- hostsResult = main.ONOS3.hosts( jsonFormat=False )
- main.log.info( "hosts_result = "+hostsResult )
- main.log.info( "_________________________________" )
- hostsLinewise = hostsResult.split( "\n" )
- hostsLinewise = hostsLinewise[ 1:-1 ]
- hostCount = 0
- for line in hostsLinewise:
- hostid = line.split( "," )[ 0 ].split( "=" )[ 1 ]
- hostCount +=1
- if hostCount ==2:
- print "Number of hosts = %d and is correctly detected" %hostCount
- main.log.info( "Number of hosts = " + str( hostCount ) +" and \
- is correctly detected" )
- hostDiscovery = main.TRUE
- else:
- print "Number of hosts = %d and is wrong" %hostCount
- main.log.info( "Number of hosts = " + str( hostCount ) +" and \
- is wrong" )
- hostDiscovery = main.FALSE
- """
- case22Result = opticalSWResult and packetSWResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case22Result,
- onpass="Packet optical topology discovery successful",
- onfail="Packet optical topology discovery failed" )
-
- def CASE23( self, main ):
- import time
- """
- Add bidirectional point intents between 2 packet layer( mininet )
- devices and
- ping mininet hosts
- """
- main.log.report(
- "This testcase adds bidirectional point intents between 2 " +
- "packet layer( mininet ) devices and ping mininet hosts" )
- main.case( "Topology comparision" )
- main.step( "Adding point intents" )
- ptpIntentResult = main.ONOS3.addPointIntent(
- "of:0000ffffffff0001/1",
- "of:0000ffffffff0002/1" )
- if ptpIntentResult == main.TRUE:
- main.ONOS3.intents( jsonFormat=False )
- main.log.info( "Point to point intent install successful" )
-
- ptpIntentResult = main.ONOS3.addPointIntent(
- "of:0000ffffffff0002/1",
- "of:0000ffffffff0001/1" )
- if ptpIntentResult == main.TRUE:
- main.ONOS3.intents( jsonFormat=False )
- main.log.info( "Point to point intent install successful" )
-
- time.sleep( 10 )
- flowHandle = main.ONOS3.flows()
- main.log.info( "flows :" + flowHandle )
-
- # Sleep for 30 seconds to provide time for the intent state to change
- time.sleep( 30 )
- intentHandle = main.ONOS3.intents( jsonFormat=False )
- main.log.info( "intents :" + intentHandle )
-
- PingResult = main.TRUE
- count = 1
- main.log.info( "\n\nh1 is Pinging h2" )
- ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
- # ping = main.LincOE2.pinghost()
- if ping == main.FALSE and count < 5:
- count += 1
- PingResult = main.FALSE
- main.log.info(
- "Ping between h1 and h2 failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.info( "All ping attempts between h1 and h2 have failed" )
- PingResult = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h1 and h2 passed!" )
- PingResult = main.TRUE
- else:
- main.log.info( "Unknown error" )
- PingResult = main.ERROR
-
- if PingResult == main.FALSE:
- main.log.report(
- "Point intents for packet optical have not ben installed" +
- " correctly. Cleaning up" )
- if PingResult == main.TRUE:
- main.log.report(
- "Point Intents for packet optical have been " +
- "installed correctly" )
-
- case23Result = PingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case23Result,
- onpass= "Point intents addition for packet optical and" +
- "Pingall Test successful",
- onfail= "Point intents addition for packet optical and" +
- "Pingall Test NOT successful" )
-
- def CASE24( self, main ):
- import time
- import json
- """
- Test Rerouting of Packet Optical by bringing a port down
- ( port 22 ) of a switch( switchID=1 ), so that link
- ( between switch1 port22 - switch4-port30 ) is inactive
- and do a ping test. If rerouting is successful,
- ping should pass. also check the flows
- """
- main.log.report(
- "This testcase tests rerouting and pings mininet hosts" )
- main.case( "Test rerouting and pings mininet hosts" )
- main.step( "Bring a port down and verify the link state" )
- main.LincOE1.portDown( swId="1", ptId="22" )
- linksNonjson = main.ONOS3.links( jsonFormat=False )
- main.log.info( "links = " + linksNonjson )
-
- links = main.ONOS3.links()
- main.log.info( "links = " + links )
-
- linksResult = json.loads( links )
- linksStateResult = main.FALSE
- for item in linksResult:
- if item[ 'src' ][ 'device' ] == "of:0000ffffffffff01" and item[
- 'src' ][ 'port' ] == "22":
- if item[ 'dst' ][ 'device' ] == "of:0000ffffffffff04" and item[
- 'dst' ][ 'port' ] == "30":
- linksState = item[ 'state' ]
- if linksState == "INACTIVE":
- main.log.info(
- "Links state is inactive as expected due to one" +
- " of the ports being down" )
- main.log.report(
- "Links state is inactive as expected due to one" +
- " of the ports being down" )
- linksStateResult = main.TRUE
- break
- else:
- main.log.info(
- "Links state is not inactive as expected" )
- main.log.report(
- "Links state is not inactive as expected" )
- linksStateResult = main.FALSE
-
- print "links_state_result = ", linksStateResult
- time.sleep( 10 )
- flowHandle = main.ONOS3.flows()
- main.log.info( "flows :" + flowHandle )
-
- main.step( "Verify Rerouting by a ping test" )
- PingResult = main.TRUE
- count = 1
- main.log.info( "\n\nh1 is Pinging h2" )
- ping = main.LincOE2.pingHostOptical( src="h1", target="h2" )
- # ping = main.LincOE2.pinghost()
- if ping == main.FALSE and count < 5:
- count += 1
- PingResult = main.FALSE
- main.log.info(
- "Ping between h1 and h2 failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.info( "All ping attempts between h1 and h2 have failed" )
- PingResult = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h1 and h2 passed!" )
- PingResult = main.TRUE
- else:
- main.log.info( "Unknown error" )
- PingResult = main.ERROR
-
- if PingResult == main.TRUE:
- main.log.report( "Ping test successful " )
- if PingResult == main.FALSE:
- main.log.report( "Ping test failed" )
-
- case24Result = PingResult and linksStateResult
- utilities.assert_equals( expect=main.TRUE, actual=case24Result,
- onpass="Packet optical rerouting successful",
- onfail="Packet optical rerouting failed" )
-
- def CASE4( self, main ):
- import re
- import time
- main.log.report( "This testcase is testing the assignment of" +
- " all the switches to all the controllers and" +
- " discovering the hosts in reactive mode" )
- main.log.report( "__________________________________" )
- main.case( "Pingall Test" )
- main.step( "Assigning switches to controllers" )
- ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
- ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
- for i in range( 1, 29 ):
- if i == 1:
- main.Mininet1.assignSwController(
- sw=str( i ),
- ip1=ONOS1Ip,
- port1=ONOS1Port )
- elif i >= 2 and i < 5:
- main.Mininet1.assignSwController(
- sw=str( i ),
- ip1=ONOS1Ip,
- port1=ONOS1Port )
- elif i >= 5 and i < 8:
- main.Mininet1.assignSwController(
- sw=str( i ),
- ip1=ONOS1Ip,
- port1=ONOS1Port )
- elif i >= 8 and i < 18:
- main.Mininet1.assignSwController(
- sw=str( i ),
- ip1=ONOS1Ip,
- port1=ONOS1Port )
- elif i >= 18 and i < 28:
- main.Mininet1.assignSwController(
- sw=str( i ),
- ip1=ONOS1Ip,
- port1=ONOS1Port )
- else:
- main.Mininet1.assignSwController(
- sw=str( i ),
- ip1=ONOS1Ip,
- port1=ONOS1Port )
- SwitchMastership = main.TRUE
- for i in range( 1, 29 ):
- if i == 1:
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + ONOS1Ip, response ):
- SwitchMastership = SwitchMastership and main.TRUE
- else:
- SwitchMastership = main.FALSE
- elif i >= 2 and i < 5:
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + ONOS1Ip, response ):
- SwitchMastership = SwitchMastership and main.TRUE
- else:
- SwitchMastership = main.FALSE
- elif i >= 5 and i < 8:
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + ONOS1Ip, response ):
- SwitchMastership = SwitchMastership and main.TRUE
- else:
- SwitchMastership = main.FALSE
- elif i >= 8 and i < 18:
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + ONOS1Ip, response ):
- SwitchMastership = SwitchMastership and main.TRUE
- else:
- SwitchMastership = main.FALSE
- elif i >= 18 and i < 28:
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is " + str( response ) )
- if re.search( "tcp:" + ONOS1Ip, response ):
- SwitchMastership = SwitchMastership and main.TRUE
- else:
- SwitchMastership = main.FALSE
- else:
- response = main.Mininet1.getSwController( "s" + str( i ) )
- print( "Response is" + str( response ) )
- if re.search( "tcp:" + ONOS1Ip, response ):
- SwitchMastership = SwitchMastership and main.TRUE
- else:
- SwitchMastership = main.FALSE
-
- if SwitchMastership == main.TRUE:
- main.log.report( "Controller assignmnet successful" )
- else:
- main.log.report( "Controller assignmnet failed" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=SwitchMastership,
- onpass="MasterControllers assigned correctly" )
- """
- for i in range ( 1,29 ):
- main.Mininet1.assignSwController( sw=str( i ),count=5,
- ip1=ONOS1Ip,port1=ONOS1Port,
- ip2=ONOS2Ip,port2=ONOS2Port,
- ip3=ONOS3Ip,port3=ONOS3Port,
- ip4=ONOS4Ip,port4=ONOS4Port,
- ip5=ONOS5Ip,port5=ONOS5Port )
- """
- # REACTIVE FWD test
-
- main.step( "Get list of hosts from Mininet" )
- hostList = main.Mininet1.getHosts()
- main.log.info( hostList )
-
- main.step( "Get host list in ONOS format" )
- hostOnosList = main.ONOS2.getHostsId( hostList )
- main.log.info( hostOnosList )
- # time.sleep( 5 )
-
- main.step( "Pingall" )
- pingResult = main.FALSE
- time1 = time.time()
- pingResult = main.Mininet1.pingall()
- time2 = time.time()
- print "Time for pingall: %2f seconds" % ( time2 - time1 )
-
- # Start onos cli again because u might have dropped out of
- # onos prompt to the shell prompt
- # if there was no activity
- main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
-
- case4Result = SwitchMastership and pingResult
- if pingResult == main.TRUE:
- main.log.report( "Pingall Test in reactive mode to" +
- " discover the hosts successful" )
- else:
- main.log.report( "Pingall Test in reactive mode to" +
- " discover the hosts failed" )
-
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case4Result,
- onpass="Controller assignment and Pingall Test successful",
- onfail="Controller assignment and Pingall Test NOT successful" )
-
- def CASE10( self ):
- main.log.report(
- "This testcase uninstalls the reactive forwarding app" )
- main.log.report( "__________________________________" )
- main.case( "Uninstalling reactive forwarding app" )
- main.step( "Uninstalling reactive forwarding app" )
- # Unistall onos-app-fwd app to disable reactive forwarding
- appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
- main.log.info( "onos-app-fwd uninstalled" )
-
- # After reactive forwarding is disabled, the reactive flows on
- # switches timeout in 10-15s
- # So sleep for 15s
- time.sleep( 15 )
-
- flows = main.ONOS2.flows()
- #main.log.info( flows )
-
- case10Result = appUninstallResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case10Result,
- onpass="Reactive forwarding app uninstallation successful",
- onfail="Reactive forwarding app uninstallation failed" )
-
- def CASE6( self ):
- main.log.report( "This testcase is testing the addition of" +
- " host intents and then does pingall" )
- main.log.report( "__________________________________" )
- main.case( "Obtaining host id's" )
- main.step( "Get hosts" )
- hosts = main.ONOS2.hosts()
- main.log.info( hosts )
-
- main.step( "Get all devices id" )
- devicesIdList = main.ONOS2.getAllDevicesId()
- main.log.info( devicesIdList )
-
- # ONOS displays the hosts in hex format unlike mininet which does
- # in decimal format
- # So take care while adding intents
- """
- main.step( "Add host-to-host intents for mininet hosts h8 and h18 or
- ONOS hosts h8 and h12" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:08/-1", "00:00:00:00:00:12/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:09/-1", "00:00:00:00:00:13/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:0A/-1", "00:00:00:00:00:14/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:0B/-1", "00:00:00:00:00:15/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:0C/-1", "00:00:00:00:00:16/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:0D/-1", "00:00:00:00:00:17/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:0E/-1", "00:00:00:00:00:18/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:0F/-1", "00:00:00:00:00:19/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:10/-1", "00:00:00:00:00:1A/-1" )
- hthIntentResult = main.ONOS2.addHostIntent(
- "00:00:00:00:00:11/-1", "00:00:00:00:00:1B/-1" )
- print "______________________________________________________"
- """
- for i in range( 8, 18 ):
- main.log.info(
- "Adding host intent between h" + str( i ) +
- " and h" + str( i + 10 ) )
- host1 = "00:00:00:00:00:" + \
- str( hex( i )[ 2: ] ).zfill( 2 ).upper()
- host2 = "00:00:00:00:00:" + \
- str( hex( i + 10 )[ 2: ] ).zfill( 2 ).upper()
- # NOTE: get host can return None
- # TODO: handle this
- host1Id = main.ONOS2.getHost( host1 )[ 'id' ]
- host2Id = main.ONOS2.getHost( host2 )[ 'id' ]
- main.ONOS2.addHostIntent( host1Id, host2Id )
- hIntents = main.ONOS2.intents( jsonFormat=False )
- main.log.info( "intents:" + hIntents )
-
- time.sleep( 10 )
- hIntents = main.ONOS2.intents( jsonFormat=False )
- main.log.info( "intents:" + hIntents )
- main.ONOS2.flows()
-
- count = 1
- i = 8
- PingResult = main.TRUE
- # while i<10:
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 5:
- count += 1
- # i = 8
- PingResult = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- PingResult = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- PingResult = main.TRUE
- else:
- main.log.info( "Unknown error" )
- PingResult = main.ERROR
- if PingResult == main.FALSE:
- main.log.report(
- "Ping all test after Host intent addition failed.Cleaning up" )
- # main.cleanup()
- # main.exit()
- if PingResult == main.TRUE:
- main.log.report(
- "Ping all test after Host intent addition successful" )
-
- case6Result = PingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case6Result,
- onpass="Pingall Test after Host intents addition successful",
- onfail="Pingall Test after Host intents addition failed" )
-
- def CASE5( self, main ):
- import json
- # assumes that sts is already in you PYTHONPATH
- from sts.topology.teston_topology import TestONTopology
- # main.ONOS2.startOnosCli( ONOSIp=main.params[ 'CTRL' ][ 'ip1' ] )
- main.log.report( "This testcase is testing if all ONOS nodes" +
- " are in topology sync with mininet" )
- main.log.report( "__________________________________" )
- main.case( "Comparing Mininet topology with the topology of ONOS" )
- main.step( "Start continuous pings" )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong(
- src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
-
- main.step( "Create TestONTopology object" )
- global ctrls
- ctrls = []
- count = 1
- while True:
- temp = ()
- if ( 'ip' + str( count ) ) in main.params[ 'CTRL' ]:
- temp = temp + ( getattr( main, ( 'ONOS' + str( count ) ) ), )
- temp = temp + ( "ONOS" + str( count ), )
- temp = temp + ( main.params[ 'CTRL' ][ 'ip' + str( count ) ], )
- temp = temp + \
- ( eval( main.params[ 'CTRL' ][ 'port' + str( count ) ] ), )
- ctrls.append( temp )
- count = count + 1
- else:
- break
- global MNTopo
- Topo = TestONTopology(
- main.Mininet1,
- ctrls ) # can also add Intent API info for intent operations
- MNTopo = Topo
-
- TopologyCheck = main.TRUE
- main.step( "Compare ONOS Topology to MN Topology" )
- devicesJson = main.ONOS2.devices()
- linksJson = main.ONOS2.links()
- # portsJson = main.ONOS2.ports()
-
- result1 = main.Mininet1.compareSwitches(
- MNTopo,
- json.loads( devicesJson ) )
- result2 = main.Mininet1.compareLinks(
- MNTopo,
- json.loads( linksJson ) )
- # result3 = main.Mininet1.comparePorts(
- # MNTopo, json.loads( portsJson ) )
-
- # result = result1 and result2 and result3
- result = result1 and result2
-
- print "***********************"
- if result == main.TRUE:
- main.log.report( "ONOS" + " Topology matches MN Topology" )
- else:
- main.log.report( "ONOS" + " Topology does not match MN Topology" )
-
- utilities.assert_equals(
- expect=main.TRUE,
- actual=result,
- onpass="ONOS" +
- " Topology matches MN Topology",
- onfail="ONOS" +
- " Topology does not match MN Topology" )
-
- TopologyCheck = TopologyCheck and result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=TopologyCheck,
- onpass="Topology checks passed",
- onfail="Topology checks failed" )
-
- def CASE7( self, main ):
- from sts.topology.teston_topology import TestONTopology
-
- linkSleep = int( main.params[ 'timers' ][ 'LinkDiscovery' ] )
-
- main.log.report( "This testscase is killing a link to ensure that" +
- " link discovery is consistent" )
- main.log.report( "__________________________________" )
- main.log.report( "Killing a link to ensure that link discovery" +
- " is consistent" )
- main.case( "Killing a link to Ensure that Link Discovery" +
- "is Working Properly" )
- """
- main.step( "Start continuous pings" )
-
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source1' ],
- target=main.params[ 'PING' ][ 'target1' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source2' ],
- target=main.params[ 'PING' ][ 'target2' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source3' ],
- target=main.params[ 'PING' ][ 'target3' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source4' ],
- target=main.params[ 'PING' ][ 'target4' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source5' ],
- target=main.params[ 'PING' ][ 'target5' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source6' ],
- target=main.params[ 'PING' ][ 'target6' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source7' ],
- target=main.params[ 'PING' ][ 'target7' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source8' ],
- target=main.params[ 'PING' ][ 'target8' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source9' ],
- target=main.params[ 'PING' ][ 'target9' ],
- pingTime=500 )
- main.Mininet2.pingLong( src=main.params[ 'PING' ][ 'source10' ],
- target=main.params[ 'PING' ][ 'target10' ],
- pingTime=500 )
- """
- main.step( "Determine the current number of switches and links" )
- topologyOutput = main.ONOS2.topology()
- topologyResult = main.ONOS1.getTopology( topologyOutput )
- activeSwitches = topologyResult[ 'devices' ]
- links = topologyResult[ 'links' ]
- print "activeSwitches = ", type( activeSwitches )
- print "links = ", type( links )
- main.log.info(
- "Currently there are %s switches and %s links" %
- ( str( activeSwitches ), str( links ) ) )
-
- main.step( "Kill Link between s3 and s28" )
- main.Mininet1.link( END1="s3", END2="s28", OPTION="down" )
- time.sleep( linkSleep )
- topologyOutput = main.ONOS2.topology()
- LinkDown = main.ONOS1.checkStatus(
- topologyOutput, activeSwitches, str(
- int( links ) - 2 ) )
- if LinkDown == main.TRUE:
- main.log.report( "Link Down discovered properly" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=LinkDown,
- onpass="Link Down discovered properly",
- onfail="Link down was not discovered in " +
- str( linkSleep ) +
- " seconds" )
-
- # Check ping result here..add code for it
-
- main.step( "Bring link between s3 and s28 back up" )
- LinkUp = main.Mininet1.link( END1="s3", END2="s28", OPTION="up" )
- time.sleep( linkSleep )
- topologyOutput = main.ONOS2.topology()
- LinkUp = main.ONOS1.checkStatus(
- topologyOutput,
- activeSwitches,
- str( links ) )
- if LinkUp == main.TRUE:
- main.log.report( "Link up discovered properly" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=LinkUp,
- onpass="Link up discovered properly",
- onfail="Link up was not discovered in " +
- str( linkSleep ) +
- " seconds" )
-
- # NOTE Check ping result here..add code for it
-
- main.step( "Compare ONOS Topology to MN Topology" )
- Topo = TestONTopology(
- main.Mininet1,
- ctrls ) # can also add Intent API info for intent operations
- MNTopo = Topo
- TopologyCheck = main.TRUE
-
- devicesJson = main.ONOS2.devices()
- linksJson = main.ONOS2.links()
- portsJson = main.ONOS2.ports()
-
- result1 = main.Mininet1.compareSwitches(
- MNTopo,
- json.loads( devicesJson ) )
- result2 = main.Mininet1.compareLinks(
- MNTopo,
- json.loads( linksJson ) )
- # result3 = main.Mininet1.comparePorts(
- # MNTopo, json.loads( portsJson ) )
-
- # result = result1 and result2 and result3
- result = result1 and result2
- print "***********************"
-
- if result == main.TRUE:
- main.log.report( "ONOS" + " Topology matches MN Topology" )
- utilities.assert_equals(
- expect=main.TRUE,
- actual=result,
- onpass="ONOS" +
- " Topology matches MN Topology",
- onfail="ONOS" +
- " Topology does not match MN Topology" )
-
- TopologyCheck = TopologyCheck and result
- utilities.assert_equals(
- expect=main.TRUE,
- actual=TopologyCheck,
- onpass="Topology checks passed",
- onfail="Topology checks failed" )
-
- result = LinkDown and LinkUp and TopologyCheck
- utilities.assert_equals( expect=main.TRUE, actual=result,
- onpass="Link failure is discovered correctly",
- onfail="Link Discovery failed" )
-
- def CASE8( self ):
- """
- Intent removal
- """
- import time
- main.log.report( "This testcase removes any previously added intents" +
- " before adding any new set of intents" )
- main.log.report( "__________________________________" )
- main.log.info( "intent removal" )
- main.case( "Removing installed intents" )
- main.step( "Obtain the intent id's" )
- intentResult = main.ONOS2.intents( jsonFormat=False )
- main.log.info( "intent_result = " + intentResult )
- intentLinewise = intentResult.split( "\n" )
- intentList = []
- for line in intentLinewise:
- if line.startswith( "id=" ):
- intentList.append( line )
-
- intentids = []
- for line in intentList:
- intentids.append( line.split( "," )[ 0 ].split( "=" )[ 1 ] )
- for id in intentids:
- print "id = ", id
-
- main.step(
- "Iterate through the intentids list and remove each intent" )
- for id in intentids:
- main.ONOS2.removeIntent( intentId=id )
-
- intentResult = main.ONOS2.intents( jsonFormat=False )
- main.log.info( "intent_result = " + intentResult )
-
- case8Result = main.TRUE
- if case8Result == main.TRUE:
- main.log.report( "Intent removal successful" )
- else:
- main.log.report( "Intent removal failed" )
-
- PingResult = main.TRUE
- if case8Result == main.TRUE:
- i = 8
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.TRUE:
- i = 19
- PingResult = PingResult and main.TRUE
- elif ping == main.FALSE:
- i += 1
- PingResult = PingResult and main.FALSE
- else:
- main.log.info( "Unknown error" )
- PingResult = main.ERROR
-
- # Note: If the ping result failed, that means the intents have been
- # withdrawn correctly.
- if PingResult == main.TRUE:
- main.log.report( "Installed intents have not been withdrawn correctly" )
- # main.cleanup()
- # main.exit()
- if PingResult == main.FALSE:
- main.log.report( "Installed intents have been withdrawn correctly" )
-
- case8Result = case8Result and PingResult
-
- if case8Result == main.FALSE:
- main.log.report( "Intent removal successful" )
- else:
- main.log.report( "Intent removal failed" )
-
- utilities.assert_equals( expect=main.FALSE, actual=case8Result,
- onpass="Intent removal test passed",
- onfail="Intent removal test failed" )
-
- def CASE9( self ):
- main.log.report(
- "This testcase adds point intents and then does pingall" )
- main.log.report( "__________________________________" )
- main.log.info( "Adding point intents" )
- main.case(
- "Adding bidirectional point for mn hosts" +
- "( h8-h18, h9-h19, h10-h20, h11-h21, h12-h22, " +
- "h13-h23, h14-h24, h15-h25, h16-h26, h17-h27 )" )
-
- main.step( "Add point intents for mn hosts h8 and h18 or" +
- "ONOS hosts h8 and h12" )
- # main.step(var1)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003008/1",
- "of:0000000000006018/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006018/1",
- "of:0000000000003008/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var2 = "Add point intents for mn hosts h9&h19 or ONOS hosts h9&h13"
- main.step(var2)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003009/1",
- "of:0000000000006019/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006019/1",
- "of:0000000000003009/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var3 = "Add point intents for MN hosts h10&h20 or ONOS hosts hA&h14"
- main.step(var3)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003010/1",
- "of:0000000000006020/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006020/1",
- "of:0000000000003010/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var4 = "Add point intents for mininet hosts h11 and h21 or" +\
- " ONOS hosts hB and h15"
- main.case(var4)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003011/1",
- "of:0000000000006021/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006021/1",
- "of:0000000000003011/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var5 = "Add point intents for mininet hosts h12 and h22 " +\
- "ONOS hosts hC and h16"
- main.case(var5)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003012/1",
- "of:0000000000006022/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006022/1",
- "of:0000000000003012/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var6 = "Add point intents for mininet hosts h13 and h23 or" +\
- " ONOS hosts hD and h17"
- main.case(var6)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003013/1",
- "of:0000000000006023/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006023/1",
- "of:0000000000003013/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var7 = "Add point intents for mininet hosts h14 and h24 or" +\
- " ONOS hosts hE and h18"
- main.case(var7)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003014/1",
- "of:0000000000006024/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006024/1",
- "of:0000000000003014/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var8 = "Add point intents for mininet hosts h15 and h25 or" +\
- " ONOS hosts hF and h19"
- main.case(var8)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003015/1",
- "of:0000000000006025/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006025/1",
- "of:0000000000003015/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var9 = "Add intents for mininet hosts h16 and h26 or" +\
- " ONOS hosts h10 and h1A"
- main.case(var9)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003016/1",
- "of:0000000000006026/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006026/1",
- "of:0000000000003016/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- var10 = "Add point intents for mininet hosts h17 and h27 or" +\
- " ONOS hosts h11 and h1B"
- main.case(var10)
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003017/1",
- "of:0000000000006027/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000006027/1",
- "of:0000000000003017/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- main.log.info( getIntentResult )
-
- print(
- "___________________________________________________________" )
-
- flowHandle = main.ONOS2.flows()
- #main.log.info( "flows :" + flowHandle )
-
- count = 1
- i = 8
- PingResult = main.TRUE
- while i < 18:
- main.log.info(
- "\n\nh" + str( i ) + " is Pinging h" + str( i + 10 ) )
- ping = main.Mininet1.pingHost(
- src="h" + str( i ), target="h" + str( i + 10 ) )
- if ping == main.FALSE and count < 5:
- count += 1
- # i = 8
- PingResult = main.FALSE
- main.log.report( "Ping between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- " failed. Making attempt number " +
- str( count ) +
- " in 2 seconds" )
- time.sleep( 2 )
- elif ping == main.FALSE:
- main.log.report( "All ping attempts between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "have failed" )
- i = 19
- PingResult = main.FALSE
- elif ping == main.TRUE:
- main.log.info( "Ping test between h" +
- str( i ) +
- " and h" +
- str( i +
- 10 ) +
- "passed!" )
- i += 1
- PingResult = main.TRUE
- else:
- main.log.info( "Unknown error" )
- PingResult = main.ERROR
-
- if PingResult == main.FALSE:
- main.log.report(
- "Point intents have not ben installed correctly. Cleaning up" )
- # main.cleanup()
- # main.exit()
- if PingResult == main.TRUE:
- main.log.report( "Point Intents have been installed correctly" )
-
- case9Result = PingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case9Result,
- onpass="Point intents addition and Pingall Test successful",
- onfail="Point intents addition and Pingall Test NOT successful" )
-
-
- def CASE11( self ):
- # NOTE: This testcase require reactive forwarding mode enabled
- # NOTE: in the beginning and then uninstall it before adding
- # NOTE: point intents. Again the app is installed so that
- # NOTE: testcase 10 can be ran successively
- import time
- main.log.report(
- "This testcase moves a host from one switch to another to add" +
- "point intents between them and then perform ping" )
- main.log.report( "__________________________________" )
- main.log.info( "Moving host from one switch to another" )
- main.case( "Moving host from a device and attach it to another device" )
- main.step( "Moving host h9 from device s9 and attach it to s8" )
- main.Mininet1.moveHost(host = 'h9', oldSw = 's9', newSw = 's8')
-
- time.sleep(15) #Time delay to have all the flows ready
- main.step( "Pingall" )
- pingResult = main.FALSE
- time1 = time.time()
- pingResult = main.Mininet1.pingall()
- time2 = time.time()
- print "Time for pingall: %2f seconds" % ( time2 - time1 )
-
- hosts = main.ONOS2.hosts( jsonFormat = False )
- main.log.info( hosts )
-
- main.case( "Uninstalling reactive forwarding app" )
- # Unistall onos-app-fwd app to disable reactive forwarding
- appUninstallResult = main.ONOS2.featureUninstall( "onos-app-fwd" )
- main.log.info( "onos-app-fwd uninstalled" )
-
- main.step( "Add point intents between hosts on the same device")
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003008/1",
- "of:0000000000003008/3" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- ptpIntentResult = main.ONOS2.addPointIntent(
- "of:0000000000003008/3",
- "of:0000000000003008/1" )
- if ptpIntentResult == main.TRUE:
- getIntentResult = main.ONOS2.intents()
- main.log.info( "Point to point intent install successful" )
- # main.log.info( getIntentResult )
-
- main.case( "Ping hosts on the same devices" )
- ping = main.Mininet1.pingHost( src = 'h8', target = 'h9' )
-
- main.case( "Installing reactive forwarding app" )
- # Install onos-app-fwd app to enable reactive forwarding
- appUninstallResult = main.ONOS2.featureInstall( "onos-app-fwd" )
- main.log.info( "onos-app-fwd installed" )
-
-
- if ping == main.FALSE:
- main.log.report(
- "Point intents for hosts on same devices haven't" +
- " been installed correctly. Cleaning up" )
- if ping == main.TRUE:
- main.log.report(
- "Point intents for hosts on same devices" +
- "installed correctly. Cleaning up" )
-
- case11Result = ping and pingResult
- utilities.assert_equals(
- expect=main.TRUE,
- actual=case11Result,
- onpass= "Point intents for hosts on same devices" +
- "Ping Test successful",
- onfail= "Point intents for hosts on same devices" +
- "Ping Test NOT successful" )
diff --git a/TestON/tests/ProdFunc/__init__.py b/TestON/tests/ProdFunc/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/ProdFunc/__init__.py
diff --git a/TestON/tests/ProdFunc13/__init__.py b/TestON/tests/ProdFunc13/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/ProdFunc13/__init__.py
diff --git a/TestON/tests/TopoConvNext/__init__.py b/TestON/tests/TopoConvNext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/TopoConvNext/__init__.py
diff --git a/TestON/tests/TopoPerfNext/__init__.py b/TestON/tests/TopoPerfNext/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/TopoPerfNext/__init__.py
diff --git a/TestON/tests/TopoPerfNextSingleNode/__init__.py b/TestON/tests/TopoPerfNextSingleNode/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/TestON/tests/TopoPerfNextSingleNode/__init__.py