mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-31 21:13:00 +02:00
test: Add nsenter helper script to enter Infamy namespaces
When a test starts an isolated MACVLAN namespace, it is often useful
to interactively join that namespace to investigate issues. To do
this, we need to find the "sleeper" process backing the namespace, and
`nsenter` into that process's network namespace.
Add a script that automates this process.
To start a shell in the netns of the MACVLAN stacked on top of d1b,
start a shell in the test environment:
infix/test $ ./shell
13:37:00 infamy0:test # ./nsenter d1b
13:37:01 infamy0(netns:d1b):test #
This commit is contained in:
@@ -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
|
||||
#
|
||||
|
||||
@@ -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)" \
|
||||
|
||||
Executable
+24
@@ -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
|
||||
Reference in New Issue
Block a user