xref: /openbmc/obmc-console/test/test-console-socket-read (revision e11cca1ea5d93daac50850aa19ed2dd15d4887bd)
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