2021-09-27 15:10:35 +02:00
|
|
|
#!/bin/sh
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
#
|
|
|
|
# PASST - Plug A Simple Socket Transport
|
|
|
|
# for qemu/UNIX domain socket mode
|
|
|
|
#
|
|
|
|
# PASTA - Pack A Subtle Tap Abstraction
|
|
|
|
# for network namespace/tap device mode
|
|
|
|
#
|
|
|
|
# test/lib/setup - Set up and tear down passt and pasta environments
|
|
|
|
#
|
|
|
|
# Copyright (c) 2021 Red Hat GmbH
|
|
|
|
# Author: Stefano Brivio <sbrivio@redhat.com>
|
|
|
|
|
2022-07-06 09:29:00 +02:00
|
|
|
INITRAMFS="${BASEPATH}/mbuto.img"
|
2021-10-21 04:54:05 +02:00
|
|
|
VCPUS="$( [ $(nproc) -ge 8 ] && echo 6 || echo $(( $(nproc) / 2 + 1 )) )"
|
2021-09-27 15:10:35 +02:00
|
|
|
__mem_kib="$(sed -n 's/MemTotal:[ ]*\([0-9]*\) kB/\1/p' /proc/meminfo)"
|
2021-10-21 04:54:05 +02:00
|
|
|
VMEM="$((${__mem_kib} / 1024 / 4))"
|
2022-09-12 12:56:21 +02:00
|
|
|
NSHOLDER="${BASEPATH}/nsholder"
|
2021-09-27 15:10:35 +02:00
|
|
|
|
|
|
|
# setup_build() - Set up pane layout for build tests
|
|
|
|
setup_build() {
|
2022-09-12 12:56:18 +02:00
|
|
|
context_setup_host host
|
|
|
|
|
2021-09-27 15:10:35 +02:00
|
|
|
layout_host
|
|
|
|
}
|
|
|
|
|
2022-08-18 08:13:53 +02:00
|
|
|
# setup_distro() - Set up pane layout for distro tests
|
|
|
|
setup_distro() {
|
|
|
|
layout_host
|
|
|
|
}
|
|
|
|
|
2022-07-06 09:29:00 +02:00
|
|
|
# setup_passt() - Start qemu and passt
|
2021-09-27 15:10:35 +02:00
|
|
|
setup_passt() {
|
2022-09-12 12:56:18 +02:00
|
|
|
context_setup_host host
|
2022-09-12 12:56:19 +02:00
|
|
|
context_setup_host passt
|
2022-09-12 12:56:22 +02:00
|
|
|
context_setup_host qemu
|
2022-09-12 12:56:18 +02:00
|
|
|
|
2021-09-27 15:10:35 +02:00
|
|
|
layout_passt
|
|
|
|
|
|
|
|
# Ports:
|
|
|
|
#
|
|
|
|
# guest | host
|
|
|
|
# --------------|---------------------
|
|
|
|
# 10001 as server | forwarded to guest
|
|
|
|
# 10003 | as server
|
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/passt.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
|
|
|
|
2022-09-12 12:56:19 +02:00
|
|
|
context_run passt "make clean"
|
|
|
|
context_run passt "make valgrind"
|
|
|
|
context_run_bg passt "valgrind --max-stackframe=$((4 * 1024 * 1024)) --trace-children=yes --vgdb=no --error-exitcode=1 --suppressions=test/valgrind.supp ./passt ${__opts} -f -t 10001 -u 10001 -P passt.pid"
|
2022-03-15 20:16:13 +01:00
|
|
|
sleep 5
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:22 +02:00
|
|
|
GUEST_CID=94557
|
|
|
|
context_run_bg qemu './qrap 5 qemu-system-$(uname -m)' \
|
2022-07-06 09:28:58 +02:00
|
|
|
' -machine accel=kvm' \
|
|
|
|
' -m '${VMEM}' -cpu host -smp '${VCPUS} \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -kernel ' "/boot/vmlinuz-$(uname -r)" \
|
2022-07-06 09:29:00 +02:00
|
|
|
' -initrd '${INITRAMFS}' -nographic -serial stdio' \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -nodefaults' \
|
|
|
|
' -append "console=ttyS0 mitigations=off apparmor=0 ' \
|
|
|
|
'virtio-net.napi_tx=1"' \
|
|
|
|
" -device virtio-net-pci,netdev=hostnet0,x-txburst=16384" \
|
2022-08-18 08:13:58 +02:00
|
|
|
" -netdev socket,fd=5,id=hostnet0" \
|
2022-09-12 12:56:22 +02:00
|
|
|
" -pidfile passt_qemu.pid" \
|
|
|
|
" -device vhost-vsock-pci,guest-cid=$GUEST_CID"
|
|
|
|
|
|
|
|
context_setup_guest guest $GUEST_CID
|
2021-09-27 15:10:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# setup_pasta() - Create a network and user namespace, connect pasta to it
|
|
|
|
setup_pasta() {
|
2022-09-12 12:56:18 +02:00
|
|
|
context_setup_host host
|
2022-09-12 12:56:19 +02:00
|
|
|
context_setup_host passt
|
2022-09-12 12:56:21 +02:00
|
|
|
context_setup_host unshare
|
2022-09-12 12:56:18 +02:00
|
|
|
|
2021-09-27 15:10:35 +02:00
|
|
|
layout_pasta
|
|
|
|
|
2022-09-12 12:56:21 +02:00
|
|
|
context_run_bg unshare "unshare -rUnpf ${NSHOLDER} ns.hold hold"
|
|
|
|
__target_pid=$(${NSHOLDER} ns.hold pid)
|
2022-03-02 05:00:21 +01:00
|
|
|
|
2022-09-12 12:56:21 +02:00
|
|
|
context_setup_nsenter ns -U -n -p --preserve-credentials -t ${__target_pid}
|
2021-09-27 15:10:35 +02:00
|
|
|
|
|
|
|
# Ports:
|
|
|
|
#
|
|
|
|
# ns | host
|
|
|
|
# ------------------|---------------------
|
|
|
|
# 10002 as server | spliced to ns
|
|
|
|
# 10003 spliced to init | as server
|
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/pasta.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:19 +02:00
|
|
|
context_run_bg passt "./pasta ${__opts} -f -t 10002 -T 10003 -u 10002 -U 10003 -P passt.pid ${__target_pid}"
|
2021-09-27 15:10:35 +02:00
|
|
|
sleep 1
|
|
|
|
}
|
|
|
|
|
|
|
|
# setup_passt_in_ns() - Set up namespace (with pasta), run qemu and passt into it
|
|
|
|
setup_passt_in_ns() {
|
2022-09-12 12:56:18 +02:00
|
|
|
context_setup_host host
|
2022-09-12 12:56:24 +02:00
|
|
|
context_setup_host pasta
|
2022-09-12 12:56:18 +02:00
|
|
|
|
2021-09-27 15:10:35 +02:00
|
|
|
layout_passt_in_pasta
|
|
|
|
|
|
|
|
# Ports:
|
|
|
|
#
|
|
|
|
# guest | ns | host
|
|
|
|
# -------------|--------------------|-----------------
|
|
|
|
# 10001 as server | forwarded to guest | spliced to ns
|
|
|
|
# 10002 | as server | spliced to ns
|
|
|
|
# 10003 | spliced to init | as server
|
|
|
|
# 10011 as server | forwarded to guest | spliced to ns
|
|
|
|
# 10012 | as server | spliced to ns
|
|
|
|
# 10013 | spliced to init | as server
|
2021-10-21 04:54:05 +02:00
|
|
|
#
|
|
|
|
# 10021 as server | forwarded to guest |
|
|
|
|
# 10031 as server | forwarded to guest |
|
2021-09-27 15:10:35 +02:00
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/pasta_with_passt.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:24 +02:00
|
|
|
context_run_bg pasta "./pasta ${__opts} -t 10001,10002,10011,10012 -T 10003,10013 -u 10001,10002,10011,10012 -U 10003,10013 -P pasta.pid ${NSHOLDER} ns.hold hold"
|
2021-09-27 15:10:35 +02:00
|
|
|
sleep 1
|
2022-09-12 12:56:24 +02:00
|
|
|
__ns_pid=$(${NSHOLDER} ns.hold pid)
|
|
|
|
|
|
|
|
context_setup_nsenter qemu "-t ${__ns_pid} -U -n -p --preserve-credentials"
|
|
|
|
context_setup_nsenter ns "-t ${__ns_pid} -U -n -p --preserve-credentials"
|
|
|
|
context_setup_nsenter passt "-t ${__ns_pid} -U -n -p --preserve-credentials"
|
|
|
|
|
|
|
|
__ifname=$(context_run ns "ip -j link show | jq -rM '.[] | select(.link_type == \"ether\").ifname'")
|
|
|
|
context_run ns "/sbin/dhclient -4 --no-pid ${__ifname}"
|
2021-09-27 15:10:35 +02:00
|
|
|
sleep 2
|
2022-09-12 12:56:24 +02:00
|
|
|
context_run ns "/sbin/dhclient -6 --no-pid ${__ifname}"
|
2021-09-27 15:10:35 +02:00
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/passt_in_pasta.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-03-15 20:16:13 +01:00
|
|
|
if [ ${VALGRIND} -eq 1 ]; then
|
2022-09-12 12:56:24 +02:00
|
|
|
context_run passt "make clean"
|
|
|
|
context_run passt "make valgrind"
|
|
|
|
context_run_bg passt "valgrind --max-stackframe=$((4 * 1024 * 1024)) --trace-children=yes --vgdb=no --error-exitcode=1 --suppressions=test/valgrind.supp ./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,10011,10021,10031 -P passt.pid"
|
2022-03-15 20:16:13 +01:00
|
|
|
else
|
2022-09-12 12:56:24 +02:00
|
|
|
context_run passt "make clean"
|
|
|
|
context_run passt "make"
|
|
|
|
context_run_bg passt "./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,10011,10021,10031 -P passt.pid"
|
2022-03-15 20:16:13 +01:00
|
|
|
fi
|
|
|
|
sleep 5
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:24 +02:00
|
|
|
GUEST_CID=94557
|
|
|
|
context_run_bg qemu './qrap 5 qemu-system-$(uname -m)' \
|
2022-07-06 09:28:58 +02:00
|
|
|
' -machine accel=kvm' \
|
|
|
|
' -M accel=kvm:tcg' \
|
|
|
|
' -m '${VMEM}' -cpu host -smp '${VCPUS} \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -kernel ' "/boot/vmlinuz-$(uname -r)" \
|
2022-07-06 09:29:00 +02:00
|
|
|
' -initrd '${INITRAMFS}' -nographic -serial stdio' \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -nodefaults' \
|
|
|
|
' -append "console=ttyS0 mitigations=off apparmor=0 ' \
|
|
|
|
'virtio-net.napi_tx=1"' \
|
|
|
|
" -device virtio-net-pci,netdev=hostnet0,x-txburst=524288" \
|
2022-08-18 08:13:58 +02:00
|
|
|
" -netdev socket,fd=5,id=hostnet0" \
|
2022-09-12 12:56:24 +02:00
|
|
|
' -pidfile passt_in_ns_qemu.pid' \
|
|
|
|
" -device vhost-vsock-pci,guest-cid=$GUEST_CID"
|
|
|
|
|
|
|
|
context_setup_guest guest $GUEST_CID
|
2021-09-27 15:10:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# setup_two_guests() - Set up two namespace, run qemu and passt in both of them
|
|
|
|
setup_two_guests() {
|
2022-09-12 12:56:18 +02:00
|
|
|
context_setup_host host
|
2022-09-12 12:56:23 +02:00
|
|
|
context_setup_host pasta_1
|
|
|
|
context_setup_host pasta_2
|
2022-09-12 12:56:18 +02:00
|
|
|
|
2021-09-27 15:10:35 +02:00
|
|
|
layout_two_guests
|
|
|
|
|
|
|
|
# Ports:
|
|
|
|
#
|
|
|
|
# guest #1 | guest #2 | ns #1 | ns #2 | host
|
|
|
|
# --------- |-----------|-----------|------------|------------
|
|
|
|
# 10001 as server | | to guest | to init | to ns #1
|
|
|
|
# 10002 | | as server | | to ns #1
|
|
|
|
# 10003 | | to init | to init | as server
|
|
|
|
# 10004 | as server | to init | to guest | to ns #2
|
|
|
|
# 10005 | | | as server | to ns #2
|
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/pasta_1.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
2022-09-12 12:56:23 +02:00
|
|
|
context_run_bg pasta_1 "./pasta ${__opts} -P pasta_1.pid -t 10001,10002 -T 10003,10004 -u 10001,10002 -U 10003,10004 ${NSHOLDER} ns1.hold hold"
|
|
|
|
__ns1_pid=$(${NSHOLDER} ns1.hold pid)
|
|
|
|
context_setup_nsenter passt_1 -U -n -p --preserve-credentials -t ${__ns1_pid}
|
2021-09-27 15:10:35 +02:00
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/pasta_2.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
2022-09-12 12:56:23 +02:00
|
|
|
context_run_bg pasta_2 "./pasta ${__opts} -P pasta_2.pid -t 10004,10005 -T 10003,10001 -u 10004,10005 -U 10003,10001 ${NSHOLDER} ns2.hold hold"
|
|
|
|
__ns2_pid=$(${NSHOLDER} ns2.hold pid)
|
|
|
|
context_setup_nsenter passt_2 -U -n -p --preserve-credentials -t ${__ns2_pid}
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:23 +02:00
|
|
|
context_setup_nsenter qemu_1 -U -n -p --preserve-credentials -t ${__ns1_pid}
|
|
|
|
context_setup_nsenter qemu_2 -U -n -p --preserve-credentials -t ${__ns2_pid}
|
|
|
|
|
|
|
|
__ifname="$(context_run qemu_1 "ip -j link show | jq -rM '.[] | select(.link_type == \"ether\").ifname'")"
|
|
|
|
|
|
|
|
context_run qemu_1 "/sbin/dhclient -4 --no-pid ${__ifname}"
|
|
|
|
context_run qemu_2 "/sbin/dhclient -4 --no-pid ${__ifname}"
|
|
|
|
context_run qemu_1 "/sbin/dhclient -6 --no-pid ${__ifname}"
|
|
|
|
context_run qemu_2 "/sbin/dhclient -6 --no-pid ${__ifname}"
|
2021-09-27 15:10:35 +02:00
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/passt_1.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
|
|
|
|
2022-09-12 12:56:23 +02:00
|
|
|
context_run_bg passt_1 "./passt -P passt_1.pid -f ${__opts} -t 10001 -u 10001"
|
2021-09-27 15:10:35 +02:00
|
|
|
sleep 1
|
|
|
|
|
|
|
|
__opts=
|
|
|
|
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/passt_2.pcap"
|
|
|
|
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d"
|
2022-03-15 00:59:09 +01:00
|
|
|
[ ${TRACE} -eq 1 ] && __opts="${__opts} --trace"
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:23 +02:00
|
|
|
context_run_bg passt_2 "./passt -P passt_2.pid -f ${__opts} -t 10004 -u 10004"
|
|
|
|
|
|
|
|
GUEST_1_CID=94557
|
|
|
|
context_run_bg qemu_1 './qrap 5 qemu-system-$(uname -m)' \
|
2022-07-06 09:28:58 +02:00
|
|
|
' -M accel=kvm:tcg' \
|
|
|
|
' -m '${VMEM}' -cpu host -smp '${VCPUS} \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -kernel ' "/boot/vmlinuz-$(uname -r)" \
|
2022-07-06 09:29:00 +02:00
|
|
|
' -initrd '${INITRAMFS}' -nographic -serial stdio' \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -nodefaults' \
|
|
|
|
' -append "console=ttyS0 mitigations=off apparmor=0 ' \
|
|
|
|
'virtio-net.napi_tx=1"' \
|
|
|
|
" -device virtio-net-pci,netdev=hostnet0,x-txburst=16384" \
|
2022-08-18 08:13:58 +02:00
|
|
|
" -netdev socket,fd=5,id=hostnet0" \
|
2022-09-12 12:56:23 +02:00
|
|
|
' -pidfile two_guests_qemu_1.pid' \
|
|
|
|
" -device vhost-vsock-pci,guest-cid=$GUEST_1_CID"
|
|
|
|
|
|
|
|
GUEST_2_CID=94558
|
|
|
|
context_run_bg qemu_2 './qrap 5 qemu-system-$(uname -m)' \
|
2022-07-06 09:28:58 +02:00
|
|
|
' -M accel=kvm:tcg' \
|
|
|
|
' -m '${VMEM}' -cpu host -smp '${VCPUS} \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -kernel ' "/boot/vmlinuz-$(uname -r)" \
|
2022-07-06 09:29:00 +02:00
|
|
|
' -initrd '${INITRAMFS}' -nographic -serial stdio' \
|
2022-01-26 07:32:56 +01:00
|
|
|
' -nodefaults' \
|
|
|
|
' -append "console=ttyS0 mitigations=off apparmor=0 ' \
|
|
|
|
'virtio-net.napi_tx=1"' \
|
|
|
|
" -device virtio-net-pci,netdev=hostnet0,x-txburst=16384" \
|
2022-08-18 08:13:58 +02:00
|
|
|
" -netdev socket,fd=5,id=hostnet0" \
|
2022-09-12 12:56:23 +02:00
|
|
|
' -pidfile two_guests_qemu_2.pid' \
|
|
|
|
" -device vhost-vsock-pci,guest-cid=$GUEST_2_CID"
|
|
|
|
|
|
|
|
context_setup_guest guest_1 ${GUEST_1_CID}
|
|
|
|
context_setup_guest guest_2 ${GUEST_2_CID}
|
2021-09-27 15:10:35 +02:00
|
|
|
}
|
|
|
|
|
2022-09-12 12:56:18 +02:00
|
|
|
# teardown_context_watch() - Remove contexts and stop panes watching them
|
|
|
|
# $1: Pane number watching
|
|
|
|
# $@: Context names
|
|
|
|
teardown_context_watch() {
|
|
|
|
__pane="$1"
|
|
|
|
shift
|
|
|
|
for __c; do
|
|
|
|
context_teardown "${__c}"
|
|
|
|
done
|
|
|
|
tmux send-keys -t ${__pane} "C-c"
|
|
|
|
}
|
|
|
|
|
2022-08-18 08:13:53 +02:00
|
|
|
# teardown_build() - Nothing to do, yet
|
|
|
|
teardown_build() {
|
2022-09-12 12:56:18 +02:00
|
|
|
teardown_context_watch ${PANE_HOST} host
|
2022-08-18 08:13:53 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# teardown_distro() - Nothing to do, yet
|
|
|
|
teardown_distro() {
|
|
|
|
:
|
|
|
|
}
|
|
|
|
|
2022-03-15 20:16:13 +01:00
|
|
|
# teardown_passt() - Kill qemu, remove passt PID file
|
2021-09-27 15:10:35 +02:00
|
|
|
teardown_passt() {
|
2022-08-18 08:13:58 +02:00
|
|
|
kill $(cat passt_qemu.pid)
|
2022-09-12 12:56:22 +02:00
|
|
|
|
2022-03-15 20:16:13 +01:00
|
|
|
rm passt.pid
|
2022-09-12 12:56:18 +02:00
|
|
|
|
|
|
|
teardown_context_watch ${PANE_HOST} host
|
2022-09-12 12:56:19 +02:00
|
|
|
teardown_context_watch ${PANE_PASST} passt
|
2022-09-12 12:56:22 +02:00
|
|
|
teardown_context_watch ${PANE_GUEST} qemu guest
|
2021-09-27 15:10:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# teardown_passt() - Exit namespace, kill pasta process
|
|
|
|
teardown_pasta() {
|
2022-09-12 12:56:21 +02:00
|
|
|
${NSHOLDER} ns.hold stop
|
|
|
|
context_wait unshare
|
2022-09-12 12:56:18 +02:00
|
|
|
|
|
|
|
teardown_context_watch ${PANE_HOST} host
|
2022-09-12 12:56:19 +02:00
|
|
|
teardown_context_watch ${PANE_PASST} passt
|
2022-09-12 12:56:21 +02:00
|
|
|
teardown_context_watch ${PANE_NS} unshare ns
|
2021-09-27 15:10:35 +02:00
|
|
|
}
|
|
|
|
|
2022-03-15 20:16:13 +01:00
|
|
|
# teardown_passt_in_ns() - Exit namespace, kill qemu and pasta, remove pid file
|
2021-09-27 15:10:35 +02:00
|
|
|
teardown_passt_in_ns() {
|
2022-09-12 12:56:24 +02:00
|
|
|
context_run ns kill $(cat passt_in_ns_qemu.pid)
|
|
|
|
context_wait qemu
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:24 +02:00
|
|
|
${NSHOLDER} ns.hold stop
|
|
|
|
context_wait pasta
|
2021-09-27 15:10:35 +02:00
|
|
|
|
2022-09-12 12:56:24 +02:00
|
|
|
rm passt.pid pasta.pid
|
2022-09-12 12:56:18 +02:00
|
|
|
|
|
|
|
teardown_context_watch ${PANE_HOST} host
|
2022-09-12 12:56:24 +02:00
|
|
|
teardown_context_watch ${PANE_PASST} pasta passt
|
|
|
|
teardown_context_watch ${PANE_NS} ns
|
|
|
|
teardown_context_watch ${PANE_GUEST} qemu guest
|
2021-09-27 15:10:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
# teardown_two_guests() - Exit namespaces, kill qemu processes, passt and pasta
|
|
|
|
teardown_two_guests() {
|
2022-09-12 12:56:23 +02:00
|
|
|
__ns1_pid=$(${NSHOLDER} ns1.hold pid)
|
|
|
|
__ns2_pid=$(${NSHOLDER} ns2.hold pid)
|
|
|
|
nsenter -U -p --preserve-credentials -t ${__ns1_pid} kill $(cat two_guests_qemu_1.pid)
|
|
|
|
nsenter -U -p --preserve-credentials -t ${__ns2_pid} kill $(cat two_guests_qemu_2.pid)
|
|
|
|
context_wait qemu_1
|
|
|
|
context_wait qemu_2
|
|
|
|
|
|
|
|
nsenter -U -p --preserve-credentials -t ${__ns1_pid} kill $(cat passt_1.pid)
|
|
|
|
nsenter -U -p --preserve-credentials -t ${__ns2_pid} kill $(cat passt_2.pid)
|
|
|
|
context_wait passt_1
|
|
|
|
context_wait passt_2
|
|
|
|
${NSHOLDER} ns1.hold stop
|
|
|
|
${NSHOLDER} ns2.hold stop
|
|
|
|
context_wait pasta_1
|
|
|
|
context_wait pasta_2
|
|
|
|
|
|
|
|
rm -f passt_[12].pid pasta_[12].pid
|
2022-09-12 12:56:18 +02:00
|
|
|
|
|
|
|
teardown_context_watch ${PANE_HOST} host
|
2022-09-12 12:56:23 +02:00
|
|
|
teardown_context_watch ${PANE_GUEST_1} qemu_1 guest_1
|
|
|
|
teardown_context_watch ${PANE_GUEST_2} qemu_2 guest_2
|
|
|
|
teardown_context_watch ${PANE_PASST_1} pasta_1 passt_1
|
|
|
|
teardown_context_watch ${PANE_PASST_2} pasta_2 passt_2
|
2021-09-27 15:10:35 +02:00
|
|
|
}
|
|
|
|
|
2021-09-29 16:45:26 +02:00
|
|
|
# teardown_demo_passt() - Exit namespace, kill qemu, passt and pasta
|
|
|
|
teardown_demo_passt() {
|
|
|
|
tmux send-keys -t ${PANE_GUEST} "C-c"
|
|
|
|
pane_wait GUEST
|
|
|
|
|
2022-07-21 14:01:28 +02:00
|
|
|
tmux send-keys -t ${PANE_GUEST} "C-d"
|
2021-09-29 16:45:26 +02:00
|
|
|
tmux send-keys -t ${PANE_PASST} "C-c"
|
|
|
|
|
|
|
|
pane_wait GUEST
|
|
|
|
pane_wait HOST
|
|
|
|
pane_wait PASST
|
2022-02-21 13:35:45 +01:00
|
|
|
|
|
|
|
tmux kill-pane -a -t 0
|
|
|
|
tmux send-keys -t 0 "C-c"
|
2021-09-29 16:45:26 +02:00
|
|
|
}
|
|
|
|
|
2022-02-21 13:35:45 +01:00
|
|
|
# teardown_demo_pasta() - Exit perf and namespace from remaining pane
|
2021-09-29 16:45:26 +02:00
|
|
|
teardown_demo_pasta() {
|
2022-02-21 13:35:45 +01:00
|
|
|
tmux send-keys -t ${PANE_NS} "q"
|
|
|
|
pane_wait NS
|
2021-09-29 16:45:26 +02:00
|
|
|
tmux send-keys -t ${PANE_NS} "C-d"
|
|
|
|
pane_wait NS
|
2022-02-21 13:35:45 +01:00
|
|
|
|
|
|
|
tmux kill-pane -a -t 0
|
|
|
|
tmux send-keys -t 0 "C-c"
|
|
|
|
}
|
|
|
|
|
|
|
|
# teardown_demo_podman() - Exit namespaces
|
|
|
|
teardown_demo_podman() {
|
|
|
|
tmux send-keys -t ${PANE_NS1} "C-d"
|
|
|
|
tmux send-keys -t ${PANE_NS2} "C-d"
|
|
|
|
pane_wait NS1
|
|
|
|
pane_wait NS2
|
|
|
|
|
|
|
|
tmux kill-pane -a -t 0
|
|
|
|
tmux send-keys -t 0 "C-c"
|
2021-09-29 16:45:26 +02:00
|
|
|
}
|
|
|
|
|
2021-09-27 15:10:35 +02:00
|
|
|
# setup() - Run setup_*() functions
|
|
|
|
# $*: Suffix list of setup_*() functions to be called
|
|
|
|
setup() {
|
|
|
|
for arg do
|
2022-09-13 06:35:19 +02:00
|
|
|
STATESETUP="${STATEBASE}/${arg}"
|
|
|
|
mkdir -p "${STATESETUP}"
|
2021-09-27 15:10:35 +02:00
|
|
|
eval setup_${arg}
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
|
|
|
# teardown() - Run teardown_*() functions
|
|
|
|
# $*: Suffix list of teardown_*() functions to be called
|
|
|
|
teardown() {
|
|
|
|
for arg do
|
|
|
|
eval teardown_${arg}
|
|
|
|
done
|
|
|
|
}
|