Implement support to report error,warning logs after every test case run.
Change-Id: Id5710e9ee3497b4bc1030d7fa69c182d2e1348c6
diff --git a/src/test/utils/OnosLog.py b/src/test/utils/OnosLog.py
new file mode 100644
index 0000000..e876c67
--- /dev/null
+++ b/src/test/utils/OnosLog.py
@@ -0,0 +1,72 @@
+import os
+from SSHTestAgent import SSHTestAgent
+
+class OnosLog(object):
+ CLI_USER = 'karaf'
+ CLI_PASSWD = 'karaf'
+ CLI_PORT = 8101
+ HOST = os.getenv('ONOS_CONTROLLER_IP', '172.17.0.2')
+ last_snapshot_map = {}
+
+ def __init__(self, host = HOST):
+ self.ssh_agent = SSHTestAgent(host = host, user = self.CLI_USER,
+ password = self.CLI_PASSWD, port = self.CLI_PORT)
+ if not OnosLog.last_snapshot_map.has_key(host):
+ OnosLog.last_snapshot_map[host] = []
+
+ #should be the last function to call for tearing down the log session
+ def close(self):
+ self.ssh_agent.client.close()
+
+ @classmethod
+ def get_last_snapshot(cls, host):
+ if cls.last_snapshot_map.has_key(host):
+ return cls.last_snapshot_map[host]
+ return []
+
+ @classmethod
+ def update_last_snapshot(cls, host, res):
+ cls.last_snapshot_map[host] = res
+
+ def get_log(self, search_terms = None):
+ """Run the command on the test host"""
+ cmd = 'cat /root/onos/apache-karaf-3.0.5/data/log/karaf.log'
+ st, output = self.ssh_agent.run_cmd(cmd)
+ if st is False:
+ return output
+ last_snapshot = self.get_last_snapshot(self.ssh_agent.host)
+ lines = output.splitlines()
+ if search_terms:
+ if type(search_terms) is str:
+ terms = [ search_terms ]
+ else:
+ terms = search_terms
+ match_lines = []
+ last_len = len(last_snapshot)
+ for i in xrange(0, len(lines)):
+ if i < last_len and lines[i] in last_snapshot:
+ ##skip lines matching the last snapshot
+ continue
+ for t in terms:
+ if lines[i].find(t) >= 0:
+ match_lines.append(lines[i])
+
+ output = '\n'.join(match_lines)
+
+ #update the last snapshot
+ self.update_last_snapshot(self.ssh_agent.host, lines)
+ return st, output
+
+if __name__ == '__main__':
+ onos = os.getenv('ONOS_CONTROLLER_IP', '172.17.0.2')
+ onos_log = OnosLog(host = onos)
+ print('Checking for INFO')
+ st, output = onos_log.get_log('INFO')
+ print(st, output)
+ print('\n\nChecking for ERROR\n\n')
+ st, output = onos_log.get_log('ERROR')
+ print(st, output)
+ print('Checking for ERROR and INFO')
+ st, output = onos_log.get_log(('ERROR', 'INFO'))
+ print(st, output)
+ onos_log.close()