1*e11cca1eSAlexander Hansen#!/usr/bin/sh 2*e11cca1eSAlexander Hansen 3*e11cca1eSAlexander Hansenset -eux 4*e11cca1eSAlexander Hansen 5*e11cca1eSAlexander HansenSOCAT="$1" 6*e11cca1eSAlexander HansenSERVER="$2" 7*e11cca1eSAlexander Hansen 8*e11cca1eSAlexander Hansen# Meet DBus bus and path name constraints, append own PID for parallel runs 9*e11cca1eSAlexander HansenTEST_NAME="$(basename "$0" | tr '-' '_')"_${$} 10*e11cca1eSAlexander HansenTEST_DIR="$(mktemp --tmpdir --directory "${TEST_NAME}.XXXXXX")" 11*e11cca1eSAlexander Hansen 12*e11cca1eSAlexander HansenPTYS_PID="" 13*e11cca1eSAlexander HansenSUN_PID="" 14*e11cca1eSAlexander HansenSERVER_PID="" 15*e11cca1eSAlexander Hansen 16*e11cca1eSAlexander Hansencd "$TEST_DIR" 17*e11cca1eSAlexander Hansen 18*e11cca1eSAlexander Hansencleanup() 19*e11cca1eSAlexander Hansen{ 20*e11cca1eSAlexander Hansen [ -z "$SUN_PID" ] || kill "$SUN_PID" 21*e11cca1eSAlexander Hansen [ -z "$SERVER_PID" ] || kill "$SERVER_PID" 22*e11cca1eSAlexander Hansen [ -z "$PTYS_PID" ] || kill "$PTYS_PID" 23*e11cca1eSAlexander Hansen wait 24*e11cca1eSAlexander Hansen cd - 25*e11cca1eSAlexander Hansen rm -rf "$TEST_DIR" 26*e11cca1eSAlexander Hansen} 27*e11cca1eSAlexander Hansen 28*e11cca1eSAlexander Hansentrap cleanup EXIT 29*e11cca1eSAlexander Hansen 30*e11cca1eSAlexander HansenTEST_CONF="${TEST_NAME}.conf" 31*e11cca1eSAlexander HansenTEST_LOG="${TEST_NAME}.log" 32*e11cca1eSAlexander Hansen 33*e11cca1eSAlexander Hansencat <<EOF > "$TEST_CONF" 34*e11cca1eSAlexander Hansenactive-console = $TEST_NAME 35*e11cca1eSAlexander Hansen[$TEST_NAME] 36*e11cca1eSAlexander Hansenconsole-id = $TEST_NAME 37*e11cca1eSAlexander Hansenlogfile = $TEST_LOG 38*e11cca1eSAlexander HansenEOF 39*e11cca1eSAlexander Hansen 40*e11cca1eSAlexander Hansen"$SOCAT" PTY,raw,echo=0,link=remote PTY,raw,echo=0,wait-slave,link=local & 41*e11cca1eSAlexander HansenPTYS_PID="$!" 42*e11cca1eSAlexander Hansenwhile ! [ -e remote ] || ! [ -e local ]; do sleep 1; done 43*e11cca1eSAlexander Hansen 44*e11cca1eSAlexander Hansen"$SERVER" --config "$TEST_CONF" "$(realpath local)" & 45*e11cca1eSAlexander HansenSERVER_PID="$!" 46*e11cca1eSAlexander Hansenwhile ! busctl status --user xyz.openbmc_project.Console."${TEST_NAME}"; do sleep 1; done 47*e11cca1eSAlexander Hansen 48*e11cca1eSAlexander Hansen"$SOCAT" -u "ABSTRACT:obmc-console.${TEST_NAME}" EXEC:'grep -m1 -qF socket-read' & 49*e11cca1eSAlexander HansenSUN_PID="$!" 50*e11cca1eSAlexander Hansen 51*e11cca1eSAlexander Hansensleep 1 52*e11cca1eSAlexander Hansen 53*e11cca1eSAlexander Hansenecho "socket-read" > remote 54*e11cca1eSAlexander Hansen 55*e11cca1eSAlexander Hansensleep 1 56*e11cca1eSAlexander Hansen 57*e11cca1eSAlexander Hansenkill -0 "$SUN_PID" && exit 1 58*e11cca1eSAlexander HansenSUN_PID="" 59