Archive the onos logs by first checking for the presence of shared cluster volumes for karaf logs.
Archive everything if it exists.
Otherwise fall back to ssh to each onos instance like before to collect and zip karaf.log.
Change-Id: Ied6d9a38394ede50984fab3c10cfe2d1737b1cbb
(cherry picked from commit 81ece15620f122048a2b90f36104a26ac2bf8269)
diff --git a/src/test/utils/CordLogger.py b/src/test/utils/CordLogger.py
index b026ab0..32ec690 100644
--- a/src/test/utils/CordLogger.py
+++ b/src/test/utils/CordLogger.py
@@ -5,15 +5,26 @@
import os
import time
+def get_controller_names(controllers):
+ controller_names = [ 'cord-onos' if controllers.index(c) == 0 else 'cord-onos-{}'.format(controllers.index(c)+1) for c in controllers ]
+ return controller_names
+
+def get_controller_map(controllers):
+ controller_map = ( ('cord-onos' if controllers.index(c) == 0 else 'cord-onos-{}'.format(controllers.index(c)+1),c) for c in controllers )
+ return dict(controller_map)
+
class CordLogger(unittest.TestCase):
controllers = os.getenv('ONOS_CONTROLLER_IP', '').split(',')
+ controller_names = get_controller_names(controllers)
+ controller_map = get_controller_map(controllers)
cliSessions = {}
onosLogLevel = 'INFO'
curLogLevel = onosLogLevel
testLogLevel = os.getenv('LOG_LEVEL', onosLogLevel)
setup_dir = os.path.join( os.path.dirname(os.path.realpath(__file__)), '../setup')
archive_dir = os.path.join(setup_dir, 'test_logs')
+ onos_data_dir = os.path.join(setup_dir, 'cord-onos')
@classmethod
def cliSessionEnter(cls):
@@ -68,7 +79,29 @@
except: pass
@classmethod
- def archive_results(cls, testName, controllers = None, iteration = None, cache_result = False):
+ def archive_results(cls, testName, controllers = None, iteration = None):
+ if not os.path.exists(cls.onos_data_dir):
+ return cls.archive_results_unshared(testName, controllers = controllers, iteration = iteration)
+ if not os.path.exists(cls.archive_dir):
+ os.mkdir(cls.archive_dir)
+ if controllers is None:
+ controllers = cls.controllers
+ controller_map = cls.controller_map
+ else:
+ controller_map = get_controller_map(controllers)
+
+ iteration_str = '' if iteration is None else '_{}'.format(iteration)
+ for c in controller_map.keys():
+ archive_file = os.path.join(cls.archive_dir,
+ 'logs_{}_{}{}.tar.gz'.format(controller_map[c], testName, iteration_str))
+ archive_path = os.path.join(cls.setup_dir, '{}-data'.format(c), 'log')
+ cmd = 'cd {} && tar cvzf {} .'.format(archive_path, archive_file)
+ try:
+ os.system(cmd)
+ except: pass
+
+ @classmethod
+ def archive_results_unshared(cls, testName, controllers = None, iteration = None, cache_result = False):
log_map = {}
if controllers is None:
controllers = cls.controllers