[ONOS-7747] Add router failure test cases to SRRouting
Change-Id: I06706c36caa181fff50c0f13c5976298e017940f
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
index 5bd3bdd..7ec46f2 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/Testcaselib.py
@@ -781,6 +781,40 @@
onfail="Failed to recover switch?" )
@staticmethod
+ def killRouter( main, router, sleep=None ):
+ """
+ Kill bgpd process on a quagga router
+ router: name of the router to be killed. E.g. "bgp1"
+ """
+ sleep = float( sleep )
+ main.step( "Kill " + str( router ) )
+ if hasattr( main, 'Mininet1' ):
+ main.Mininet1.handle.sendline( "px {}.stopProtocols()".format( router ) )
+ main.Mininet1.handle.expect( "mininet>" )
+ else:
+ # TODO: support killing router in physical network
+ pass
+ main.log.info( "Waiting %s seconds for router down to be discovered" % ( sleep ) )
+ time.sleep( sleep )
+
+ @staticmethod
+ def recoverRouter( main, router, sleep=None ):
+ """
+ Restart bgpd process on a quagga router
+ router: name of the router to be recovered. E.g. "bgp1"
+ """
+ sleep = float( sleep )
+ main.step( "Recovering " + str( router ) )
+ if hasattr( main, 'Mininet1' ):
+ main.Mininet1.handle.sendline( "px {}.startProtocols()".format( router ) )
+ main.Mininet1.handle.expect( "mininet>" )
+ else:
+ # TODO: support recovering router in physical network
+ pass
+ main.log.info( "Waiting %s seconds for router up to be discovered" % ( sleep ) )
+ time.sleep( sleep )
+
+ @staticmethod
def cleanup( main, copyKarafLog=True, removeHostComponent=False ):
"""
Stop Onos-cluster.
diff --git a/TestON/tests/USECASE/SegmentRouting/dependencies/routinglib.py b/TestON/tests/USECASE/SegmentRouting/dependencies/routinglib.py
index 621b372..13a75e2 100644
--- a/TestON/tests/USECASE/SegmentRouting/dependencies/routinglib.py
+++ b/TestON/tests/USECASE/SegmentRouting/dependencies/routinglib.py
@@ -156,6 +156,14 @@
if self.defaultRoute:
self.cmd('ip route add default via %s' % self.defaultRoute)
+ def stopProtocols(self, **kwargs):
+ for p in self.protocols:
+ p.stop(**kwargs)
+
+ def startProtocols(self, **kwargs):
+ for p in self.protocols:
+ p.start(**kwargs)
+
def terminate(self, **kwargs):
self.cmd("ps ax | grep '%s' | awk '{print $1}' | xargs kill"
% (self.socket))
@@ -175,6 +183,12 @@
def config(self, **kwargs):
pass
+ def stop(self, **kwargs):
+ pass
+
+ def start(self, **kwargs):
+ pass
+
def terminate(self, **kwargs):
pass
@@ -199,6 +213,14 @@
self.qr.cmd('%s/bgpd -d -f %s -z %s -i %s'
% (QuaggaRouter.binDir, self.configFile, self.qr.socket, bgpdPidFile))
+ def stop(self, **kwargs):
+ self.qr.cmd('pkill -f %s' % self.configFile)
+
+ def start(self, **kwargs):
+ bgpdPidFile = '%s/bgpd%s.pid' % (self.qr.runDir, self.qr.name)
+ self.qr.cmd('%s/bgpd -d -f %s -z %s -i %s'
+ % (QuaggaRouter.binDir, self.configFile, self.qr.socket, bgpdPidFile))
+
def generateConfig(self):
conf = ConfigurationWriter(self.configFile)