thisDir = os.path.dirname(os.path.realpath(__file__))
- # Verify OSPFv3 Routing Table
print("\n\n** Verifing BGP Routing Tables")
print("******************************************\n")
failures = 0
# For debugging after starting FRR/Quagga daemons, uncomment the next line
# CLI(net)
+def test_shutdown_check_stderr():
+ global fatal_error
+ global net
+
+ # Skip if previous fatal error condition is raised
+ if (fatal_error != ""):
+ pytest.skip(fatal_error)
+
+ if os.environ.get('TOPOTESTS_CHECK_STDERR') is None:
+ pytest.skip('Skipping test for Stderr output and memory leaks')
+
+ thisDir = os.path.dirname(os.path.realpath(__file__))
+
+ print("\n\n** Verifing unexpected STDERR output from daemons")
+ print("******************************************\n")
+
+ net['r1'].stopRouter()
+
+ log = net['r1'].getStdErr('bgpd')
+ print("\nBGPd StdErr Log:\n" + log)
+ log = net['r1'].getStdErr('zebra')
+ print("\nZebra StdErr Log:\n" + log)
+
if __name__ == '__main__':
# CLI(net)
+def test_shutdown_check_stderr():
+ global fatal_error
+ global net
+
+ # Skip if previous fatal error condition is raised
+ if (fatal_error != ""):
+ pytest.skip(fatal_error)
+
+ if os.environ.get('TOPOTESTS_CHECK_STDERR') is None:
+ pytest.skip('Skipping test for Stderr output and memory leaks')
+
+ thisDir = os.path.dirname(os.path.realpath(__file__))
+
+ print("\n\n** Verifing unexpected STDERR output from daemons")
+ print("******************************************\n")
+
+ for i in range(1, 5):
+ net['r%s' % i].stopRouter()
+ log = net['r%s' % i].getStdErr('ldpd')
+ print("\nRouter r%s LDPd StdErr Log:\n%s" % (i, log))
+ log = net['r%s' % i].getStdErr('ospfd')
+ print("\nRouter r%s OSPFd StdErr Log:\n%s" % (i, log))
+ log = net['r%s' % i].getStdErr('zebra')
+ print("\nRouter r%s Zebra StdErr Log:\n%s" % (i, log))
+
+
+
if __name__ == '__main__':
setLogLevel('info')
'ldpd': 0}
def terminate(self):
# Delete Running Quagga or FRR Daemons
- rundaemons = self.cmd('ls -1 /var/run/%s/*.pid' % self.routertype)
- for d in StringIO.StringIO(rundaemons):
- self.cmd('kill -7 `cat %s`' % d.rstrip())
- self.waitOutput()
+ self.stopRouter()
+ # rundaemons = self.cmd('ls -1 /var/run/%s/*.pid' % self.routertype)
+ # for d in StringIO.StringIO(rundaemons):
+ # self.cmd('kill -7 `cat %s`' % d.rstrip())
+ # self.waitOutput()
# Disable forwarding
self.cmd('sysctl net.ipv4.ip_forward=0')
self.cmd('sysctl net.ipv6.conf.all.forwarding=0')
super(Router, self).terminate()
+ def stopRouter(self):
+ # Stop Running Quagga or FRR Daemons
+ rundaemons = self.cmd('ls -1 /var/run/%s/*.pid' % self.routertype)
+ if rundaemons is not None:
+ for d in StringIO.StringIO(rundaemons):
+ self.cmd('kill -7 `cat %s`' % d.rstrip())
+ self.waitOutput()
def removeIPs(self):
for interface in self.intfNames():
self.cmd('ip address flush', interface)
self.cmd('/sbin/modprobe mpls-router')
self.cmd('/sbin/modprobe mpls-iptunnel')
self.cmd('echo 100000 > /proc/sys/net/mpls/platform_labels')
+ # Init done - now restarting daemons
+ self.restartRouter()
+ return ""
+ def restartRouter(self):
+ # Starts actuall daemons without init (ie restart)
# Start Zebra first
if self.daemons['zebra'] == 1:
- self.cmd('/usr/lib/%s/zebra -d' % self.routertype)
+# self.cmd('/usr/lib/%s/zebra -d' % self.routertype)
+ self.cmd('/usr/lib/%s/zebra > /tmp/%s-zebra.out 2> /tmp/%s-zebra.err &' % (self.routertype, self.name, self.name))
self.waitOutput()
print('%s: %s zebra started' % (self, self.routertype))
sleep(1)
# Now start all the other daemons
for daemon in self.daemons:
if (self.daemons[daemon] == 1) and (daemon != 'zebra'):
- self.cmd('/usr/lib/%s/%s -d' % (self.routertype, daemon))
+# self.cmd('/usr/lib/%s/%s -d' % (self.routertype, daemon))
+ self.cmd('/usr/lib/%s/%s > /tmp/%s-%s.out 2> /tmp/%s-%s.err &' % (self.routertype, daemon, self.name, daemon, self.name, daemon))
self.waitOutput()
print('%s: %s %s started' % (self, self.routertype, daemon))
- return ""
+ def getStdErr(self, daemon):
+ return self.getLog('err', daemon)
+ def getStdOut(self, daemon):
+ return self.getLog('out', daemon)
+ def getLog(self, log, daemon):
+ return self.cmd('cat /tmp/%s-%s.%s' % (self.name, daemon, log) )
def checkRouterRunning(self):
global fatal_error
# CLI(net)
+def test_shutdown_check_stderr():
+ global fatal_error
+ global net
+
+ # Skip if previous fatal error condition is raised
+ if (fatal_error != ""):
+ pytest.skip(fatal_error)
+
+ if os.environ.get('TOPOTESTS_CHECK_STDERR') is None:
+ pytest.skip('Skipping test for Stderr output and memory leaks')
+
+ thisDir = os.path.dirname(os.path.realpath(__file__))
+
+ print("\n\n** Verifing unexpected STDERR output from daemons")
+ print("******************************************\n")
+
+ for i in range(1, 5):
+ net['r%s' % i].stopRouter()
+ log = net['r%s' % i].getStdErr('ospf6d')
+ print("\nRouter r%s OSPF6d StdErr Log:\n%s" % (i, log))
+ log = net['r%s' % i].getStdErr('zebra')
+ print("\nRouter r%s Zebra StdErr Log:\n%s" % (i, log))
+
+
if __name__ == '__main__':
setLogLevel('info')