[SDFAB-285] Use stern to save a tail of pod logs
- Only save logs from the test period
- Fix some typos
- Check cli connectivity after saving logs, we sometimes timed out
Change-Id: I3f62950f898bef78b6071d94bcfb17ced1a6ca45
diff --git a/TestON/tests/dependencies/utils.py b/TestON/tests/dependencies/utils.py
index 8aaca08..e787474 100644
--- a/TestON/tests/dependencies/utils.py
+++ b/TestON/tests/dependencies/utils.py
@@ -54,7 +54,8 @@
onfail="Failed to stopped mininet" )
return topoResult
- def copyKarafLog( self, copyFileName="", before=False, includeCaseDesc=True ):
+ def copyKarafLog( self, copyFileName="", before=False, includeCaseDesc=True,
+ useStern=False, startTime=None ):
"""
Description:
copy the karaf log and verify it.
@@ -63,6 +64,8 @@
copyFileName.
Returns:
"""
+ import datetime
+ import math
# TODO: Also grab the rotated karaf logs
main.log.report( "Copy karaf logs" )
if includeCaseDesc:
@@ -102,12 +105,10 @@
else:
stepResult = main.FALSE and stepResult
if isKube:
- # TODO: Look into using Stern, kail, or just use `kubectl logs <pod>`
# We also need to save the pod name to switch name mapping
main.ONOSbench.kubectlPodNodes( dstPath=main.logdir + "/podMapping.txt",
kubeconfig=ctrl.k8s.kubeConfig,
namespace=main.params[ 'kubernetes' ][ 'namespace' ] )
- # TODO Get stratum write logs
# Save image for pods, based on "describe pods"
main.ONOSbench.kubectlDescribe( "pods",
main.logdir + "/describePods.txt",
@@ -117,12 +118,28 @@
pods = main.ONOSbench.kubectlGetPodNames( kubeconfig=ctrl.k8s.kubeConfig,
namespace=main.params[ 'kubernetes' ][ 'namespace' ] )
+ MINUTE = datetime.timedelta( minutes=1 )
for pod in pods:
path = "%s/%s.log" % ( main.logdir, pod )
- stratumPods = main.ONOSbench.kubectlLogs( pod,
- path,
- kubeconfig=ctrl.k8s.kubeConfig,
- namespace=main.params[ 'kubernetes' ][ 'namespace' ] )
+ if useStern:
+ if startTime:
+ now = datetime.datetime.utcnow()
+ duration = ( now - startTime ) + MINUTE
+ since = "%ss" % int( math.ceil( duration.total_seconds() ) )
+ else:
+ since = "1h"
+ podResults = main.ONOSbench.sternLogs( pod,
+ path,
+ kubeconfig=ctrl.k8s.kubeConfig,
+ namespace=main.params[ 'kubernetes' ][ 'namespace' ],
+ since=since,
+ wait=10 )
+ else:
+ podResults = main.ONOSbench.kubectlLogs( pod,
+ path,
+ kubeconfig=ctrl.k8s.kubeConfig,
+ namespace=main.params[ 'kubernetes' ][ 'namespace' ] )
+ stepResult = stepResult and podResults
utilities.assert_equals( expect=main.TRUE,
actual=stepResult,
onpass="Successfully copied remote ONOS logs",