From c2eadfa8fa93acadeba12b77968fd193e7e7d5c7 Mon Sep 17 00:00:00 2001 From: Guillaume Pasero <guillaume.pasero@c-s.fr> Date: Wed, 8 Mar 2017 11:43:15 +0100 Subject: [PATCH] ADD: selftest script for linux packages (WIP) --- .../Packaging/Files/selftester_linux.sh | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100755 SuperBuild/Packaging/Files/selftester_linux.sh diff --git a/SuperBuild/Packaging/Files/selftester_linux.sh b/SuperBuild/Packaging/Files/selftester_linux.sh new file mode 100755 index 0000000000..7659b45981 --- /dev/null +++ b/SuperBuild/Packaging/Files/selftester_linux.sh @@ -0,0 +1,107 @@ +#!/bin/sh + +# Setup test environment +DIRNAME_0=$(dirname "$0") +DIRNAME=$(readlink -f "$DIRNAME_0/..") +cd "$DIRNAME" + +. ./otbenv.profile + +rm -f selftest_report.log +touch selftest_report.log +REF_SIZE=0 +REF_SIZE=$(wc -l selftest_report.log | cut -d ' ' -f 1) + +# Check 1 : check binaries +OTB_LIBRARIES="$(ls lib/lib*.so*) $(ls lib/otb/applications/otbapp_*.so) lib/python/_otbApplication.so" +OTB_EXE="bin/mapla bin/monteverdi bin/otbApplicationLauncherQt bin/otbApplicationLauncherCommandLine" +for name in $OTB_LIBRARIES $OTB_EXE ; do + F_OUTPUT=$(file $name) + if [ -n "$(echo $F_OUTPUT | grep 'cannot open')" ]; then + echo "$F_OUTPUT" | tee -a selftest_report.log + elif [ -n "$(echo $F_OUTPUT | grep ': broken symbolic link')" ]; then + echo "$F_OUTPUT" | tee -a selftest_report.log + elif [ -n "$(echo $F_OUTPUT | grep -e ': ELF .*shared object' -e ': ELF .*executable')" ]; then + LDD_ERRORS=$(ldd $name | grep -e '=> not found' -e 'not a dynamic executable') + if [ -n "$LDD_ERRORS" ]; then + echo "ldd $name" | tee -a selftest_report.log + echo "$LDD_ERRORS" | tee -a selftest_report.log + fi + fi +done + +REPORT_SIZE=$(wc -l selftest_report.log | cut -d ' ' -f 1) +if [ $REPORT_SIZE -ne $REF_SIZE ]; then + echo "Check 1/3 : FAIL" + exit 1 +fi +echo "Check 1/3 : PASS" +REF_SIZE=$(wc -l selftest_report.log | cut -d ' ' -f 1) + +# Check 2 : OTB applications and Python wrapping +OTB_APP_COUNT=$(ls lib/otb/applications/otbapp_*.so | wc -w) +OTB_APPS=$(ls lib/otb/applications/otbapp_*.so | cut -d '_' -f 2 | cut -d '.' -f 1) +if [ $OTB_APP_COUNT -le 90 ]; then + echo "WARNING: Only $OTB_APP_COUNT applications found ! Expected at least 90" +fi +for app in $OTB_APPS; do + if [ ! -f "bin/otbcli_$app" ]; then + echo "ERROR: missing cli launcher for application $app" | tee -a selftest_report.log + else + CLI_OUTPUT=$(bin/otbcli_$app -help 2>&1) + CLI_FILTER=$(echo $CLI_OUTPUT | grep -E "^This is the $app application, version.* Parameters:( (MISSING )?-[0-9a-z]+ .*)+ Examples:.*otbcli_$app.*") + CLI_FILTER2=$(echo $CLI_FILTER | grep -v 'FATAL') + if [ -z "$CLI_FILTER2" ]; then + echo "ERROR: bin/otbcli_$app" | tee -a selftest_report.log + echo "$CLI_OUTPUT" | tee -a selftest_report.log + fi + fi + + if [ ! -f "bin/otbgui_$app" ]; then + echo "ERROR: missing gui launcher for application $app" | tee -a selftest_report.log + else + echo "" >tmp.log + bin/otbgui_$app 2>&1 >tmp.log & + GUI_PID=$! + sleep 1s + # Check process tree + CHILD_PROC=$(ps -o pid -o cmd --ppid $GUI_PID | grep -v 'PID *CMD' | grep "bin/otbgui $app") + if [ -n "$CHILD_PROC" ]; then + CHILD_PID=$(echo $CHILD_PROC | cut -d ' ' -f 1) + NEXT_CHILD_PROC=$(ps -o pid -o cmd --ppid $CHILD_PID | grep -v 'PID *CMD' | grep 'otbApplicationLauncherQt') + if [ -n "$NEXT_CHILD_PROC" ]; then + NEXT_CHILD_PID=$(echo $NEXT_CHILD_PROC | cut -d ' ' -f 1) + kill -9 $GUI_PID + kill -9 $CHILD_PID + kill -9 $NEXT_CHILD_PID + else + echo "ERROR: bin/otbgui_$app failed to launch" | tee -a selftest_report.log + cat tmp.log | tee -a selftest_report.log + fi + else + echo "ERROR: bin/otbgui_$app failed to launch" | tee -a selftest_report.log + cat tmp.log | tee -a selftest_report.log + fi + fi +done + +REPORT_SIZE=$(wc -l selftest_report.log | cut -d ' ' -f 1) +if [ $REPORT_SIZE -ne $REF_SIZE ]; then + echo "Check 2/3 : FAIL" +else + echo "Check 2/3 : PASS" +fi +REF_SIZE=$(wc -l selftest_report.log | cut -d ' ' -f 1) + +# Check 3 : OTB binaries monteverdi & mapla +# TODO + +REPORT_SIZE=$(wc -l selftest_report.log | cut -d ' ' -f 1) +if [ $REPORT_SIZE -ne $REF_SIZE ]; then + echo "Check 3/3 : FAIL" +else + echo "Check 3/3 : PASS" +fi + +# TODO : clean any background process + -- GitLab