1*29a8f989SAndrew Jeffery#!/usr/bin/sh
2*29a8f989SAndrew Jeffery
3*29a8f989SAndrew Jefferyset -eux
4*29a8f989SAndrew Jeffery
5*29a8f989SAndrew JefferySOCAT="$1"
6*29a8f989SAndrew JefferySERVER="$2"
7*29a8f989SAndrew Jeffery
8*29a8f989SAndrew Jeffery# Meet DBus bus and path name constraints, append own PID for parallel runs
9*29a8f989SAndrew JefferyTEST_NAME="$(basename "$0" | tr '-' '_')"_${$}
10*29a8f989SAndrew JefferyTEST_DIR="$(mktemp --tmpdir --directory "${TEST_NAME}.XXXXXX")"
11*29a8f989SAndrew JefferyPTYS_PID=""
12*29a8f989SAndrew JefferySERVER_PID=""
13*29a8f989SAndrew Jeffery
14*29a8f989SAndrew Jefferycd "$TEST_DIR"
15*29a8f989SAndrew Jeffery
16*29a8f989SAndrew Jefferycleanup()
17*29a8f989SAndrew Jeffery{
18*29a8f989SAndrew Jeffery  [ -z "$SERVER_PID" ] || kill -s INT "$SERVER_PID"
19*29a8f989SAndrew Jeffery  [ -z "$PTYS_PID" ] || kill "$PTYS_PID"
20*29a8f989SAndrew Jeffery  wait
21*29a8f989SAndrew Jeffery  cd -
22*29a8f989SAndrew Jeffery  rm -rf "$TEST_DIR"
23*29a8f989SAndrew Jeffery}
24*29a8f989SAndrew Jeffery
25*29a8f989SAndrew Jefferytrap cleanup EXIT
26*29a8f989SAndrew Jeffery
27*29a8f989SAndrew JefferyTEST_CONF="${TEST_NAME}.conf"
28*29a8f989SAndrew JefferyTEST_LOG="${TEST_NAME}.log"
29*29a8f989SAndrew Jeffery
30*29a8f989SAndrew Jefferycat <<EOF > "$TEST_CONF"
31*29a8f989SAndrew Jefferyactive-console = $TEST_NAME
32*29a8f989SAndrew Jeffery[$TEST_NAME]
33*29a8f989SAndrew Jefferylogfile = $TEST_LOG
34*29a8f989SAndrew Jefferyconsole-id = $TEST_NAME
35*29a8f989SAndrew JefferyEOF
36*29a8f989SAndrew Jeffery
37*29a8f989SAndrew Jeffery"$SOCAT" -u PTY,raw,echo=0,link=remote PTY,raw,echo=0,wait-slave,link=local &
38*29a8f989SAndrew JefferyPTYS_PID="$!"
39*29a8f989SAndrew Jefferywhile ! [ -e remote ] || ! [ -e local ]; do sleep 1; done
40*29a8f989SAndrew Jeffery
41*29a8f989SAndrew Jeffery"$SERVER" --config "$TEST_CONF" "$(realpath local)" &
42*29a8f989SAndrew JefferySERVER_PID="$!"
43*29a8f989SAndrew Jefferywhile ! busctl status --user xyz.openbmc_project.Console."${TEST_NAME}"; do sleep 1; done
44*29a8f989SAndrew Jeffery
45*29a8f989SAndrew Jefferyecho console-should-log-to-file > remote
46*29a8f989SAndrew Jefferysleep 1
47*29a8f989SAndrew Jefferygrep -LF console-should-log-to-file "$TEST_LOG"
48