#!/usr/bin/env bash

######################################################################
# 8) show colored output of results
######################################################################

set -eu

# read our defined variables
source /var/tmp/env.txt
cd $RESPATH

# helper function for showing some content with headline
function showfile() {
  content=$(dd if=$1 bs=1024 count=400k 2>/dev/null)
  if [ -z "$2" ]; then
    group1=""
    group2=""
  else
    SIZE=$(stat --printf="%s" "$file")
    SIZE=$((SIZE/1024))
    group1="##[group]$2 ($SIZE KiB)"
    group2="##[endgroup]"
  fi
cat <<EOF > tmp$$
$group1
$content
$group2
EOF
  cat tmp$$
  rm -f tmp$$
}

function showfile_tail() {
  echo "##[group]$2 (final lines)"
  tail -n 80 $1
  echo "##[endgroup]"
}

# overview if available
if [ -f /tmp/summary.txt -a -s /tmp/summary.txt ]; then
  cat /tmp/summary.txt
  echo ""
fi

if [ -f /tmp/have_failed_tests -a -s /tmp/failed.txt ]; then
  echo "Debuginfo of failed tests:"
  cat /tmp/failed.txt
  echo ""
  cat /tmp/summary.txt | grep -v '^/'
  echo ""
fi

echo -e "\nFull logs for download:\n    $1\n"

for ((i=1; i<=VMs; i++)); do

  # Print Lustre build test results (the build is only done on vm2)
  if [ -f vm$i/lustre-exitcode.txt ] ; then
    rv=$(< vm$i/lustre-exitcode.txt)
    if [ $rv = 0 ]; then
      vm="[92mvm$i[0m"
    else
      vm="[1;91mvm$i[0m"
      touch /tmp/have_failed_tests
    fi
    file="vm$i/lustre.txt"
    test -s "$file" && showfile_tail "$file" "$vm: Lustre build"
  fi

  if [ -f vm$i/builtin-exitcode.txt ] ; then
    rv=$(< vm$i/builtin-exitcode.txt)
    if [ $rv = 0 ]; then
      vm="[92mvm$i[0m"
    else
      vm="[1;91mvm$i[0m"
      touch /tmp/have_failed_tests
    fi
    file="vm$i/builtin.txt"
    test -s "$file" && showfile_tail "$file" "$vm: Linux built-in build"
  fi

  rv=$(cat vm$i/tests-exitcode.txt)

  if [ $rv = 0 ]; then
    vm="[92mvm$i[0m"
  else
    vm="[1;91mvm$i[0m"
  fi

  file="vm$i/dmesg-prerun.txt"
  test -s "$file" && showfile "$file" "$vm: dmesg kernel"

  file="/tmp/vm${i}log.txt"
  test -s "$file" && showfile "$file" "$vm: test results"

  file="vm$i/console.txt"
  test -s "$file" && showfile "$file" "$vm: serial console"

  file="/tmp/vm${i}dbg.txt"
  test -s "$file" && showfile "$file" "$vm: failure logfile"
done

test -f /tmp/have_failed_tests && exit 1
exit 0
