2022-10-31 10:25:30 +01: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/layout_ugly - screen-scraped tmux pane layouts
|
|
|
|
#
|
|
|
|
# Copyright (c) 2022 Red Hat GmbH
|
|
|
|
# Author: Stefano Brivio <sbrivio@redhat.com>
|
|
|
|
|
|
|
|
# layout_host() - Simple host commands layout with info and host panes
|
|
|
|
layout_host() {
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
tmux kill-pane -a -t 0
|
|
|
|
cmd_write 0 clear
|
|
|
|
|
|
|
|
tmux split-window -h -l '35%' -t passt_test:1.0
|
|
|
|
|
|
|
|
PANE_HOST=0
|
|
|
|
PANE_INFO=1
|
|
|
|
|
|
|
|
get_info_cols
|
|
|
|
|
|
|
|
tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; do :; done'
|
|
|
|
tmux send-keys -t ${PANE_INFO} -N 100 C-m
|
|
|
|
tmux select-pane -t ${PANE_INFO} -T "test log"
|
|
|
|
|
|
|
|
if context_exists host; then
|
|
|
|
pane_watch_contexts 0 host host
|
|
|
|
else
|
|
|
|
tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log"
|
|
|
|
tmux select-pane -t ${PANE_HOST} -T "host"
|
|
|
|
fi
|
|
|
|
|
|
|
|
info_layout "host commands only"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
}
|
|
|
|
|
|
|
|
# layout_pasta_simple() - Panes for host and pasta
|
|
|
|
layout_pasta_simple() {
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
tmux kill-pane -a -t 0
|
|
|
|
cmd_write 0 clear
|
|
|
|
|
|
|
|
tmux split-window -v -t passt_test
|
|
|
|
tmux split-window -h -t passt_test
|
|
|
|
|
|
|
|
PANE_PASST=0
|
|
|
|
PANE_HOST=1
|
|
|
|
PANE_INFO=2
|
|
|
|
|
|
|
|
get_info_cols
|
|
|
|
|
|
|
|
tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; do :; done'
|
|
|
|
tmux send-keys -t ${PANE_INFO} -N 100 C-m
|
|
|
|
tmux select-pane -t ${PANE_INFO} -T "test log"
|
|
|
|
|
|
|
|
if context_exists host; then
|
|
|
|
pane_watch_contexts ${PANE_HOST} host host
|
|
|
|
else
|
|
|
|
tmux pipe-pane -O -t ${PANE_HOST} "cat >> ${LOGDIR}/pane_host.log"
|
|
|
|
tmux select-pane -t ${PANE_HOST} -T "host"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if context_exists passt; then
|
|
|
|
pane_watch_contexts ${PANE_PASST} host host
|
|
|
|
else
|
|
|
|
tmux pipe-pane -O -t ${PANE_PASST} "cat >> ${LOGDIR}/pane_passt.log"
|
|
|
|
tmux select-pane -t ${PANE_PASST} -T "pasta"
|
|
|
|
fi
|
|
|
|
|
|
|
|
info_layout "single pasta instance"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
}
|
test: Add memory/passt test cases
These show a summary of memory usage in kernel and userspace with
different port forwarding configurations, details of userspace usage
using 'nm' (passt only uses statically allocated memory), and details
of kernel memory from slab reporting facilities.
This adds a new test image, mbuto.mem.img, with harcoded IPv4 and
IPv6 addresses and routes, and just the tools we need to start and
stop passt, to report from /proc/slabinfo, /proc/meminfo, and to
print and parse symbol sizes using nm(1).
passt can't pivot_root() for sandboxing purposes on ramfs, so we need
to create another filesystem and chroot into it, first.
We don't want to use pane context functions, as we're checking memory
usage for sockets: resort to screen-scraping.
Configure a dummy interface to provide passt with an appearance of
working IPv4 and IPv6 connectivity, contributed by David.
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
2022-10-31 12:20:59 +01:00
|
|
|
|
|
|
|
# layout_memory() - Screen-scraped panes for memory usage tests, big guest pane
|
|
|
|
layout_memory() {
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
tmux kill-pane -a -t 0
|
|
|
|
cmd_write 0 clear
|
|
|
|
|
|
|
|
tmux split-window -h -l '35%' -t passt_test
|
|
|
|
|
|
|
|
PANE_GUEST=0
|
|
|
|
PANE_INFO=1
|
|
|
|
|
|
|
|
get_info_cols
|
|
|
|
|
|
|
|
tmux send-keys -l -t ${PANE_INFO} 'while cat '"$STATEBASE/log_pipe"'; do :; done'
|
|
|
|
tmux send-keys -t ${PANE_INFO} -N 100 C-m
|
|
|
|
tmux select-pane -t ${PANE_INFO} -T "test log"
|
|
|
|
|
|
|
|
if context_exists guest; then
|
|
|
|
pane_watch_contexts ${PANE_GUEST} guest guest
|
|
|
|
else
|
|
|
|
tmux pipe-pane -O -t ${PANE_GUEST} "cat >> ${LOGDIR}/pane_guest.log"
|
|
|
|
tmux select-pane -t ${PANE_GUEST} -T "guest"
|
|
|
|
fi
|
|
|
|
|
|
|
|
info_layout "memory usage"
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
}
|