tom | 82d6bde | 2014-09-23 17:33:58 -0700 | [diff] [blame] | 1 | #!/bin/bash |
Pavlin Radoslavov | 9141379 | 2014-10-15 11:00:32 -0700 | [diff] [blame] | 2 | # ----------------------------------------------------------------------------- |
tom | 82d6bde | 2014-09-23 17:33:58 -0700 | [diff] [blame] | 3 | # Checks the logs of the remote ONOS instance and makes sure they are clean. |
Pavlin Radoslavov | 9141379 | 2014-10-15 11:00:32 -0700 | [diff] [blame] | 4 | # ----------------------------------------------------------------------------- |
tom | 82d6bde | 2014-09-23 17:33:58 -0700 | [diff] [blame] | 5 | |
Ayaka Koshibe | bad156d | 2015-09-18 17:30:14 -0700 | [diff] [blame] | 6 | function __usage() { |
| 7 | cat << _EOM_ |
| 8 | |
| 9 | usage: |
| 10 | $(basename $0) [node] ['old'] |
| 11 | |
| 12 | options: |
| 13 | - [node] : The node whose logs to inspect. The default is \$OCI. |
| 14 | - ['old'] : If 'old' is specified, the logs are simply searched for errors |
| 15 | and exceptions, and they are displayed. |
| 16 | |
| 17 | summary: |
| 18 | Checks the logs of the remote ONOS instance and makes sure they are clean. |
| 19 | |
| 20 | _EOM_ |
| 21 | } |
| 22 | |
| 23 | [ "$1" = "-h" ] && __usage && exit 0 |
| 24 | |
tom | 82d6bde | 2014-09-23 17:33:58 -0700 | [diff] [blame] | 25 | [ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 |
| 26 | . $ONOS_ROOT/tools/build/envDefaults |
| 27 | |
| 28 | remote=$ONOS_USER@${1:-$OCI} |
| 29 | |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 30 | LOG=$ONOS_INSTALL_DIR/log/karaf.log* |
tom | 82d6bde | 2014-09-23 17:33:58 -0700 | [diff] [blame] | 31 | |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 32 | aux=/tmp/log.$$ |
| 33 | |
| 34 | if [ "$2" = "old" ]; then |
| 35 | ssh $remote "egrep 'ERROR|Exception|Error' $LOG" |
| 36 | |
| 37 | else |
| 38 | ssh $remote " |
Ayaka Koshibe | bad156d | 2015-09-18 17:30:14 -0700 | [diff] [blame] | 39 | [ "'`uname`'" != "'"Linux"'" ] && alias tac='tail -r' |
Thomas Vachuska | 2ec5aa9 | 2016-08-31 13:30:31 -0700 | [diff] [blame^] | 40 | tac $LOG | tr -d '\000' | awk ' |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 41 | BEGIN { off = 0; fail = 0; } |
| 42 | / org.apache.karaf.main.lock.SimpleFileLock lock/ { |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 43 | exit fail; |
| 44 | } |
| 45 | |
| 46 | / ERROR / { |
Thomas Vachuska | 2ec5aa9 | 2016-08-31 13:30:31 -0700 | [diff] [blame^] | 47 | print \$0; |
| 48 | exc = 0; |
| 49 | fail = 1; |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 50 | } |
| 51 | / WARN / { |
Thomas Vachuska | 2ec5aa9 | 2016-08-31 13:30:31 -0700 | [diff] [blame^] | 52 | if (exc) { |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 53 | print \$0; |
| 54 | exc = 0; |
| 55 | } |
| 56 | } |
Thomas Vachuska | 2ec5aa9 | 2016-08-31 13:30:31 -0700 | [diff] [blame^] | 57 | / INFO / { |
| 58 | exc = 0; |
| 59 | } |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 60 | |
| 61 | /^[a-zA-Z0-9.]*(Exception|Error)/ { |
Thomas Vachuska | 2ec5aa9 | 2016-08-31 13:30:31 -0700 | [diff] [blame^] | 62 | print \$0; |
| 63 | exc = 1; |
| 64 | fail = 1; |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 65 | } |
| 66 | |
Thomas Vachuska | 2ec5aa9 | 2016-08-31 13:30:31 -0700 | [diff] [blame^] | 67 | /( at|Caused by:) / { |
| 68 | print \$0; |
Thomas Vachuska | 77a9a44 | 2015-05-19 17:35:52 -0700 | [diff] [blame] | 69 | } |
| 70 | END { exit fail; } |
| 71 | ' > $aux |
| 72 | status=\$? |
| 73 | tac $aux && rm $aux |
| 74 | exit \$status |
| 75 | " |
| 76 | fi |