test: In demos, use pgrep instead of pstree to find namespace PID

Parsing pstree's output is somewhat unreliable: there might be
multiple pasta instances running on the same host, and depending on
the overall output width pstree might truncate some branches.

Ask pasta to save its PID to file, and use that as parameter for
pgrep to find the PID of the interactive shell whose user and network
namespaces we want to join.

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2022-07-21 13:53:21 +02:00
parent 95f7b4ec3f
commit a4778b3b81
2 changed files with 6 additions and 8 deletions

View file

@ -70,7 +70,7 @@ say 'pasta' demo above.
sleep 3 sleep 3
passt cd __TEMPDIR__/passt passt cd __TEMPDIR__/passt
passtb ./pasta passtb ./pasta -P /tmp/pasta.pid
sleep 3 sleep 3
passt /sbin/dhclient -4 --no-pid passt /sbin/dhclient -4 --no-pid
sleep 2 sleep 2
@ -83,8 +83,7 @@ say Now let's run 'passt' in the new namespace, and
nl nl
say enter this namespace from the guest terminal too. say enter this namespace from the guest terminal too.
sleep 3 sleep 3
guest pstree -p | grep pasta gout TARGET_PID pgrep -P $(cat /tmp/pasta.pid)
gout TARGET_PID pstree -p | grep pasta | sed -n 's/.*(\([0-9].*\))$/\1/p'
sleep 1 sleep 1
passtb ./passt -f -t 5201,5203 passtb ./passt -f -t 5201,5203

View file

@ -48,7 +48,7 @@ nl
say without PID, it will create a namespace. say without PID, it will create a namespace.
sleep 3 sleep 3
passt cd __TEMPDIR__/passt passt cd __TEMPDIR__/passt
passtb ./pasta passtb ./pasta -P /tmp/pasta.pid
sleep 3 sleep 3
nl nl
@ -57,8 +57,7 @@ say For convenience, let's enter this namespace
nl nl
say from another terminal. say from another terminal.
sleep 3 sleep 3
ns pstree -p | grep pasta nsout TARGET_PID pgrep -P $(cat /tmp/pasta.pid)
nsout TARGET_PID pstree -p | grep pasta | sed -n 's/.*(\([0-9].*\))$/\1/p'
sleep 1 sleep 1
ns nsenter -t __TARGET_PID__ -U -n --preserve-credentials ns nsenter -t __TARGET_PID__ -U -n --preserve-credentials
@ -171,10 +170,10 @@ passt exit
passt make clean passt make clean
passt CFLAGS="-g" make passt CFLAGS="-g" make
sleep 2 sleep 2
passtb perf record -g ./pasta passtb perf record -g ./pasta -P /tmp/pasta.pid
sleep 2 sleep 2
nsout TARGET_PID pstree -p | grep pasta | sed -n 's/.*(\([0-9].*\))$/\1/p' nsout TARGET_PID pgrep -P $(cat /tmp/pasta.pid)
sleep 1 sleep 1
ns nsenter -t __TARGET_PID__ -U -n --preserve-credentials ns nsenter -t __TARGET_PID__ -U -n --preserve-credentials
sleep 5 sleep 5