diff --git a/test/.env b/test/.env index 4318443d..2c0fbef5 100644 --- a/test/.env +++ b/test/.env @@ -9,6 +9,11 @@ logdir=$(readlink -f "$testdir/.log") envdir="$HOME/.infix-test-venv" qeneth="$testdir/qeneth/qeneth" +build_ps1() +{ + echo "\e[1m\$(date \"+%H:%M:%S\") \h$1\e[0m:\W # " +} + # # Figure out available container runner # diff --git a/test/env b/test/env index 06268372..48cae343 100755 --- a/test/env +++ b/test/env @@ -160,7 +160,7 @@ if [ "$containerize" ]; then --env PYTHONHASHSEED=${PYTHONHASHSEED:-$(shuf -i 0-$(((1 << 32) - 1)) -n 1)} \ --env VIRTUAL_ENV_DISABLE_PROMPT=yes \ --env PROMPT_DIRTRIM="$ixdir" \ - --env PS1='\e[1m$(date "+%H:%M:%S") \h\e[0m:\W # ' \ + --env PS1="$(build_ps1)" \ --expose 9001-9010 --publish-all \ --hostname "$(name)" \ --name "$(name)" \ diff --git a/test/nsenter b/test/nsenter new file mode 100755 index 00000000..6557a5c5 --- /dev/null +++ b/test/nsenter @@ -0,0 +1,24 @@ +#!/bin/sh + +set -e + +testdir=$(dirname "$(readlink -f "$0")") +. "$testdir/.env" + +lower=$1 +shift +[ $# -gt 0 ] || set sh + +for pid in $(pgrep -fx "sleep infinity"); do + ifidxs=$(nsenter -t $pid -U -n ip -j link show | \ + jq '.[] | select(has("link_netnsid")) | .link_index') + for ifidx in $ifidxs; do + ifname=$(ip -j link show | jq -r ".[] | select(.ifindex == $ifidx) | .ifname") + if [ "$ifname" = "$lower" ]; then + exec nsenter -t $pid -U -n env PS1="$(build_ps1 "(netns:$ifname)")" "$@" + fi + done +done + +echo Found no namespace with interface stacked on $lower >&2 +exit 1