Updating Tests
diff --git a/TestON/drivers/common/api/onosrestapidriver.py b/TestON/drivers/common/api/onosrestapidriver.py
index fd00bb4..4af2603 100644
--- a/TestON/drivers/common/api/onosrestapidriver.py
+++ b/TestON/drivers/common/api/onosrestapidriver.py
@@ -93,26 +93,39 @@
'''
return response
- def find_host(self,RestIP,RestPort,RestAPI,hostMAC):
+ def find_host(self,RestIP,RestPort,RestAPI,hostIP):
retcode = 0
+ retswitch = ''
+ retport = ''
+ retmac = ''
+ foundIP = ''
+ ##### device rest API is: 'host:8080/wm/core/topology/switches/all/json' ###
url ="http://%s:%s%s" %(RestIP,RestPort,RestAPI)
try:
command = "curl -s %s" % (url)
result = os.popen(command).read()
parsedResult = json.loads(result)
- print parsedResult
+ # print parsedResult
except:
print "REST IF %s has issue" % command
parsedResult = ""
- if type(parsedResult) == 'dict' and parsedResult.has_key('code'):
- print "REST %s returned code %s" % (command, parsedResult['code'])
- parsedResult = ""
if parsedResult == "":
return (retcode, "Rest API has an error")
else:
- found = [item for item in parsedResult if item['mac'] == [str(hostMAC)]]
- retcode = 1
- return (retcode, found)
+ for switch in enumerate(parsedResult):
+ for port in enumerate(switch[1]['ports']):
+ if ( port[1]['devices'] != [] ):
+ try:
+ foundIP = port[1]['devices'][0]['ipv4addresses'][0]['ipv4']
+ except:
+ print "Error in detecting IP address."
+ if foundIP == hostIP:
+ retcode = retcode +1
+ retswitch = switch[1]['dpid']
+ retport = port[1]['desc']
+ retmac = port[1]['devices'][0]['mac']
+ foundIP =''
+ return(retcode, retswitch, retport, retmac)
diff --git a/TestON/drivers/common/api/onosrestapidriver.pyc b/TestON/drivers/common/api/onosrestapidriver.pyc
index f490913..2476b24 100644
--- a/TestON/drivers/common/api/onosrestapidriver.pyc
+++ b/TestON/drivers/common/api/onosrestapidriver.pyc
Binary files differ
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 3aab38b..449e30d 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -237,11 +237,14 @@
def get_version(self):
'''
Writes the COMMIT number to the report to be parsed by Jenkins data collecter.
- '''
- self.handle.sendline("cat /home/admin/ONOS/.git/ORIG_HEAD")
- self.handle.expect("ORIG_HEAD")
+ '''
+ self.handle.sendline("export TERM=xterm-256color")
+ self.handle.expect("xterm-256color")
+ self.handle.expect("\$")
+ self.handle.sendline("cd ONOS; git log -1; cd \.\.")
+ self.handle.expect("cd ..")
self.handle.expect("\$")
- main.log.report( "COMMIT: " + str(self.handle.before + self.handle.after))
+ main.log.report( str(self.handle.before + self.handle.after))
def add_flow(self, path):
'''
@@ -382,12 +385,12 @@
buf = ""
retcode = 0
RestPort="8080"
- url="http://%s:%s/wm/core/topology/switches/all/json" % (RestIP, RestPort)
+ url="http://%s:%s/wm/onos/topology/switches/all/json" % (RestIP, RestPort)
parsedResult = self.get_json(url)
if parsedResult == "":
retcode = 1
return (retcode, "Rest API has an issue")
- url = "http://%s:%s/wm/registry/switches/json" % (RestIP, RestPort)
+ url = "http://%s:%s/wm/onos/registry/switches/json" % (RestIP, RestPort)
registry = self.get_json(url)
if registry == "":
@@ -421,7 +424,7 @@
buf = ""
retcode = 0
- url = "http://%s:%s/wm/core/topology/links/json" % (RestIP, RestPort)
+ url = "http://%s:%s/wm/onos/topology/links/json" % (RestIP, RestPort)
parsedResult = self.get_json(url)
if parsedResult == "":
@@ -526,7 +529,7 @@
self.handle.sendline("git pull")
uptodate = 0
- i=self.handle.expect(['fatal','Username\sfor\s(.*):\s','Unpacking\sobjects',pexpect.TIMEOUT,'Already up-to-date','Aborting'],timeout=60)
+ i=self.handle.expect(['fatal','Username\sfor\s(.*):\s','Unpacking\sobjects',pexpect.TIMEOUT,'Already up-to-date','Aborting'],timeout=180)
if i==0:
main.log.error("Git pull had some issue...")
return main.FALSE
@@ -543,10 +546,10 @@
else:
main.log.error("something went wrong")
return main.FALSE
- self.handle.expect("ONOS\$", 30)
+ self.handle.expect("ONOS\$", 120)
elif i==2:
main.log.info("pulling repository now")
- self.handle.expect("ONOS\$", 30)
+ self.handle.expect("ONOS\$", 120)
elif i==3:
main.log.error("TIMEOUT")
return main.FALSE
diff --git a/TestON/drivers/common/cli/onosclidriver.pyc b/TestON/drivers/common/cli/onosclidriver.pyc
index 3ffd757..f3ecc1a 100644
--- a/TestON/drivers/common/cli/onosclidriver.pyc
+++ b/TestON/drivers/common/cli/onosclidriver.pyc
Binary files differ
diff --git a/TestON/tests/OnosCHO4nodes/.OnosSanity.topo.swp b/TestON/tests/OnosCHO4nodes/.OnosSanity.topo.swp
deleted file mode 100644
index c2a0aff..0000000
--- a/TestON/tests/OnosCHO4nodes/.OnosSanity.topo.swp
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.params.swp b/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.params.swp
deleted file mode 100644
index 127ce94..0000000
--- a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.params.swp
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.py.swn b/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.py.swn
deleted file mode 100644
index cb578ac..0000000
--- a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.py.swn
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.py.swo b/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.py.swo
deleted file mode 100644
index 5389b47..0000000
--- a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.py.swo
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.topo.swp b/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.topo.swp
deleted file mode 100644
index 1500dc4..0000000
--- a/TestON/tests/OnosCHO4nodes/.OnosSanity4nodes.topo.swp
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.params b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.params
index ebaf5d7..9740c48 100644
--- a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.params
+++ b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.params
@@ -1,6 +1,8 @@
<PARAMS>
- <testcases>1,2,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7 </testcases>
+ <testcases>1,2,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7,3,4,5,6,7</testcases>
<FLOWDEF>~/flowdef_files/Center_Triangle/flowdef_20.txt</FLOWDEF>
+ <pingSleep>1</pingSleep>
+ <pingAttempts>15</pingAttempts>
<CASE1>
<destination>h6</destination>
</CASE1>
@@ -15,16 +17,16 @@
<end>s2</end>
</LINK>
<CTRL>
- <ip1>10.128.100.1</ip1>
+ <ip1>10.128.100.21</ip1>
<port1>6633</port1>
- <ip2>10.128.100.4</ip2>
+ <ip2>10.128.100.22</ip2>
<port2>6633</port2>
- <ip3>10.128.100.5</ip3>
+ <ip3>10.128.100.23</ip3>
<port3>6633</port3>
- <ip4>10.128.100.6</ip4>
+ <ip4>10.128.100.24</ip4>
<port4>6633</port4>
</CTRL>
- <RestIP> 10.128.100.1 </RestIP>
+ <RestIP> 10.128.100.21 </RestIP>
<NR_Switches>25</NR_Switches>
<NR_Links>50</NR_Links>
</PARAMS>
diff --git a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py
index 82410d2..6eada76 100644
--- a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py
+++ b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.py
@@ -13,6 +13,10 @@
main.ONOS2.stop()
main.ONOS3.stop()
main.ONOS4.stop()
+ main.ONOS1.git_pull()
+ main.ONOS2.git_pull()
+ main.ONOS3.git_pull()
+ main.ONOS4.git_pull()
main.Cassandra1.start()
main.Cassandra2.start()
main.Cassandra3.start()
@@ -20,15 +24,11 @@
time.sleep(20)
main.ONOS1.drop_keyspace()
main.ONOS1.start()
- time.sleep(10)
+ time.sleep(30)
main.ONOS2.start()
main.ONOS3.start()
main.ONOS4.start()
- main.ONOS1.start_rest()
- time.sleep(5)
- test= main.ONOS1.rest_status()
- if test == main.FALSE:
- main.ONOS1.start_rest()
+ time.sleep(20)
main.ONOS1.get_version()
main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
main.case("Checking if the startup was clean...")
@@ -63,22 +63,15 @@
main.ONOS4.stop()
time.sleep(5)
main.ONOS1.start()
- time.sleep(10)
+ time.sleep(30)
main.ONOS2.start()
main.ONOS3.start()
main.ONOS4.start()
data = main.ONOS1.isup()
-<<<<<<< HEAD
#main.ONOS1.tcpdump()
#main.ONOS2.tcpdump()
#main.ONOS3.tcpdump()
#main.ONOS4.tcpdump()
-=======
- main.ONOS1.tcpdump()
- main.ONOS2.tcpdump()
- main.ONOS3.tcpdump()
- main.ONOS4.tcpdump()
->>>>>>> f580d10d359eabad08530e06fb8339390b47fba0
utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
#**********************************************************************************************************************************************************************************************
@@ -137,7 +130,7 @@
import time
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for counter in range(9):
if result == main.FALSE:
time.sleep(3)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
@@ -151,53 +144,35 @@
strtTime = time.time()
main.ONOS1.add_flow(main.params['FLOWDEF'])
main.case("Checking flows")
- tmp = main.FALSE
- count = 1
- main.log.info("Wait for flows to be pushed to the switches, then check")
- while tmp == main.FALSE:
- main.step("Waiting")
- time.sleep(10)
- main.step("Checking")
- tmp = main.ONOS1.check_flow()
- if tmp == main.FALSE and count < 6:
- count = count + 1
- main.log.report("Flow failed, waiting 10 seconds then making attempt number "+str(count))
- elif tmp == main.FALSE and count == 6:
- result1 = main.FALSE
- break
- else:
- result1 = main.TRUE
- break
- endTime = time.time()
- if result1 == main.TRUE:
- main.log.report("\n\t\t\t\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tFlows failed check")
+ pingAttempts = main.params['pingAttempts']
+ pingSleep = main.params['pingSleep']
+
count = 1
i = 6
while i < 16 :
main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 3:
+ if ping == main.FALSE and count < int(pingAttempts):
count = count + 1
i = 6
- main.log.report("Ping failed, making attempt number "+str(count)+" in 10 seconds")
- time.sleep(10)
- elif ping == main.FALSE and count ==3:
+ main.log.report("Ping failed, making attempt number "+str(count)+" in "+str(pingSleep)+" seconds")
+ time.sleep(int(pingSleep))
+ elif ping == main.FALSE and count == int(pingAttempts):
main.log.error("Ping test failed")
i = 17
- result2 = main.FALSE
+ result = main.FALSE
elif ping == main.TRUE:
i = i + 1
- result2 = main.TRUE
- if result2 == main.TRUE:
- main.log.info("Flows successfully added")
+ result = main.TRUE
+ endTime = time.time()
+ if result == main.TRUE:
+ main.log.report("\n\t\t\t\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
else:
- main.log.report("\tPING TEST FAIL")
+ main.log.report("\tFlows failed check")
main.step("Verifying the result")
- utilities.assert_equals(expect=main.TRUE,actual=result1 and result2,onpass="Flow check PASS",onfail="Flow check FAIL")
+ utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Flow check PASS",onfail="Flow check FAIL")
#**********************************************************************************************************************************************************************************************
#This test case removes Controllers 2,3, and 4 then performs a ping test.
@@ -206,7 +181,6 @@
#If the ping test fails 6 times, then the test case will return false
def CASE4(self,main) :
-<<<<<<< HEAD
main.log.report("Remove all but one ONOS then ping until all hosts are reachable or fail after 6 attempts")
import time
import random
@@ -228,42 +202,37 @@
port = main.params['CTRL']['port4']
main.log.report("ONOS"+str(num)+" will be the sole controller")
-=======
- main.log.report("Remove ONOS 2,3,4 then ping until all hosts are reachable or fail after 6 attempts")
- import time
->>>>>>> f580d10d359eabad08530e06fb8339390b47fba0
for i in range(25):
if i < 15:
j=i+1
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1']) #Assigning a single controller removes all other controllers
+ main.Mininet1.assign_sw_controller(sw=str(j),ip1=ip,port1=port) #Assigning a single controller removes all other controllers
else:
j=i+16
-<<<<<<< HEAD
main.Mininet1.assign_sw_controller(sw=str(j),ip1=ip,port1=port)
-=======
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
->>>>>>> f580d10d359eabad08530e06fb8339390b47fba0
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for counter in range(9):
if result == main.FALSE:
time.sleep(3)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
+ pingAttempts = main.params['pingAttempts']
+ pingSleep = main.params['pingSleep']
+
count = 1
i = 6
while i < 16 :
main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 6:
+ if ping == main.FALSE and count < int(pingAttempts):
count = count + 1
i = 6
- main.log.report("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
- elif ping == main.FALSE and count ==6:
+ main.log.report("Ping failed, making attempt number "+str(count)+" in "+str(pingSleep)+" seconds")
+ time.sleep(int(pingSleep))
+ elif ping == main.FALSE and count == int(pingAttempts):
main.log.error("Ping test failed")
i = 17
result = main.FALSE
@@ -293,24 +262,27 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for counter in range(9):
if result == main.FALSE:
time.sleep(3)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
+ pingAttempts = main.params['pingAttempts']
+ pingSleep = main.params['pingSleep']
+
count = 1
i = 6
while i < 16 :
main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 6:
+ if ping == main.FALSE and count < int(pingAttempts):
count = count + 1
i = 6
- main.log.report("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
- elif ping == main.FALSE and count ==6:
+ main.log.report("Ping failed, making attempt number "+str(count)+" in "+str(pingSleep)+" seconds")
+ time.sleep(int(pingSleep))
+ elif ping == main.FALSE and count == int(pingAttempts):
main.log.error("Ping test failed")
i = 17
result = main.FALSE
@@ -336,24 +308,27 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
- for i in range(9):
+ for counter in range(9):
if result == main.FALSE:
time.sleep(3)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
else:
break
+ pingAttempts = main.params['pingAttempts']
+ pingSleep = main.params['pingSleep']
+
count = 1
i = 6
while i < 16 :
main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 10:
+ if ping == main.FALSE and count < int(pingAttempts):
count = count + 1
- main.log.report("Ping failed, making attempt number "+str(count)+" in 5 seconds")
+ main.log.report("Ping failed, making attempt number "+str(count)+" in "+str(pingSleep)+" seconds")
i = 6
- time.sleep(5)
- elif ping == main.FALSE and count == 10:
+ time.sleep(int(pingSleep))
+ elif ping == main.FALSE and count == int(pingAttempts):
main.log.error("Ping test failed")
i = 17
result = main.FALSE
@@ -379,25 +354,28 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for counter in range(9):
if result == main.FALSE:
time.sleep(3)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
+ pingAttempts = main.params['pingAttempts']
+ pingSleep = main.params['pingSleep']
+
strtTime = time.time()
count = 1
i = 6
while i < 16 :
main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 10:
+ if ping == main.FALSE and count < int(pingAttempts):
count = count + 1
- main.log.report("Ping failed, making attempt number "+str(count)+" in 5 seconds")
+ main.log.report("Ping failed, making attempt number "+str(count)+" in " +str(pingSleep)+" seconds")
i = 6
- time.sleep(5)
- elif ping == main.FALSE and count ==10:
+ time.sleep(int(pingSleep))
+ elif ping == main.FALSE and count == int(pingAttempts):
main.log.error("Ping test failed")
i = 17
result = main.FALSE
diff --git a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.topo b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.topo
index 0c77a3b..daa8d44 100644
--- a/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.topo
+++ b/TestON/tests/OnosCHO4nodes/OnosCHO4nodes.topo
@@ -2,7 +2,7 @@
<COMPONENT>
<Zookeeper1>
- <host>10.128.100.1</host>
+ <host>10.128.100.21</host>
<user>admin</user>
<password></password>
<type>ZookeeperCliDriver</type>
@@ -12,7 +12,7 @@
</Zookeeper1>
<Zookeeper2>
- <host>10.128.100.4</host>
+ <host>10.128.100.22</host>
<user>admin</user>
<password></password>
<type>ZookeeperCliDriver</type>
@@ -22,7 +22,7 @@
</Zookeeper2>
<Zookeeper3>
- <host>10.128.100.5</host>
+ <host>10.128.100.23</host>
<user>admin</user>
<password></password>
<type>ZookeeperCliDriver</type>
@@ -32,7 +32,7 @@
</Zookeeper3>
<Zookeeper4>
- <host>10.128.100.6</host>
+ <host>10.128.100.24</host>
<user>admin</user>
<password></password>
<type>ZookeeperCliDriver</type>
@@ -42,7 +42,7 @@
</Zookeeper4>
<Cassandra1>
- <host>10.128.100.1</host>
+ <host>10.128.100.21</host>
<user>admin</user>
<password></password>
<type>CassandraCliDriver</type>
@@ -52,7 +52,7 @@
</Cassandra1>
<Cassandra2>
- <host>10.128.100.4</host>
+ <host>10.128.100.22</host>
<user>admin</user>
<password></password>
<type>CassandraCliDriver</type>
@@ -62,7 +62,7 @@
</Cassandra2>
<Cassandra3>
- <host>10.128.100.5</host>
+ <host>10.128.100.23</host>
<user>admin</user>
<password></password>
<type>CassandraCliDriver</type>
@@ -72,7 +72,7 @@
</Cassandra3>
<Cassandra4>
- <host>10.128.100.6</host>
+ <host>10.128.100.24</host>
<user>admin</user>
<password></password>
<type>CassandraCliDriver</type>
@@ -82,7 +82,7 @@
</Cassandra4>
<ONOS1>
- <host>10.128.100.1</host>
+ <host>10.128.100.21</host>
<user>admin</user>
<password></password>
<type>OnosCliDriver</type>
@@ -92,7 +92,7 @@
</ONOS1>
<ONOS2>
- <host>10.128.100.4</host>
+ <host>10.128.100.22</host>
<user>admin</user>
<password></password>
<type>OnosCliDriver</type>
@@ -102,7 +102,7 @@
</ONOS2>
<ONOS3>
- <host>10.128.100.5</host>
+ <host>10.128.100.23</host>
<user>admin</user>
<password></password>
<type>OnosCliDriver</type>
@@ -112,7 +112,7 @@
</ONOS3>
<ONOS4>
- <host>10.128.100.6</host>
+ <host>10.128.100.24</host>
<user>admin</user>
<password></password>
<type>OnosCliDriver</type>
@@ -122,7 +122,7 @@
</ONOS4>
<Mininet1>
- <host>10.128.100.11</host>
+ <host>10.128.100.25</host>
<user>admin</user>
<password></password>
<type>MininetCliDriver</type>
diff --git a/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py b/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py
index 40895b3..ae0bade 100644
--- a/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py
+++ b/TestON/tests/OnosPerf4nodes/OnosPerf4nodes.py
@@ -135,10 +135,7 @@
main.ONOS2.start()
main.ONOS3.start()
main.ONOS4.start()
-<<<<<<< HEAD
time.sleep(45)
-=======
->>>>>>> f580d10d359eabad08530e06fb8339390b47fba0
for i in range(4):
result = main.ONOS1.check_status(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
time.sleep(5)
diff --git a/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.params b/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.params
index 219de1c..4d9be1d 100644
--- a/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.params
+++ b/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.params
@@ -1,5 +1,5 @@
<PARAMS>
- <testcases>1,2,21,32,31,4,5,6,7,3,4,5,6,7</testcases>
+ <testcases>1,2,4,5,6,7,3,4,5,6,7</testcases>
<FLOWDEF>~/flowdef_files/Center_Triangle/flowdef_20.txt</FLOWDEF>
<CASE1>
<destination>h6</destination>
diff --git a/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py b/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py
index d33f1b5..1f50245 100644
--- a/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py
+++ b/TestON/tests/OnosSanity4ARP/OnosSanity4ARP.py
@@ -27,6 +27,9 @@
main.ONOS4.start()
main.ONOS1.start_rest()
time.sleep(5)
+ test= main.ONOS1.rest_status()
+ if test == main.FALSE:
+ main.ONOS1.start_rest()
main.ONOS1.get_version()
main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
main.case("Checking if the startup was clean...")
@@ -97,13 +100,6 @@
time.sleep(1)
main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
main.Mininet1.get_sw_controller("s1")
-
- for i in range(9):
- if result == main.FALSE:
- time.sleep(3)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- else:
- break
# **********************************************************************************************************************************************************************************************
#Add Flows
@@ -113,69 +109,39 @@
def CASE3(self,main) : #Delete any remnant flows, then add flows, and time how long it takes flow tables to update
main.log.report("Delete any flows from previous tests, then add flows from FLOWDEF file, then wait for switch flow tables to update")
import time
-
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
- if result == main.FALSE:
- time.sleep(3)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- else:
- break
-
main.case("Taking care of these flows!")
main.step("Cleaning out any leftover flows...")
main.ONOS1.delete_flow("all")
- time.sleep(5)
strtTime = time.time()
main.ONOS1.add_flow(main.params['FLOWDEF'])
main.case("Checking flows")
- tmp = main.FALSE
- count = 1
- main.log.info("Wait for flows to be pushed to the switches, then check")
- while tmp == main.FALSE:
- main.step("Waiting")
- time.sleep(5)
- main.step("Checking")
- tmp = main.ONOS1.check_flow()
- if tmp == main.FALSE and count < 6:
- count = count + 1
- main.log.report("Flow failed, waiting 10 seconds then making attempt number "+str(count))
- elif tmp == main.FALSE and count == 6:
- result1 = main.FALSE
- break
- else:
- result1 = main.TRUE
- break
- endTime = time.time()
- if result1 == main.TRUE:
- main.log.report("\n\t\t\t\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tFlows failed check")
count = 1
i = 6
while i < 16 :
main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 3:
+ if ping == main.FALSE and count < 9:
count = count + 1
i = 6
- main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
- time.sleep(10)
- elif ping == main.FALSE and count ==3:
+ main.log.info("Ping failed, making attempt number "+str(count)+" in 2 seconds")
+ time.sleep(2)
+ elif ping == main.FALSE and count ==9:
main.log.error("Ping test failed")
i = 17
- result2 = main.FALSE
+ result = main.FALSE
elif ping == main.TRUE:
i = i + 1
result2 = main.TRUE
- if result2 == main.TRUE:
- main.log.info("Flows successfully added")
+ endTime = time.time()
+ if result == main.TRUE:
+ main.log.report("\tTime to complete add flows: "+str(round(endTime-strtTime,2))+" seconds")
else:
main.log.report("\tPING TEST FAIL")
+ result2 = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
main.step("Verifying the result")
- utilities.assert_equals(expect=main.TRUE,actual=result1 and result2,onpass="Flow check PASS",onfail="Flow check FAIL")
+ utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Flow check PASS",onfail="Flow check FAIL")
#**********************************************************************************************************************************************************************************************
#This test case removes Controllers 2,3, and 4 then performs a ping test.
@@ -196,9 +162,9 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
- time.sleep(3)
+ time.sleep(5)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
@@ -212,7 +178,7 @@
count = count + 1
i = 6
main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
+ time.sleep(2)
elif ping == main.FALSE and count ==6:
main.log.error("Ping test failed")
i = 17
@@ -243,7 +209,7 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
time.sleep(3)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
@@ -259,7 +225,7 @@
count = count + 1
i = 6
main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
+ time.sleep(2)
elif ping == main.FALSE and count ==6:
main.log.error("Ping test failed")
i = 17
@@ -286,9 +252,9 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
- time.sleep(3)
+ time.sleep(5)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
else:
break
@@ -302,7 +268,7 @@
count = count + 1
main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
i = 6
- time.sleep(5)
+ time.sleep(2)
elif ping == main.FALSE and count == 10:
main.log.error("Ping test failed")
i = 17
@@ -329,9 +295,9 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
- time.sleep(3)
+ time.sleep(5)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
@@ -346,7 +312,7 @@
count = count + 1
main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
i = 6
- time.sleep(5)
+ time.sleep(2)
elif ping == main.FALSE and count ==10:
main.log.error("Ping test failed")
i = 17
@@ -369,37 +335,34 @@
import json
from drivers.common.api.onosrestapidriver import *
main.log.report("Test device discovery function, by attach/detach/move host h1 from s1->s6->s1.")
- main.log.report("Check initially hostMAC exist on the mininet...")
+ main.log.report("Check initially hostMAC/IP exist on the mininet...")
host = main.params['YANK']['hostname']
mac = main.params['YANK']['hostmac']
+ hostip = main.params['YANK']['hostip']
RestIP1 = main.params['RESTCALL']['restIP1']
- RestIP2 = main.params['RESTCALL']['restIP2']
RestPort = main.params['RESTCALL']['restPort']
url = main.params['RESTCALL']['restURL']
#print "host=" + host + "; RestIP=" + RestIP1 + "; RestPort=" + str(RestPort)
-
- main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
+
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
restcall = OnosRestApiDriver()
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
+ Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- ip_found = Hoststatus[0]['ipv4'][0]
+ attachedSW = RestSwitch[0]['dpid']
+ host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
except:
Reststatus = 0
-
- if Reststatus == 1:
+ if Reststatus == 1 and host_ip == '10.0.0.1':
main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
- if ip_found != None:
- main.log.report("\t IP discovered is ip_found ( " + ip_found + " ).")
- result = main.TRUE
- else:
- main.log.report("\t Found host attached to switch, but no IP address discovered.")
- result = main.FALSE
+ result = main.TRUE
+ elif Reststatus > 1:
+ main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
else:
main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
result = main.FALSE
+ main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
+
##### Step to yank out "s1-eth1" from s1, which is on autoONOS1 #####
main.log.report("Yank out s1-eth1")
@@ -407,47 +370,52 @@
result = main.Mininet1.yank(SW=main.params['YANK']['sw1'],INTF=main.params['YANK']['intf'])
time.sleep(3)
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
+
+ main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
+ restcall = OnosRestApiDriver()
+ Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
+ attachedSW = RestSwitch[0]['dpid']
+ host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
except:
Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to yank out s1-eth1 from s1 sucessfully")
+ if Reststatus == 1 and host_ip == '10.0.0.1':
+ main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
result = main.TRUE
+ elif Reststatus > 1:
+ main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
else:
- main.log.report("Attempt to yank out s1-eht1 from s1 failed.")
+ main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
result = main.FALSE
-
+
+
##### Step to plug "s1-eth1" to s6, which is on autoONOS3 ######
main.log.report("Plug s1-eth1 into s6")
main.case("Plug s1-eth1 to s6")
result = main.Mininet1.plug(SW=main.params['PLUG']['sw6'],INTF=main.params['PLUG']['intf'])
time.sleep(3)
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
+ main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
+
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP2,RestPort,url,mac)
+ restcall = OnosRestApiDriver()
+ Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- ip_found = Hoststatus[0]['ipv4'][0]
+ attachedSW = RestSwitch[0]['dpid']
+ host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
except:
Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to plug s1-eth1 to s6 FAILED")
- result = main.FALSE
- elif attachedSW == "00:00:00:00:00:00:00:06":
- main.log.report("Attempt to plug s1-eht1 to s6 succeded.")
- if ip_found != None:
- main.log.report("\t IP discovered is ip_found ( " + ip_found + " ).")
- result = main.TRUE
- else:
- main.log.report("\t Found host attached to switch, but no IP address discovered.")
- result = main.FALSE
+ if Reststatus == 1 and host_ip == '10.0.0.1':
+ main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
+ result = main.TRUE
+ elif Reststatus > 1:
+ main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
else:
- main.log.report( "FAILED to attach s1-eth1 to s6 correctly!")
+ main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
result = main.FALSE
+
###### Step to put interface "s1-eth1" back to s1"#####
main.log.report("Move s1-eth1 back on to s1")
main.case("Move s1-eth1 back to s1")
@@ -455,40 +423,26 @@
time.sleep(3)
retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
+ main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
+
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
+ restcall = OnosRestApiDriver()
+ Reststatus, RestSwitch, RestPort = restcall.find_host(RestIP1,RestPort,url, hostip)
try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- ip_found = Hoststatus[0]['ipv4'][0]
+ attachedSW = RestSwitch[0]['dpid']
+ host_ip = RestSwitch[0]['devices'][0]['ipv4addresses']
except:
Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to plug s1-eth1 back to s1 FAILED")
- result = main.FALSE
- elif attachedSW == "00:00:00:00:00:00:00:01":
- main.log.report("Attempt to plug s1-eht1 back to s1 succeded.")
- if ip_found != None:
- main.log.report("\t IP discovered is ip_found ( " + ip_found + " ).")
- result = main.TRUE
- else:
- main.log.report("\t Found host attached to switch, but no IP address discovered.")
- result = main.FALSE
+ if Reststatus == 1 and host_ip == '10.0.0.1':
+ main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
+ result = main.TRUE
+ elif Reststatus > 1:
+ main.log.report("\t Host " + host + " with MAC:" + str(mac) + " has " + Reststatus + " duplicated IP addresses. FAILED")
else:
- main.log.report( "FAIL to attach s1-eth1 to s1 correctly!")
+ main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
result = main.FALSE
+
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="DEVICE DISCOVERY TEST PASSED PLUG/UNPLUG/MOVE TEST",onfail="DEVICE DISCOVERY TEST FAILED")
- def CASE31(self):
- final = main.TRUE
- for i in range(6,16):
- mac = main.Mininet1.decToHex(i+25)
- mac = "00:00:00:00:00:"+str(mac)
- result = main.Mininet1.arping("h"+str(i),"h"+str(i+25),mac)
- final = final and result
- utilities.assert_equals(expect=main.TRUE,actual=final,onpass="ARP successful",onfail="ARP not working properly")
-
- def CASE32(self):
- main.step("Cleaning out any leftover flows...")
- main.ONOS1.delete_flow("all")
diff --git a/TestON/tests/OnosSanity4nodes/.OnosSanity4nodes.py.swn b/TestON/tests/OnosSanity4nodes/.OnosSanity4nodes.py.swn
deleted file mode 100644
index cb578ac..0000000
--- a/TestON/tests/OnosSanity4nodes/.OnosSanity4nodes.py.swn
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosSanity4nodes/.OnosSanity4nodes.py.swo b/TestON/tests/OnosSanity4nodes/.OnosSanity4nodes.py.swo
deleted file mode 100644
index 5389b47..0000000
--- a/TestON/tests/OnosSanity4nodes/.OnosSanity4nodes.py.swo
+++ /dev/null
Binary files differ
diff --git a/TestON/tests/OnosSanity4nodes/OnosSanity4node_testDD.py b/TestON/tests/OnosSanity4nodes/OnosSanity4node_testDD.py
deleted file mode 100644
index a0c9f98..0000000
--- a/TestON/tests/OnosSanity4nodes/OnosSanity4node_testDD.py
+++ /dev/null
@@ -1,456 +0,0 @@
-
-class OnosSanity4nodes :
-
- def __init__(self) :
- self.default = ''
-
-#**********************************************************************************************************************************************************************************************
-#Test startup
-#Tests the startup of Zookeeper1, Cassandra1, and ONOS1 to be certain that all started up successfully
- def CASE1(self,main) : #Check to be sure ZK, Cass, and ONOS are up, then get ONOS version
- import time
- main.log.report("Pulling latest code from github to all nodes")
- main.ONOS1.git_pull()
- main.ONOS2.git_pull()
- main.ONOS3.git_pull()
- main.ONOS4.git_pull()
- main.Cassandra1.start()
- main.Cassandra2.start()
- main.Cassandra3.start()
- main.Cassandra4.start()
- time.sleep(20)
- main.ONOS1.drop_keyspace()
- main.ONOS1.start()
- time.sleep(10)
- main.ONOS2.start()
- main.ONOS3.start()
- main.ONOS4.start()
- main.ONOS1.start_rest()
- time.sleep(5)
- test= main.ONOS1.rest_status()
- if test == main.FALSE:
- main.ONOS1.start_rest()
- main.ONOS1.get_version()
- main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
- main.case("Checking if the startup was clean...")
- main.step("Testing startup Zookeeper")
- data = main.Zookeeper1.isup()
- utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Zookeeper is up!",onfail="Zookeeper is down...")
- main.step("Testing startup Cassandra")
- data = main.Cassandra1.isup()
- if data == main.FALSE:
- main.Cassandra1.stop()
- main.Cassandra2.stop()
- main.Cassandra3.stop()
- main.Cassandra4.stop()
-
- time.sleep(5)
-
- main.Cassandra1.start()
- main.Cassandra2.start()
- main.Cassandra3.start()
- main.Cassandra4.start()
- utilities.assert_equals(expect=main.TRUE,actual=data,onpass="Cassandra is up!",onfail="Cassandra is down...")
- main.step("Testing startup ONOS")
- data = main.ONOS1.isup()
- if data == main.FALSE:
- main.log.report("Something is funny... restarting ONOS")
- main.ONOS1.stop()
- time.sleep(3)
- main.ONOS1.start()
- time.sleep(5)
- data = main.ONOS1.isup()
- utilities.assert_equals(expect=main.TRUE,actual=data,onpass="ONOS is up and running!",onfail="ONOS didn't start...")
-
-#**********************************************************************************************************************************************************************************************
-#Assign Controllers
-#This test first checks the ip of a mininet host, to be certain that the mininet exists(Host is defined in Params as <CASE1><destination>).
-#Then the program assignes each ONOS instance a single controller to a switch(To be the initial master), then assigns all controllers.
-#NOTE: The reason why all four controllers are assigned although one was already assigned as the master is due to the 'ovs-vsctl set-controller' command erases all present controllers if
-# the controllers already assigned to the switch are not specified.
-
- def CASE2(self,main) : #Make sure mininet exists, then assign controllers to switches
- import time
- main.log.report("Check if mininet started properly, then assign controllers ONOS 1,2,3 and 4")
- main.case("Checking if one MN host exists")
- main.step("Host IP Checking using checkIP")
- result = main.Mininet1.checkIP(main.params['CASE1']['destination'])
- main.step("Verifying the result")
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Host IP address configured",onfail="Host IP address not configured")
- main.step("assigning ONOS controllers to switches")
- for i in range(25):
- if i < 3:
- j=i+1
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
- time.sleep(1)
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
- elif i >= 3 and i < 5:
- j=i+1
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip2'],port1=main.params['CTRL']['port2'])
- time.sleep(1)
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
- elif i >= 5 and i < 15:
- j=i+1
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip3'],port1=main.params['CTRL']['port3'])
- time.sleep(1)
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
- else:
- j=i+16
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip4'],port1=main.params['CTRL']['port4'])
- time.sleep(1)
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
- main.Mininet1.get_sw_controller("s1")
-
-# **********************************************************************************************************************************************************************************************
-#Add Flows
-#Deletes any remnant flows from any previous test, add flows from the file labeled <FLOWDEF>, then runs the check flow test
-#NOTE: THE FLOWDEF FILE MUST BE PRESENT ON TESTON VM!!! TestON will copy the file from its home machine into /tmp/flowtmp on the machine the ONOS instance is present on
-
- def CASE3(self,main) : #Delete any remnant flows, then add flows, and time how long it takes flow tables to update
- main.log.report("Delete any flows from previous tests, then add flows from FLOWDEF file, then wait for switch flow tables to update")
- import time
- main.case("Taking care of these flows!")
- main.step("Cleaning out any leftover flows...")
- main.ONOS1.delete_flow("all")
- time.sleep(5)
- strtTime = time.time()
- main.ONOS1.add_flow(main.params['FLOWDEF'])
- main.case("Checking flows")
- tmp = main.FALSE
- count = 1
- main.log.info("Wait for flows to be pushed to the switches, then check")
- while tmp == main.FALSE:
- main.step("Waiting")
- time.sleep(10)
- main.step("Checking")
- tmp = main.ONOS1.check_flow()
- if tmp == main.FALSE and count < 6:
- count = count + 1
- main.log.report("Flow failed, waiting 10 seconds then making attempt number "+str(count))
- elif tmp == main.FALSE and count == 6:
- result1 = main.FALSE
- break
- else:
- result1 = main.TRUE
- break
- endTime = time.time()
- if result1 == main.TRUE:
- main.log.report("\n\t\t\t\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tFlows failed check")
-
- strtTime = time.time()
- count = 1
- i = 6
- while i < 16 :
- main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 3:
- count = count + 1
- i = 6
- main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
- time.sleep(10)
- elif ping == main.FALSE and count ==3:
- main.log.error("Ping test failed")
- i = 17
- result2 = main.FALSE
- elif ping == main.TRUE:
- i = i + 1
- result2 = main.TRUE
- endTime = time.time()
- if result2 == main.TRUE:
- main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tPING TEST FAIL")
-
- result3 = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- main.step("Verifying the result")
- utilities.assert_equals(expect=main.TRUE,actual=result1 and result2 and result3,onpass="Flow check PASS",onfail="Flow check FAIL")
-
-#**********************************************************************************************************************************************************************************************
-#This test case removes Controllers 2,3, and 4 then performs a ping test.
-#The assign controller is used because the ovs-vsctl module deletes all current controllers when a new controller is assigned.
-#The ping test performs single pings on hosts from opposite sides of the topology. If one ping fails, the test waits 5 seconds before trying again.
-#If the ping test fails 6 times, then the test case will return false
-
- def CASE4(self,main) :
- main.log.report("Remove ONOS 2,3,4 then ping until all hosts are reachable or fail after 6 attempts")
- import time
- for i in range(25):
- if i < 15:
- j=i+1
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1']) #Assigning a single controller removes all other controllers
- else:
- j=i+16
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'])
-
- strtTime = time.time()
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(2):
- if result == main.FALSE:
- time.sleep(5)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- else:
- break
-
- count = 1
- i = 6
- while i < 16 :
- main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 6:
- count = count + 1
- i = 6
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
- elif ping == main.FALSE and count ==6:
- main.log.error("Ping test failed")
- i = 17
- result = main.FALSE
- elif ping == main.TRUE:
- i = i + 1
- result = main.TRUE
- endTime = time.time()
- if result == main.TRUE:
- main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tPING TEST FAIL")
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#This test case restores the controllers removed by Case 4 then performs a ping test.
-
- def CASE5(self,main) :
- main.log.report("Restore ONOS 2,3,4 then ping until all hosts are reachable or fail after 6 attempts")
- import time
- for i in range(25):
- if i < 15:
- j=i+1
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
- else:
- j=i+16
- main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
-
- strtTime = time.time()
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(2):
- if result == main.FALSE:
- time.sleep(5)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- else:
- break
-
- count = 1
- i = 6
- while i < 16 :
- main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 6:
- count = count + 1
- i = 6
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
- elif ping == main.FALSE and count ==6:
- main.log.error("Ping test failed")
- i = 17
- result = main.FALSE
- elif ping == main.TRUE:
- i = i + 1
- result = main.TRUE
- endTime = time.time()
- if result == main.TRUE:
- main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tPING TEST FAILED")
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#Brings a link that all flows pass through in the mininet down, then runs a ping test to view reroute time
-
- def CASE6(self,main) :
- main.log.report("Bring Link between s1 and s2 down, then ping until all hosts are reachable or fail after 10 attempts")
- import time
- main.case("Bringing Link down... ")
- result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="down")
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link DOWN!",onfail="Link not brought down...")
-
- strtTime = time.time()
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
- for i in range(2):
- if result == main.FALSE:
- time.sleep(5)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
- else:
- break
-
- count = 1
- i = 6
- while i < 16 :
- main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 10:
- count = count + 1
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- i = 6
- time.sleep(5)
- elif ping == main.FALSE and count == 10:
- main.log.error("Ping test failed")
- i = 17
- result = main.FALSE
- elif ping == main.TRUE:
- i = i + 1
- result = main.TRUE
- endTime = time.time()
- if result == main.TRUE:
- main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tPING TEST FAILED")
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-# **********************************************************************************************************************************************************************************************
-#Brings the link that Case 6 took down back up, then runs a ping test to view reroute time
-
- def CASE7(self,main) :
- main.log.report("Bring Link between s1 and s2 up, then ping until all hosts are reachable or fail after 10 attempts")
- import time
- main.case("Bringing Link up... ")
- result = main.Mininet1.link(END1=main.params['LINK']['begin'],END2=main.params['LINK']['end'],OPTION="up")
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Link UP!",onfail="Link not brought up...")
-
- strtTime = time.time()
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(2):
- if result == main.FALSE:
- time.sleep(5)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- else:
- break
-
- strtTime = time.time()
- count = 1
- i = 6
- while i < 16 :
- main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
- ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 10:
- count = count + 1
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- i = 6
- time.sleep(5)
- elif ping == main.FALSE and count ==10:
- main.log.error("Ping test failed")
- i = 17
- result = main.FALSE
- elif ping == main.TRUE:
- i = i + 1
- result = main.TRUE
- endTime = time.time()
- if result == main.TRUE:
- main.log.report("\tTime to complete ping test: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tPING TESTS FAILED")
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="NO PACKET LOSS, HOST IS REACHABLE",onfail="PACKET LOST, HOST IS NOT REACHABLE")
-
-
-# ******************************************************************************************************************************************************************
-# Test Device Discovery function by yanking s6:s6-eth0 interface and re-plug it into a switch
-
- def CASE21(self,main) :
- import json
- from drivers.common.api.onosrestapidriver import *
- main.log.report("Test device discovery function, by attach/detach/move host h1 from s1->s6->s1.")
- main.log.report("Check initially hostMAC exist on the mininet...")
- host = main.params['YANK']['hostname']
- mac = main.params['YANK']['hostmac']
- RestIP1 = main.params['RESTCALL']['restIP1']
- RestIP2 = main.params['RESTCALL']['restIP2']
- RestPort = main.params['RESTCALL']['restPort']
- url = main.params['RESTCALL']['restURL']
- #print "host=" + host + "; RestIP=" + RestIP1 + "; RestPort=" + str(RestPort)
-
- main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
- ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- restcall = OnosRestApiDriver()
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- host_ip = Hoststatus[0]['ipv4'][0]
- except:
- Reststatus = 0
- if Reststatus == 1 and host_ip == '10.0.0.1':
- main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
- result = main.TRUE
- else:
- main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
- result = main.FALSE
-
- ##### Step to yank out "s1-eth1" from s1, which is on autoONOS1 #####
-
- main.log.report("Yank out s1-eth1")
- main.case("Yankout s6-eth1 (link to h1) from s1")
- result = main.Mininet1.yank(SW=main.params['YANK']['sw1'],INTF=main.params['YANK']['intf'])
- time.sleep(3)
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
- ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- except IndexError:
- Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to yank out s1-eth1 from s1 sucessfully")
- result = main.TRUE
- else:
- main.log.report("Attempt to yank out s1-eht1 from s1 failed.")
- result = main.FALSE
-
- ##### Step to plug "s1-eth1" to s6, which is on autoONOS3 ######
- main.log.report("Plug s1-eth1 into s6")
- main.case("Plug s1-eth1 to s6")
- result = main.Mininet1.plug(SW=main.params['PLUG']['sw6'],INTF=main.params['PLUG']['intf'])
- time.sleep(3)
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
- ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP2,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- host_ip = Hoststatus[0]['ipv4'][0]
- except:
- Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to plug s1-eth1 to s6 FAILED")
- result = main.FALSE
- elif attachedSW == "00:00:00:00:00:00:00:06"and host_ip == '10.0.0.1':
- main.log.report("Attempt to plug s1-eht1 to s6 succeded.")
- result = main.TRUE
- else:
- main.log.report( "FAILED to attach s1-eth1 to s6 correctly!")
- result = main.FALSE
-
- ###### Step to put interface "s1-eth1" back to s1"#####
- main.log.report("Move s1-eth1 back on to s1")
- main.case("Move s1-eth1 back to s1")
- result = main.Mininet1.yank(SW=main.params['YANK']['sw6'],INTF=main.params['YANK']['intf'])
- time.sleep(3)
- retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
- ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- host_ip = Hoststatus[0]['ipv4'][0]
- except:
- Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to plug s1-eth1 back to s1 FAILED")
- result = main.FALSE
- elif attachedSW == "00:00:00:00:00:00:00:01" and host_ip == '10.0.0.1':
- main.log.report("Attempt to plug s1-eht1 back to s1 succeded.")
- result = main.TRUE
- else:
- main.log.report( "FAIL to attach s1-eth1 to s1 correctly!")
- result = main.FALSE
-
- utilities.assert_equals(expect=main.TRUE,actual=result,onpass="DEVICE DISCOVERY TEST PASSED PLUG/UNPLUG/MOVE TEST",onfail="DEVICE DISCOVERY TEST FAILED")
-
-
diff --git a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.params b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.params
index e16f336..ffb6cd3 100644
--- a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.params
+++ b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.params
@@ -16,6 +16,7 @@
</LINK>
<YANK>
<hostname>h1</hostname>
+ <hostip>10.0.0.1</hostip>
<hostmac>00:00:00:00:00:01</hostmac>
<sw1>s1</sw1>
<sw6>s6</sw6>
@@ -43,6 +44,6 @@
<restIP1>10.128.100.1</restIP1>
<restIP2>10.128.100.5</restIP2>
<restPort>8080</restPort>
- <restURL>/wm/device/</restURL>
+ <restURL>/wm/onos/topology/switches/all/json</restURL>
</RESTCALL>
</PARAMS>
diff --git a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.params_old b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.params_old
deleted file mode 100644
index 2eea988..0000000
--- a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.params_old
+++ /dev/null
@@ -1,30 +0,0 @@
-<PARAMS>
- <testcases>1,2,21,21,3,4,5,6,7</testcases>
- <FLOWDEF>~/flowdef_files/Center_Triangle/flowdef_20.txt</FLOWDEF>
- <CASE1>
- <destination>h6</destination>
- </CASE1>
- <PING>
- <source1>h6</source1>
- <target1>h31</target1>
- <source2>h8</source2>
- <target2>h33</target2>
- </PING>
- <LINK>
- <begin>s1</begin>
- <end>s2</end>
- </LINK>
- <CTRL>
- <ip1>10.128.100.1</ip1>
- <port1>6633</port1>
- <ip2>10.128.100.4</ip2>
- <port2>6633</port2>
- <ip3>10.128.100.5</ip3>
- <port3>6633</port3>
- <ip4>10.128.100.6</ip4>
- <port4>6633</port4>
- </CTRL>
- <RestIP> 10.128.100.1 </RestIP>
- <NR_Switches>25</NR_Switches>
- <NR_Links>50</NR_Links>
-</PARAMS>
diff --git a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py
index 4a11f98..7468667 100644
--- a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py
+++ b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.py
@@ -27,6 +27,9 @@
main.ONOS4.start()
main.ONOS1.start_rest()
time.sleep(5)
+ test= main.ONOS1.rest_status()
+ if test == main.FALSE:
+ main.ONOS1.start_rest()
main.ONOS1.get_version()
main.log.report("Startup check Zookeeper1, Cassandra1, and ONOS1 connections")
main.case("Checking if the startup was clean...")
@@ -97,13 +100,6 @@
time.sleep(1)
main.Mininet1.assign_sw_controller(sw=str(j),ip1=main.params['CTRL']['ip1'],port1=main.params['CTRL']['port1'],ip2=main.params['CTRL']['ip2'],port2=main.params['CTRL']['port2'],ip3=main.params['CTRL']['ip3'],port3=main.params['CTRL']['port3'],ip4=main.params['CTRL']['ip4'],port4=main.params['CTRL']['port4'])
main.Mininet1.get_sw_controller("s1")
-
- for i in range(9):
- if result == main.FALSE:
- time.sleep(3)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- else:
- break
# **********************************************************************************************************************************************************************************************
#Add Flows
@@ -113,69 +109,39 @@
def CASE3(self,main) : #Delete any remnant flows, then add flows, and time how long it takes flow tables to update
main.log.report("Delete any flows from previous tests, then add flows from FLOWDEF file, then wait for switch flow tables to update")
import time
-
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
- if result == main.FALSE:
- time.sleep(3)
- result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- else:
- break
-
main.case("Taking care of these flows!")
main.step("Cleaning out any leftover flows...")
main.ONOS1.delete_flow("all")
- time.sleep(5)
strtTime = time.time()
main.ONOS1.add_flow(main.params['FLOWDEF'])
main.case("Checking flows")
- tmp = main.FALSE
- count = 1
- main.log.info("Wait for flows to be pushed to the switches, then check")
- while tmp == main.FALSE:
- main.step("Waiting")
- time.sleep(5)
- main.step("Checking")
- tmp = main.ONOS1.check_flow()
- if tmp == main.FALSE and count < 6:
- count = count + 1
- main.log.report("Flow failed, waiting 10 seconds then making attempt number "+str(count))
- elif tmp == main.FALSE and count == 6:
- result1 = main.FALSE
- break
- else:
- result1 = main.TRUE
- break
- endTime = time.time()
- if result1 == main.TRUE:
- main.log.report("\n\t\t\t\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
- else:
- main.log.report("\tFlows failed check")
count = 1
i = 6
while i < 16 :
main.log.info("\n\t\t\t\th"+str(i)+" IS PINGING h"+str(i+25) )
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
- if ping == main.FALSE and count < 3:
+ if ping == main.FALSE and count < 9:
count = count + 1
i = 6
- main.log.info("Ping failed, making attempt number "+str(count)+" in 10 seconds")
- time.sleep(10)
- elif ping == main.FALSE and count ==3:
+ main.log.info("Ping failed, making attempt number "+str(count)+" in 2 seconds")
+ time.sleep(2)
+ elif ping == main.FALSE and count ==9:
main.log.error("Ping test failed")
i = 17
- result2 = main.FALSE
+ result = main.FALSE
elif ping == main.TRUE:
i = i + 1
- result2 = main.TRUE
- if result2 == main.TRUE:
- main.log.info("Flows successfully added")
+ result = main.TRUE
+ endTime = time.time()
+ if result == main.TRUE:
+ main.log.report("\tTime to add flows: "+str(round(endTime-strtTime,2))+" seconds")
else:
- main.log.report("\tPING TEST FAIL")
+ main.log.report("\tFlows failed check")
+ result2 = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
main.step("Verifying the result")
- utilities.assert_equals(expect=main.TRUE,actual=result1 and result2,onpass="Flow check PASS",onfail="Flow check FAIL")
+ utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Flow check PASS",onfail="Flow check FAIL")
#**********************************************************************************************************************************************************************************************
#This test case removes Controllers 2,3, and 4 then performs a ping test.
@@ -196,9 +162,9 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
- time.sleep(3)
+ time.sleep(5)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
@@ -211,8 +177,8 @@
if ping == main.FALSE and count < 6:
count = count + 1
i = 6
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
+ main.log.info("Ping failed, making attempt number "+str(count)+" in 2 seconds")
+ time.sleep(2)
elif ping == main.FALSE and count ==6:
main.log.error("Ping test failed")
i = 17
@@ -243,9 +209,9 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
- time.sleep(3)
+ time.sleep(5)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
@@ -258,8 +224,8 @@
if ping == main.FALSE and count < 6:
count = count + 1
i = 6
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
- time.sleep(5)
+ main.log.info("Ping failed, making attempt number "+str(count)+" in 2 seconds")
+ time.sleep(2)
elif ping == main.FALSE and count ==6:
main.log.error("Ping test failed")
i = 17
@@ -286,9 +252,9 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
- time.sleep(3)
+ time.sleep(5)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],str(int(main.params['NR_Links'])-2))
else:
break
@@ -300,9 +266,9 @@
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
if ping == main.FALSE and count < 10:
count = count + 1
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
+ main.log.info("Ping failed, making attempt number "+str(count)+" in 2 seconds")
i = 6
- time.sleep(5)
+ time.sleep(2)
elif ping == main.FALSE and count == 10:
main.log.error("Ping test failed")
i = 17
@@ -329,9 +295,9 @@
strtTime = time.time()
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
- for i in range(9):
+ for i in range(2):
if result == main.FALSE:
- time.sleep(3)
+ time.sleep(5)
result = main.ONOS1.check_status_report(main.params['RestIP'],main.params['NR_Switches'],main.params['NR_Links'])
else:
break
@@ -344,9 +310,9 @@
ping = main.Mininet1.pingHost(src="h"+str(i),target="h"+str(i+25))
if ping == main.FALSE and count < 10:
count = count + 1
- main.log.info("Ping failed, making attempt number "+str(count)+" in 5 seconds")
+ main.log.info("Ping failed, making attempt number "+str(count)+" in 2 seconds")
i = 6
- time.sleep(5)
+ time.sleep(2)
elif ping == main.FALSE and count ==10:
main.log.error("Ping test failed")
i = 17
@@ -368,117 +334,109 @@
def CASE21(self,main) :
import json
from drivers.common.api.onosrestapidriver import *
- main.log.report("Test device discovery function, by attach/detach/move host h1 from s1->s6->s1.")
- main.log.report("Check initially hostMAC exist on the mininet...")
+ main.log.report("Test device discovery function, by attach, detach, move host h1 from s1->s6->s1. Per mininet naming, switch port the host attaches will remain as 's1-eth1' throughout the test.")
+ main.log.report("Check initially hostMAC/IP exist on the mininet...")
host = main.params['YANK']['hostname']
mac = main.params['YANK']['hostmac']
+ hostip = main.params['YANK']['hostip']
RestIP1 = main.params['RESTCALL']['restIP1']
- RestIP2 = main.params['RESTCALL']['restIP2']
RestPort = main.params['RESTCALL']['restPort']
url = main.params['RESTCALL']['restURL']
+ sleepT = 20
#print "host=" + host + "; RestIP=" + RestIP1 + "; RestPort=" + str(RestPort)
-
+
main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
+ time.sleep(sleepT)
restcall = OnosRestApiDriver()
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- ip_found = Hoststatus[0]['ipv4'][0]
- except:
- Reststatus = 0
-
+ Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+ main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
if Reststatus == 1:
- main.log.report("\tFound host " + host + " attached to switchDPID = " + attachedSW)
- if ip_found != None:
- main.log.report("\t IP discovered is ip_found ( " + ip_found + " ).")
- result = main.TRUE
- else:
- main.log.report("\t Found host attached to switch, but no IP address discovered.")
- result = main.FALSE
+ main.log.report("\t PASSED - Found host IP = " + hostip + "; MAC = " + MAC + "; attached to switchDPID = " + Switch + "; at port = " + Port)
+ result1 = main.TRUE
+ elif Reststatus > 1:
+ main.log.report("\t FAILED - Host " + host + " with MAC:" + mac + " has " + str(Reststatus) + " duplicated IP addresses. FAILED")
+ result1 = main.FALSE
else:
- main.log.report("\t Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
- result = main.FALSE
+ main.log.report("\t FAILED - Host " + host + " with MAC:" + mac + " does not exist. FAILED")
+ result1 = main.FALSE
+
##### Step to yank out "s1-eth1" from s1, which is on autoONOS1 #####
main.log.report("Yank out s1-eth1")
main.case("Yankout s6-eth1 (link to h1) from s1")
result = main.Mininet1.yank(SW=main.params['YANK']['sw1'],INTF=main.params['YANK']['intf'])
- time.sleep(3)
+ time.sleep(5)
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank command suceeded",onfail="Yank command failed...")
+
+ main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- except:
- Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to yank out s1-eth1 from s1 sucessfully")
- result = main.TRUE
+ time.sleep(sleepT)
+ restcall = OnosRestApiDriver()
+ Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+
+ main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
+ if Reststatus == 1:
+ main.log.report("\tFAILED - Found host IP = " + hostip + "; MAC = " + MAC + "; attached to switchDPID = " + Switch + "; at port = " + Port)
+ result2 = main.FALSE
+ elif Reststatus > 1:
+ main.log.report("\t FAILED - Host " + host + " with MAC:" + str(mac) + " has " + str(Reststatus) + " duplicated IP addresses. FAILED")
+ result2 = main.FALSE
else:
- main.log.report("Attempt to yank out s1-eht1 from s1 failed.")
- result = main.FALSE
-
+ main.log.report("\t PASSED - Host " + host + " with MAC:" + str(mac) + " does not exist. PASSED - host is not supposed to be attached to the switch.")
+ result2 = main.TRUE
+
##### Step to plug "s1-eth1" to s6, which is on autoONOS3 ######
main.log.report("Plug s1-eth1 into s6")
main.case("Plug s1-eth1 to s6")
result = main.Mininet1.plug(SW=main.params['PLUG']['sw6'],INTF=main.params['PLUG']['intf'])
- time.sleep(3)
+ time.sleep(5)
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Plug command suceeded",onfail="Plug command failed...")
+ main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
+
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP2,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- ip_found = Hoststatus[0]['ipv4'][0]
- except:
- Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to plug s1-eth1 to s6 FAILED")
- result = main.FALSE
- elif attachedSW == "00:00:00:00:00:00:00:06":
- main.log.report("Attempt to plug s1-eht1 to s6 succeded.")
- if ip_found != None:
- main.log.report("\t IP discovered is ip_found ( " + ip_found + " ).")
- result = main.TRUE
- else:
- main.log.report("\t Found host attached to switch, but no IP address discovered.")
- result = main.FALSE
+ time.sleep(sleepT)
+ restcall = OnosRestApiDriver()
+ Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+
+ main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
+ if Reststatus == 1:
+ main.log.report("\tPASSED - Found host IP = " + hostip + "; MAC = " + MAC + "; attached to switchDPID = " + Switch + "; at port = " + Port)
+ result3 = main.TRUE
+ elif Reststatus > 1:
+ main.log.report("\t FAILED - Host " + host + " with MAC:" + str(mac) + " has " + str(Reststatus) + " duplicated IP addresses. FAILED")
+ result3 = main.FALSE
else:
- main.log.report( "FAILED to attach s1-eth1 to s6 correctly!")
- result = main.FALSE
+ main.log.report("\t FAILED - Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
+ result3 = main.FALSE
###### Step to put interface "s1-eth1" back to s1"#####
main.log.report("Move s1-eth1 back on to s1")
main.case("Move s1-eth1 back to s1")
result = main.Mininet1.yank(SW=main.params['YANK']['sw6'],INTF=main.params['YANK']['intf'])
- time.sleep(3)
+ time.sleep(5)
retult = main.Mininet1.plug(SW=main.params['PLUG']['sw1'],INTF=main.params['PLUG']['intf'])
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="Yank/Plug command suceeded",onfail="Yank/Plug command failed...")
+ main.log.info("\n\t\t\t\t ping issue one ping from" + str(host) + "to generate arp to switch. Ping result is not important" )
+
ping = main.Mininet1.pingHost(src = str(host),target = "10.0.0.254")
- Reststatus, Hoststatus = restcall.find_host(RestIP1,RestPort,url,mac)
- try:
- attachedSW = Hoststatus[0]['attachmentPoint'][0]['switchDPID']
- ip_found = Hoststatus[0]['ipv4'][0]
- except:
- Reststatus = 0
- if Reststatus == 0:
- main.log.report("Attempt to plug s1-eth1 back to s1 FAILED")
- result = main.FALSE
- elif attachedSW == "00:00:00:00:00:00:00:01":
- main.log.report("Attempt to plug s1-eht1 back to s1 succeded.")
- if ip_found != None:
- main.log.report("\t IP discovered is ip_found ( " + ip_found + " ).")
- result = main.TRUE
- else:
- main.log.report("\t Found host attached to switch, but no IP address discovered.")
- result = main.FALSE
+ time.sleep(sleepT)
+ restcall = OnosRestApiDriver()
+ Reststatus, Switch, Port, MAC = restcall.find_host(RestIP1,RestPort,url, hostip)
+
+ main.log.report("Number of host with IP=10.0.0.1 found by ONOS is: " + str(Reststatus))
+ if Reststatus == 1:
+ main.log.report("\tPASSED - Found host IP = " + hostip + "; MAC = " + MAC + "; attached to switchDPID = " + Switch + "; at port = " + Port)
+ result4 = main.TRUE
+ elif Reststatus > 1:
+ main.log.report("\t FAILED - Host " + host + " with MAC:" + str(mac) + " has " + str(Reststatuas) + " duplicated IP addresses. FAILED")
+ result4 = main.FALSE
else:
- main.log.report( "FAIL to attach s1-eth1 to s1 correctly!")
- result = main.FALSE
+ main.log.report("\t FAILED -Host " + host + " with MAC:" + str(mac) + " does not exist. FAILED")
+ result4 = main.FALSE
+ result = result1 and result2 and result3 and result4
utilities.assert_equals(expect=main.TRUE,actual=result,onpass="DEVICE DISCOVERY TEST PASSED PLUG/UNPLUG/MOVE TEST",onfail="DEVICE DISCOVERY TEST FAILED")
-
-
diff --git a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.topo.back b/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.topo.back
deleted file mode 100644
index 9561597..0000000
--- a/TestON/tests/OnosSanity4nodes/OnosSanity4nodes.topo.back
+++ /dev/null
@@ -1,42 +0,0 @@
-<TOPOLOGY>
-
- <COMPONENT>
- <Zookeeper1>
- <host>10.128.4.26</host>
- <user>admin</user>
- <password>onos_test</password>
- <type>ZookeeperCliDriver</type>
- <COMPONENTS>
- </COMPONENTS>
- </Zookeeper1>
- <Cassandra1>
- <host>10.128.4.26</host>
- <user>admin</user>
- <password>onos_test</password>
- <type>CassandraCliDriver</type>
- <COMPONENTS>
- </COMPONENTS>
- </Cassandra1>
- <ONOS1>
- <host>10.128.4.26</host>
- <user>admin</user>
- <password>onos_test</password>
- <type>OnosCliDriver</type>
- <COMPONENTS>
-
- </COMPONENTS>
- </ONOS1>
-
-
- <ONOSRESTAPI1>
- <host>10.128.4.26</host>
- <user>admin</user>
- <password>onos_test</password>
- <type>OnosRestApiDriver</type>
- <COMPONENTS>
- <topology_url>http://10.128.4.26:9000/topology</topology_url>
- </COMPONENTS>
- </ONOSRESTAPI1>
-
- </COMPONENT>
-</TOPOLOGY>
diff --git a/TestON/tests/__init__.pyc b/TestON/tests/__init__.pyc
index 275a7e0..dee7b9b 100644
--- a/TestON/tests/__init__.pyc
+++ b/TestON/tests/__init__.pyc
Binary files differ