Latest HA tests
- better startup sequence
- single node HA test
- minor fixes to improve error handling
diff --git a/TestON/drivers/common/cli/emulator/remotemininetdriver.py b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
index 9cf13ed..43fd41d 100644
--- a/TestON/drivers/common/cli/emulator/remotemininetdriver.py
+++ b/TestON/drivers/common/cli/emulator/remotemininetdriver.py
@@ -270,14 +270,14 @@
else :
main.log.error("Connection failed to the host")
- def start_tcpdump(self, filename, intf = "eth0", port = "port 6633"):
+ def start_tcpdump(self, filename, intf = "eth0", port = "port 6633", user="admin"):
'''
Runs tpdump on an intferface and saves the file
intf can be specified, or the default eth0 is used
'''
try:
self.handle.sendline("")
- self.handle.sendline("sudo tcpdump -n -i "+ intf + " " + port + " -w " + filename.strip() + " &")
+ self.handle.sendline("sudo tcpdump -n -i "+ intf + " " + port + " -w " + filename.strip() + " -Z " + user + " &")
self.handle.sendline("")
self.handle.sendline("")
i=self.handle.expect(['No\ssuch\device','listening\son',pexpect.TIMEOUT,"\$"],timeout=10)
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 45bb92e..f97d778 100644
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -1533,5 +1533,52 @@
main.cleanup()
main.exit()
+ def clusters(self, json_format=True):
+ '''
+ Lists all clusters
+ '''
+ try:
+ self.handle.sendline("")
+ self.handle.expect("onos>")
+
+ if json_format:
+ self.handle.sendline("clusters -j")
+ self.handle.expect("clusters -j")
+ self.handle.expect("onos>")
+ handle = self.handle.before
+ '''
+ handle variable here contains some ANSI escape color code
+ sequences at the end which are invisible in the print command
+ output. To make that escape sequence visible, use repr() function.
+ The repr(handle) output when printed shows the ANSI escape sequences.
+ In json.loads(somestring), this somestring variable is actually
+ repr(somestring) and json.loads would fail with the escape sequence.
+ So we take off that escape sequence using
+ ansi_escape = re.compile(r'\r\r\n\x1b[^m]*m')
+ handle1 = ansi_escape.sub('', handle)
+ '''
+ #print "repr(handle) =", repr(handle)
+ ansi_escape = re.compile(r'\r\r\n\x1b[^m]*m')
+ handle1 = ansi_escape.sub('', handle)
+ #print "repr(handle1) = ", repr(handle1)
+ return handle1
+ else:
+ self.handle.sendline("links")
+ self.handle.expect("onos>")
+ handle = self.handle.before
+ #print "handle =",handle
+ return handle
+ 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(self.name+" ::::::")
+ main.cleanup()
+ main.exit()
+
#***********************************
diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 35a5d9d..f733d35 100644
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -395,6 +395,7 @@
self.handle.sendline("\n")
self.handle.expect("\$")
self.handle.sendline("cd " + self.home + "; git log -1 --pretty=fuller --decorate=short | grep -A 6 \"commit\" --color=never")
+ #NOTE: for some reason there are backspaces inserted in this phrase when run from Jenkins on some tests
#self.handle.expect("--color=never")
self.handle.expect("\$")
response=(self.name +": \n"+ str(self.handle.before + self.handle.after))
@@ -788,7 +789,8 @@
try:
self.handle.sendline("")
self.handle.expect("\$")
- self.handle.sendline("onos-uninstall "+str(node_ip))
+ self.handle.sendline( "onos-uninstall "+str(node_ip) )
+ self.handle.expect( "onos-uninstall "+str(node_ip) )
self.handle.expect("\$")
main.log.info("ONOS "+node_ip+" was uninstalled")
@@ -931,14 +933,15 @@
self.handle.sendline("onos-wait-for-start " + node )
self.handle.expect("onos-wait-for-start")
#NOTE: this timeout is arbitrary"
- i = self.handle.expect(["\$", pexpect.TIMEOUT], timeout = 300)
+ i = self.handle.expect(["\$", pexpect.TIMEOUT], timeout = 120)
if i == 0:
main.log.info(self.name + ": " + node + " is up")
return main.TRUE
elif i == 1:
#NOTE: since this function won't return until ONOS is ready,
# we will kill it on timeout
- self.handle.sendline("\003") #Control-C
+ main.log.error("ONOS has not started yet")
+ self.handle.send("\x03") #Control-C
self.handle.expect("\$")
return main.FALSE
except pexpect.EOF: