Changes to the Drivers
diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 8ea0ea3..1e7de39 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -773,6 +773,8 @@
PYTHONPATH=/home/admin/TestON:/home/admin/sts
'''
+ import sys
+ sys.path.append("~/sts")
from sts.topology.teston_topology import TestONTopology # assumes that sts already in you PYTHONPATH
#import sts.entities.base as base
import json
diff --git a/TestON/drivers/common/cli/emulator/remotemininetdriver.py b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
index 7aaec91..1b63f87 100644
--- a/TestON/drivers/common/cli/emulator/remotemininetdriver.py
+++ b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
@@ -388,7 +388,46 @@
main.cleanup()
main.exit()
+ def del_switch(self,sw):
+ self.handle.sendline("")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl del-br "+sw)
+ self.handle.expect("\$")
+ return main.TRUE
+ def add_switch(self,sw):
+ self.handle.sendline("")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-br "+sw)
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth1")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth2")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth3")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth4")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth5")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth6")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth7")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth8")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth9")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth10")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth11")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth12")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth13")
+ self.handle.expect("\$")
+ self.handle.sendline("sudo ovs-vsctl add-port "+sw+" " + sw + "-eth14")
+ self.handle.expect("\$")
def disconnect(self):
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 1ced6af..d314410 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -68,6 +68,43 @@
main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
main.cleanup()
main.exit()
+
+ def portKill(self, port):
+ try:
+ self.handle.sendline("")
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ cmd = "sudo tcpkill -i eth0 port " + str(port) + " 2>/dev/null 1>/dev/null &"
+ self.handle.sendline(cmd)
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ except pexpect.EOF:
+ main.log.error(self.name + ": EOF exception found")
+ main.log.error(self.name + ": " + self.handle.before)
+ main.cleanup()
+ main.exit()
+ except:
+ main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.log.error( traceback.print_exc() )
+ main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.cleanup()
+ main.exit()
+
+ def endPortKill(self,port):
+ try:
+ self.handle.sendline("")
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ self.handle.sendline("sudo pkill tcpkill")
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ except pexpect.EOF:
+ main.log.error(self.name + ": EOF exception found")
+ main.log.error(self.name + ": " + self.handle.before)
+ main.cleanup()
+ main.exit()
+ except:
+ main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.log.error( traceback.print_exc() )
+ main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.cleanup()
+ main.exit()
def start(self, env = ''):
'''
@@ -425,6 +462,32 @@
main.exit()
+ def kill(self):
+ import re
+ try:
+ self.handle.sendline("ps -ef |grep 'ONOS/conf/logback' |awk 'NR==1 {print $2}' |xargs sudo kill -9")
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ self.handle.sendline("ps -ef |grep 'ONOS/conf/logback' |wc -l")
+ self.handle.expect(["wc -l",pexpect.EOF,pexpect.TIMEOUT])
+ response = self.handle.after
+ if re.search("1",response):
+ return "ONOS Killed!"
+ else:
+ return "ERROR!!! ONOS MAY NOT HAVE BEEN KILLED PROPERLY!!!"
+ except pexpect.EOF:
+ main.log.error(self.name + ": EOF exception found")
+ main.log.error(self.hane + ": " + self.handle.before)
+ main.cleanup()
+ main.exit()
+ except:
+ main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.log.error( traceback.print_exc() )
+ main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.cleanup()
+ main.exit()
+
+
+
def disconnect(self):
'''
Called when Test is complete to disconnect the ONOS handle.
@@ -926,6 +989,26 @@
main.cleanup()
main.exit()
+ def num_switch(self,RestIP,RestPort="8080"):
+ url = "http://%s:%s/wm/onos/topology/switches" %(RestIP,RestPort)
+ parsedResult = self.get_json(url)
+ if parsedResult == "":
+ retcode = 1
+ return (retcode, "RestAPI has an issue")
+ url = "http://%s:%s/wm/onos/registry/switches/json" %(RestIP,RestPort)
+ registry = self.get_json(url)
+ if registry == "":
+ retcode = 1
+ return (retcode, "REST API has an Issue")
+ cnt = 0
+ active = 0
+ for s in parsedResult:
+ cnt +=1
+ if s['state']=="ACTIVE":
+ active+=1
+ return (cnt,active)
+
+
def check_switch(self,RestIP,correct_nr_switch, RestPort ="8080" ):
'''
Used by check_status
@@ -975,6 +1058,17 @@
main.cleanup()
main.exit()
+ def num_link(self,RestIP,RestPort="8080"):
+ url = "http://%s:%s/wm/onos/topology/links" % (RestIP,RestPort)
+ parsedResult = self.get_json(url)
+ if parsedResult == "":
+ retcode = 1
+ return (retcode,"RestAPI has an issue")
+ intra = 0
+ for s in parsedResult:
+ intra+=1
+ return intra
+
def check_link(self,RestIP, nr_links, RestPort = "8080"):
'''
Used by check_status
@@ -1141,6 +1235,100 @@
#********************************************************
+
+
+ def git_checkout(self, branch="onos13integration"):
+ '''
+ Assumes that "git pull" works without login
+
+ This function will perform a git pull on the ONOS instance.
+ If used as git_pull("NODE") it will do git pull + NODE. This is
+ for the purpose of pulling from other nodes if necessary.
+
+ Otherwise, this function will perform a git pull in the
+ ONOS repository. If it has any problems, it will return main.ERROR
+ If it successfully does a git_pull, it will return a 1.
+ If it has no updates, it will return a 0.
+
+ '''
+ try:
+ # main.log.info(self.name + ": Stopping ONOS")
+ #self.stop()
+ self.handle.sendline("cd " + self.home)
+ self.handle.expect("ONOS\$")
+ if branch != 'master':
+ #self.handle.sendline('git stash')
+ #self.handle.expect('ONOS\$')
+ #print "After issuing git stash cmnd: ", self.handle.before
+ cmd = "git checkout "+branch
+ print "checkout cmd = ", cmd
+ self.handle.sendline(cmd)
+ uptodate = 0
+ i=self.handle.expect(['fatal','Username\sfor\s(.*):\s','Already\son\s\'onos13integration\'','Switched\sto\sbranch\s\'onos13integration\'', pexpect.TIMEOUT],timeout=60)
+ else:
+ #self.handle.sendline('git stash apply')
+ #self.handle.expect('ONOS\$')
+ #print "After issuing git stash apply cmnd: ", self.handle.before
+ cmd = "git checkout "+branch
+ print "checkout cmd = ", cmd
+ self.handle.sendline(cmd)
+ uptodate = 0
+ switchedToMaster = 0
+ i=self.handle.expect(['fatal','Username\sfor\s(.*):\s','Already\son\s\'master\'','Switched\sto\sbranch\s\'master\'', pexpect.TIMEOUT],timeout=60)
+
+
+ if i==0:
+ main.log.error(self.name + ": Git checkout had some issue...")
+ return main.ERROR
+ elif i==1:
+ main.log.error(self.name + ": Git checkout Asking for username!!! BADD!")
+ return main.ERROR
+ elif i==2:
+ main.log.info(self.name + ": Git Checkout %s : Already on this branch" %branch)
+ self.handle.expect("ONOS\$")
+ print "after checkout cmd = ", self.handle.before
+ switchedToMaster = 1
+ return 1
+ elif i==3:
+ main.log.info(self.name + ": Git checkout %s - Switched to this branch" %branch)
+ self.handle.expect("ONOS\$")
+ print "after checkout cmd = ", self.handle.before
+ switchedToMaster = 1
+ return 1
+ elif i==4:
+ main.log.error(self.name + ": Git Checkout- TIMEOUT")
+ main.log.error(self.name + " Response was: " + str(self.handle.before))
+ return main.ERROR
+ else:
+ main.log.error(self.name + ": Git Checkout - Unexpected response, check for pull errors")
+ return main.ERROR
+
+ except pexpect.EOF:
+ main.log.error(self.name + ": EOF exception found")
+ main.log.error(self.name + ": " + self.handle.before)
+ main.cleanup()
+ main.exit()
+ except:
+ main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.log.error( traceback.print_exc() )
+ main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.cleanup()
+ main.exit()
+#********************************************************
+ self.handle.sendline("git branch")
+ self.handle.expect("ONOS\$")
+ print "git branch output = ", self.handle.before
+ print "*****************************************"
+ self.handle.sendline('cd\.\.')
+ self.handle.expect("\$")
+
+
+
+
+
+
+
+
def git_compile(self):
'''
Compiles ONOS
diff --git a/TestON/drivers/common/cli/ramcloudclidriver.py b/TestON/drivers/common/cli/ramcloudclidriver.py
index 0546edf..5b19508 100644
--- a/TestON/drivers/common/cli/ramcloudclidriver.py
+++ b/TestON/drivers/common/cli/ramcloudclidriver.py
@@ -66,6 +66,55 @@
main.log.error(self.name+": Connection failed to the host "+self.user_name+"@"+self.ip_address)
main.log.error(self.name+": Failed to connect to the Onos system")
return main.FALSE
+
+ def kill_serv(self):
+ import re
+ try:
+ self.handle.sendline("ps -ef |grep 'master/server' |awk 'NR==1 {print $2}' |xargs sudo kill -9")
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ self.handle.sendline("ps -ef |grep 'master/server' |wc -l")
+ self.handle.expect(["wc -l",pexpect.EOF,pexpect.TIMEOUT])
+ response = self.handle.after
+ if re.search("1",response):
+ return "RAMCloud Server Killed!"
+ else:
+ return "ERROR!!! RAMCLOUd SERVER MAY NOT HAVE BEEN KILLED PROPERLY!!!"
+ except pexpect.EOF:
+ main.log.error(self.name + ": EOF exception found")
+ main.log.error(self.hane + ": " + self.handle.before)
+ main.cleanup()
+ main.exit()
+ except:
+ main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.log.error( traceback.print_exc() )
+ main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.cleanup()
+ main.exit()
+
+ def kill_coord(self):
+ import re
+ try:
+ self.handle.sendline("ps -ef |grep 'master/coordinator' |awk 'NR==1 {print $2}' |xargs sudo kill -9")
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ self.handle.sendline("ps -ef |grep 'master/coordinator' |wc -l")
+ self.handle.expect(["wc -l",pexpect.EOF,pexpect.TIMEOUT])
+ response = self.handle.after
+ if re.search("1",response):
+ return "RAMCloud Coordinator Killed!"
+ else:
+ return "ERROR!!! RAMCLOUD COORDINATOR MAY NOT HAVE BEEN KILLED PROPERLY!!!"
+ except pexpect.EOF:
+ main.log.error(self.name + ": EOF exception found")
+ main.log.error(self.hane + ": " + self.handle.before)
+ main.cleanup()
+ main.exit()
+ except:
+ main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.log.error( traceback.print_exc() )
+ main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.cleanup()
+ main.exit()
+
def start_serv(self):
diff --git a/TestON/drivers/common/cli/zookeeperclidriver.py b/TestON/drivers/common/cli/zookeeperclidriver.py
index 2a7c218..9a35366 100644
--- a/TestON/drivers/common/cli/zookeeperclidriver.py
+++ b/TestON/drivers/common/cli/zookeeperclidriver.py
@@ -44,6 +44,32 @@
self.handle = self
self.wrapped = sys.modules[__name__]
+ def kill(self):
+ import re
+ try:
+ self.handle.sendline("ps -ef |grep 'zookeeper.log.dir' |awk 'NR==1 {print $2}' |xargs sudo kill -9")
+ self.handle.expect(["\$",pexpect.EOF,pexpect.TIMEOUT])
+ self.handle.sendline("ps -ef |grep 'zookeeper.log.dir' |wc -l")
+ self.handle.expect(["wc -l",pexpect.EOF,pexpect.TIMEOUT])
+ response = self.handle.after
+ if re.search("1",response):
+ return "Zookeeper Killed!"
+ else:
+ return "ERROR!!! ZOOKEEPER MAY NOT HAVE BEEN KILLED PROPERLY!!!"
+ except pexpect.EOF:
+ main.log.error(self.name + ": EOF exception found")
+ main.log.error(self.hane + ": " + self.handle.before)
+ main.cleanup()
+ main.exit()
+ except:
+ main.log.info(self.name + ":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.log.error( traceback.print_exc() )
+ main.log.info(":::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
+ main.cleanup()
+ main.exit()
+
+
+
def connect(self, **connectargs):
# Here the main is the TestON instance after creating all the log handles.
self.port = None
@@ -96,13 +122,12 @@
'''
This Function will return the Status of the Zookeeper
'''
- time.sleep(5)
self.execute(cmd="\n",prompt="\$",timeout=10)
self.handle.sendline("cd "+self.home)
response = self.execute(cmd="./onos.sh zk status ",prompt="JMX",timeout=10)
-
+ response=self.handle.after
self.execute(cmd="\n",prompt="\$",timeout=10)
- return response
+ return self.handle.before + self.handle.after
def stop(self):
'''
@@ -144,6 +169,8 @@
def findMaster(self, switchDPID, switchList):
import json
decoded = json.loads(switchList)
+ if switchList=="":
+ return "NO CONTROLLERS FOUND"
for k in decoded.iteritems():
k2 = json.dumps(k)
if re.search(switchDPID,k2):