1*97e7e51eSAlexander Hansen#!/usr/bin/sh 2*97e7e51eSAlexander Hansen 3*97e7e51eSAlexander Hansenset -eux 4*97e7e51eSAlexander Hansen 5*97e7e51eSAlexander HansenSOCAT="$1" 6*97e7e51eSAlexander HansenSERVER="$2" 7*97e7e51eSAlexander Hansen 8*97e7e51eSAlexander Hansen# Meet DBus bus and path name constraints, append own PID for parallel runs 9*97e7e51eSAlexander HansenTEST_NAME="$(basename "$0" | tr '-' '_')"_${$} 10*97e7e51eSAlexander HansenTEST_DIR="$(mktemp --tmpdir --directory "${TEST_NAME}.XXXXXX")" 11*97e7e51eSAlexander HansenPTYS_PID="" 12*97e7e51eSAlexander HansenSERVER_PID="" 13*97e7e51eSAlexander HansenSUN_PID="" 14*97e7e51eSAlexander Hansen 15*97e7e51eSAlexander Hansencd "$TEST_DIR" 16*97e7e51eSAlexander Hansen 17*97e7e51eSAlexander Hansencleanup() 18*97e7e51eSAlexander Hansen{ 19*97e7e51eSAlexander Hansen [ -z "$SUN_PID" ] || kill "$SUN_PID" 20*97e7e51eSAlexander Hansen [ -z "$SERVER_PID" ] || kill "$SERVER_PID" 21*97e7e51eSAlexander Hansen [ -z "$PTYS_PID" ] || kill "$PTYS_PID" 22*97e7e51eSAlexander Hansen wait 23*97e7e51eSAlexander Hansen cd - 24*97e7e51eSAlexander Hansen rm -rf "$TEST_DIR" 25*97e7e51eSAlexander Hansen} 26*97e7e51eSAlexander Hansen 27*97e7e51eSAlexander Hansentrap cleanup EXIT 28*97e7e51eSAlexander Hansen 29*97e7e51eSAlexander HansenTEST_CONF="${TEST_NAME}.conf" 30*97e7e51eSAlexander Hansen 31*97e7e51eSAlexander HansenTEST_A_NAME="${TEST_NAME}_a" 32*97e7e51eSAlexander HansenTEST_A_LOG="${TEST_A_NAME}.log" 33*97e7e51eSAlexander Hansen 34*97e7e51eSAlexander HansenTEST_B_NAME="${TEST_NAME}_b" 35*97e7e51eSAlexander HansenTEST_B_LOG="${TEST_B_NAME}.log" 36*97e7e51eSAlexander Hansen 37*97e7e51eSAlexander Hansencat <<EOF > "$TEST_CONF" 38*97e7e51eSAlexander Hansenactive-console = $TEST_A_NAME 39*97e7e51eSAlexander Hansen[$TEST_A_NAME] 40*97e7e51eSAlexander Hansenlogfile = $TEST_A_LOG 41*97e7e51eSAlexander Hansenconsole-id = $TEST_A_NAME 42*97e7e51eSAlexander Hansen[$TEST_B_NAME] 43*97e7e51eSAlexander Hansenlogfile = $TEST_B_LOG 44*97e7e51eSAlexander Hansenconsole-id = $TEST_B_NAME 45*97e7e51eSAlexander HansenEOF 46*97e7e51eSAlexander Hansen 47*97e7e51eSAlexander Hansen"$SOCAT" -u PTY,raw,echo=0,link=remote PTY,raw,echo=0,wait-slave,link=local & 48*97e7e51eSAlexander HansenPTYS_PID="$!" 49*97e7e51eSAlexander Hansenwhile ! [ -e remote ] || ! [ -e local ]; do sleep 1; done 50*97e7e51eSAlexander Hansen 51*97e7e51eSAlexander Hansen"$SERVER" --config "$TEST_CONF" "$(realpath local)" & 52*97e7e51eSAlexander HansenSERVER_PID="$!" 53*97e7e51eSAlexander Hansenwhile ! busctl status --user xyz.openbmc_project.Console."${TEST_A_NAME}"; do sleep 1; done 54*97e7e51eSAlexander Hansen 55*97e7e51eSAlexander Hansenecho log-for-console-a > remote 56*97e7e51eSAlexander Hansen 57*97e7e51eSAlexander Hansensleep 1 58*97e7e51eSAlexander Hansen 59*97e7e51eSAlexander Hansengrep -LF log-for-console-a "$TEST_A_LOG" 60*97e7e51eSAlexander Hansen! grep -F log-for-console-a "$TEST_B_LOG" || exit 1 61*97e7e51eSAlexander Hansen 62*97e7e51eSAlexander Hansen# change the active console 63*97e7e51eSAlexander Hansensocat -u "ABSTRACT:obmc-console.${TEST_B_NAME}" SYSTEM:'cat > /dev/null' & 64*97e7e51eSAlexander HansenSUN_PID="$!" 65*97e7e51eSAlexander Hansen 66*97e7e51eSAlexander Hansensleep 1 67*97e7e51eSAlexander Hansen 68*97e7e51eSAlexander Hansenecho log-for-console-b > remote 69*97e7e51eSAlexander Hansen 70*97e7e51eSAlexander Hansensleep 1 71*97e7e51eSAlexander Hansen 72*97e7e51eSAlexander Hansengrep -LF log-for-console-b "$TEST_B_LOG" 73*97e7e51eSAlexander Hansen! grep -F log-for-console-b "$TEST_A_LOG" || exit 1 74