automated: linux: ltp: add support for the new kirk runner

LTP has depricated their runltp runner to run tests.
The new one is called kirk
(https://github.com/linux-test-project/kirk.git) which replaces runltp.
For now runltp will be the default runner. If someone wants to use
kirk, it has to be pre-installed into the rootfs, and the yaml varialbe
RUNNER has to be set to 'kirk' or '/usr/local/bin/kirk'.

Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
diff --git a/automated/linux/ltp/ltp.sh b/automated/linux/ltp/ltp.sh
index b2f9cec..d1b03dc 100755
--- a/automated/linux/ltp/ltp.sh
+++ b/automated/linux/ltp/ltp.sh
@@ -30,6 +30,8 @@
 SHARD_NUMBER=1
 SHARD_INDEX=1
 
+RUNNER=""
+
 LTP_TMPDIR=/ltp-tmp
 
 LTP_INSTALL_PATH=/opt/ltp
@@ -46,6 +48,7 @@
                       [-v LTP_VERSION]
                       [-M Timeout_Multiplier]
                       [-R root_password]
+                      [-r new runner (kirk)]
                       [-u git url]
                       [-p build directory]
                       [-t build from tarfile ]
@@ -55,7 +58,7 @@
     exit 0
 }
 
-while getopts "M:T:S:b:d:g:e:i:s:v:R:u:p:t:c:n:" arg; do
+while getopts "M:T:S:b:d:g:e:i:s:v:R:r:u:p:t:c:n:" arg; do
    case "$arg" in
      T)
         TST_CMDFILES="${OPTARG}"
@@ -111,6 +114,7 @@
      # Slow machines need more timeout Default is 5min and multiply * MINUTES
      M) export LTP_TIMEOUT_MUL="${OPTARG}";;
      R) export PASSWD="${OPTARG}";;
+     r) export RUNNER="${OPTARG}";;
      u)
         if [[ "$OPTARG" != '' ]]; then
           TEST_GIT_URL="$OPTARG"
@@ -156,6 +160,11 @@
         | sed 's/PASS/pass/; s/FAIL/fail/; s/CONF/skip/'  >> "${RESULT_FILE}"
 }
 
+parse_ltp_json_results() {
+    jq -r '.results| .[]| "\(.test_fqn) \(.test.result)"'  "$1" \
+        | sed 's/brok/fail/; s/conf/skip/'  >> "${RESULT_FILE}"
+}
+
 # Run LTP test suite
 run_ltp() {
     # shellcheck disable=SC2164
@@ -172,14 +181,28 @@
     cat runtest/shardfile
     echo "===========End Tests to run ==============="
 
-    pipe0_status "./runltp -p -q -f shardfile \
+    if [ -n "${RUNNER}" ]; then
+        eval "${RUNNER}" --version
+        # shellcheck disable=SC2181
+        if [ $? -ne "0" ]; then
+          error_msg "${RUNNER} is not installed into the file system."
+        fi
+        pipe0_status "${RUNNER} --framework ltp --run-suite shardfile \
+                                -d ${LTP_TMPDIR} --env LTP_COLORIZE_OUTPUT=0 \
+                                --skip-file ${SKIPFILE_PATH} \
+                                --json-report /tmp/kirk-report.json \
+                                --verbose" "tee ${OUTPUT}/LTP_${LOG_FILE}.out"
+        parse_ltp_json_results "/tmp/kirk-report.json"
+    else
+        pipe0_status "./runltp -p -q -f shardfile \
                                  -l ${OUTPUT}/LTP_${LOG_FILE}.log \
                                  -C ${OUTPUT}/LTP_${LOG_FILE}.failed \
                                  -d ${LTP_TMPDIR} \
                                     ${SKIPFILE}" "tee ${OUTPUT}/LTP_${LOG_FILE}.out"
+        parse_ltp_output "${OUTPUT}/LTP_${LOG_FILE}.log"
+    fi
 #    check_return "runltp_${LOG_FILE}"
 
-    parse_ltp_output "${OUTPUT}/LTP_${LOG_FILE}.log"
     # Cleanup
     # don't fail the whole test job if rm fails
     rm -rf "${LTP_TMPDIR}" || true
diff --git a/automated/linux/ltp/ltp.yaml b/automated/linux/ltp/ltp.yaml
index fc5a30b..e6c1b2a 100644
--- a/automated/linux/ltp/ltp.yaml
+++ b/automated/linux/ltp/ltp.yaml
@@ -39,6 +39,11 @@
     # root's password. Needed by ltp/su01.
     ROOT_PASSWD: root
 
+    # New kirk runner (https://github.com/linux-test-project/kirk.git)
+    # Needs to be installed onto the rootfs.
+    # Set RUNNER to full path to kik or to kirk if its in the PATH.
+    RUNNER: ""
+
     # If the following parameter is set, then the LTP suite is
     # cloned and used unconditionally. In particular, the version
     # of the suite is set to the commit pointed to by the
@@ -71,5 +76,5 @@
 run:
     steps:
         - cd ./automated/linux/ltp/
-        - ./ltp.sh -T "${TST_CMDFILES}" -s "${SKIP_INSTALL}" -v "${LTP_VERSION}" -M "${TIMEOUT_MULTIPLIER}" -R "${ROOT_PASSWD}" -b "${BOARD}" -d "${LTP_TMPDIR}" -g "${BRANCH}" -e "${ENVIRONMENT}" -i "${LTP_INSTALL_PATH}" -S "${SKIPFILE}" -p "${TEST_DIR}" -u "${TEST_GIT_URL}" -t "${BUILD_FROM_TAR}" -n "${SHARD_NUMBER}" -c "${SHARD_INDEX}"
+        - ./ltp.sh -T "${TST_CMDFILES}" -s "${SKIP_INSTALL}" -v "${LTP_VERSION}" -M "${TIMEOUT_MULTIPLIER}" -R "${ROOT_PASSWD}" -r "${RUNNER}" -b "${BOARD}" -d "${LTP_TMPDIR}" -g "${BRANCH}" -e "${ENVIRONMENT}" -i "${LTP_INSTALL_PATH}" -S "${SKIPFILE}" -p "${TEST_DIR}" -u "${TEST_GIT_URL}" -t "${BUILD_FROM_TAR}" -n "${SHARD_NUMBER}" -c "${SHARD_INDEX}"
         - ../../utils/send-to-lava.sh ./output/result.txt