#!/bin/sh
# This script is supposed to check lyrionmusiserver a little bit. At least each page and
# each link is tried.
#
# Inspired by the cacti version :)

set -euo pipefail

SCAN_LOG=/var/log/squeezeboxserver/scanner.log
SERV_LOG=/var/log/squeezeboxserver/server.log
SERV_PREF=/var/lib/squeezeboxserver/prefs/server.prefs

save_log_files() {
    echo "Copying /var/log/squeezeboxserver/*.log to artifacts"
    cp $SCAN_LOG $SERV_LOG ${AUTOPKGTEST_ARTIFACTS}
}

# To make sure that the autopkgtest/CI sites store the information
if [ -n "${AUTOPKGTEST_ARTIFACTS}" ] ; then
    trap save_log_files 0
fi

# We don't want to see the intial page, let's make sure we're passed that
# And let's make sure there's some media
sudo tee $SERV_PREF > /dev/null <<EOF
mediadirs:
- /usr/share/squeezeboxserver/HTML/EN/html
playlistdir: /usr/share/squeezeboxserver/HTML/EN/html
wizardDone: 1
EOF

sudo chown _lyrionmusicserver: $SERV_PREF

sudo systemctl start lyrionmusicserver

sleep 5
grep -q "Starting Lyrion Music Server" $SERV_LOG

# Loop over all the available links
wget --reject-regex=".*(http://localhost:9000/stream\.mp3|\.mp3$|/status_header.html|/anyurl\?|/html/images/|index.html\?index=.*&player=&sess=).*" --read-timeout=10 --tries=1 --recursive --level=3 --execute=robots=off http://127.0.0.1:9000/ || res=$?

# Finally check the log for unexpected items
FILTERED_LOG="$(grep -v \
     -e " Starting Lyrion Music Server " \
     -e " Server done init: http:" \
     -e " Warning: Schema updated or no media found in the database, initiating scan.$" \
     -e " Slim::Utils::Misc::msg .[0-9]*. Warning: \[" \
     -e " Slim::Web::Template::SkinManager::_fillTemplate .[0-9]*. Error: file error - : not found$" \
     $SERV_LOG)" || true

if [ -n "${FILTERED_LOG}" ] ; then
    echo "Unexpected output in logs:"
    echo "${FILTERED_LOG}"
else
    echo "No unexpected output in /var/log/squuezeboxserver/"
fi

echo The wget command exited with status ${res:-0}
if [ -n "${FILTERED_LOG}" ] ; then
    return 1976
else
    #return ${res:-0}
fi
