40fc9e6e7b
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>
200 lines
7.4 KiB
Makefile
200 lines
7.4 KiB
Makefile
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
#
|
|
# Tests makefile
|
|
#
|
|
# Copyright Red Hat
|
|
# Author: David Gibson <david@gibson.dropbear.id.au>
|
|
|
|
WGET = wget -c
|
|
|
|
DEBIAN_IMGS = debian-8.11.0-openstack-amd64.qcow2 \
|
|
debian-9-nocloud-amd64-daily-20200210-166.qcow2 \
|
|
debian-10-nocloud-amd64.qcow2 \
|
|
debian-10-generic-arm64.qcow2 \
|
|
debian-10-generic-ppc64el.qcow2 \
|
|
debian-11-nocloud-amd64.qcow2 \
|
|
debian-11-generic-arm64.qcow2 \
|
|
debian-11-generic-ppc64el.qcow2 \
|
|
debian-sid-nocloud-amd64-daily.qcow2 \
|
|
debian-sid-nocloud-arm64-daily.qcow2 \
|
|
debian-sid-nocloud-ppc64el-daily.qcow2
|
|
|
|
FEDORA_IMGS = Fedora-Cloud-Base-26-1.5.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-27-1.6.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-28-1.1.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-28-1.1.aarch64.qcow2 \
|
|
Fedora-Cloud-Base-29-1.2.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-29-1.2.aarch64.qcow2 \
|
|
Fedora-Cloud-Base-30-1.2.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-30-1.2.aarch64.qcow2 \
|
|
Fedora-Cloud-Base-31-1.9.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-31-1.9.aarch64.qcow2 \
|
|
Fedora-Cloud-Base-32-1.6.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-32-1.6.aarch64.qcow2 \
|
|
Fedora-Cloud-Base-33-1.2.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-33-1.2.aarch64.qcow2 \
|
|
Fedora-Cloud-Base-34-1.2.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-34-1.2.aarch64.qcow2 \
|
|
Fedora-Cloud-Base-35-1.2.x86_64.qcow2 \
|
|
Fedora-Cloud-Base-35-1.2.aarch64.qcow2
|
|
|
|
OPENSUSE_IMGS = openSUSE-Leap-15.1-JeOS.x86_64-kvm-and-xen.qcow2 \
|
|
openSUSE-Leap-15.2-JeOS.x86_64-kvm-and-xen.qcow2 \
|
|
openSUSE-Leap-15.3-JeOS.x86_64-kvm-and-xen.qcow2 \
|
|
openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64.raw.xz \
|
|
openSUSE-Tumbleweed-ARM-JeOS-efi.armv7l.raw.xz \
|
|
openSUSE-Tumbleweed-JeOS.x86_64-kvm-and-xen.qcow2
|
|
|
|
UBUNTU_OLD_IMGS = trusty-server-cloudimg-amd64-disk1.img \
|
|
trusty-server-cloudimg-i386-disk1.img \
|
|
trusty-server-cloudimg-ppc64el-disk1.img
|
|
UBUNTU_NEW_IMGS = xenial-server-cloudimg-powerpc-disk1.img \
|
|
jammy-server-cloudimg-s390x.img
|
|
UBUNTU_IMGS = $(UBUNTU_OLD_IMGS) $(UBUNTU_NEW_IMGS)
|
|
|
|
DOWNLOAD_ASSETS = mbuto \
|
|
$(DEBIAN_IMGS) $(FEDORA_IMGS) $(OPENSUSE_IMGS) $(UBUNTU_IMGS)
|
|
TESTDATA_ASSETS = small.bin big.bin medium.bin
|
|
LOCAL_ASSETS = mbuto.img mbuto.mem.img QEMU_EFI.fd \
|
|
$(DEBIAN_IMGS:%=prepared-%) $(FEDORA_IMGS:%=prepared-%) \
|
|
$(UBUNTU_NEW_IMGS:%=prepared-%) \
|
|
nsholder guest-key guest-key.pub \
|
|
$(TESTDATA_ASSETS)
|
|
|
|
ASSETS = $(DOWNLOAD_ASSETS) $(LOCAL_ASSETS)
|
|
|
|
CFLAGS = -Wall -Werror -Wextra -pedantic -std=c99
|
|
|
|
assets: $(ASSETS)
|
|
|
|
mbuto:
|
|
git clone git://mbuto.sh/mbuto
|
|
|
|
guest-key guest-key.pub:
|
|
ssh-keygen -f guest-key -N ''
|
|
|
|
mbuto.img: passt.mbuto mbuto guest-key.pub $(TESTDATA_ASSETS)
|
|
./mbuto/mbuto -p ./$< -c lz4 -f $@
|
|
|
|
mbuto.mem.img: passt.mem.mbuto mbuto ../passt.avx2
|
|
./mbuto/mbuto -p ./$< -c lz4 -f $@
|
|
|
|
nsholder: nsholder.c
|
|
$(CC) $(CFLAGS) -o $@ $^
|
|
|
|
QEMU_EFI.fd:
|
|
./find-arm64-firmware.sh $@
|
|
|
|
prepared-%.qcow2: %.qcow2 ./prepare-distro-img.sh
|
|
qemu-img create -f qcow2 -F qcow2 -b $< $@
|
|
./prepare-distro-img.sh $@
|
|
|
|
prepared-%.img: %.img ./prepare-distro-img.sh
|
|
qemu-img create -f qcow2 -F qcow2 -b $< $@
|
|
./prepare-distro-img.sh $(IMGTYPE) $@
|
|
|
|
small.bin:
|
|
dd if=/dev/urandom bs=2k count=1 of=$@
|
|
|
|
medium.bin:
|
|
dd if=/dev/urandom bs=1k count=5 of=$@
|
|
|
|
big.bin:
|
|
dd if=/dev/urandom bs=1M count=10 of=$@
|
|
|
|
check: assets
|
|
./run
|
|
|
|
debug: assets
|
|
DEBUG=1 ./run
|
|
|
|
clean:
|
|
rm -f perf.js *~
|
|
rm -f $(LOCAL_ASSETS)
|
|
rm -rf test_logs
|
|
rm -f prepared-*.qcow2 prepared-*.img
|
|
|
|
realclean: clean
|
|
rm -rf $(DOWNLOAD_ASSETS)
|
|
|
|
# Debian downloads
|
|
debian-8.11.0-openstack-%.qcow2:
|
|
$(WGET) -O $@ https://cloud.debian.org/images/cloud/OpenStack/archive/8.11.0/debian-8.11.0-openstack-$*.qcow2
|
|
|
|
debian-9-nocloud-%-daily-20200210-166.qcow2:
|
|
$(WGET) -O $@ https://cloud.debian.org/images/cloud/stretch/daily/20200210-166/debian-9-nocloud-$*-daily-20200210-166.qcow2
|
|
|
|
debian-10-nocloud-%.qcow2:
|
|
$(WGET) -O $@ https://cloud.debian.org/images/cloud/buster/latest/debian-10-nocloud-$*.qcow2
|
|
|
|
debian-10-generic-%.qcow2:
|
|
$(WGET) -O $@ https://cloud.debian.org/images/cloud/buster/latest/debian-10-generic-$*.qcow2
|
|
|
|
debian-11-nocloud-%.qcow2:
|
|
$(WGET) -O $@ https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-nocloud-$*.qcow2
|
|
|
|
debian-11-generic-%.qcow2:
|
|
$(WGET) -O $@ https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-$*.qcow2
|
|
|
|
debian-sid-nocloud-%-daily.qcow2:
|
|
$(WGET) -O $@ https://cloud.debian.org/images/cloud/sid/daily/latest/debian-sid-nocloud-$*-daily.qcow2
|
|
|
|
# Fedora downloads
|
|
Fedora-Cloud-Base-26-1.5.%.qcow2:
|
|
$(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/26/CloudImages/$*/images/Fedora-Cloud-Base-26-1.5.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-27-1.6.%.qcow2:
|
|
$(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/27/CloudImages/$*/images/Fedora-Cloud-Base-27-1.6.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-28-1.1.%.qcow2:
|
|
$(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/28/Cloud/$*/images/Fedora-Cloud-Base-28-1.1.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-29-1.2.%.qcow2:
|
|
$(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/29/Cloud/$*/images/Fedora-Cloud-Base-29-1.2.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-30-1.2.%.qcow2:
|
|
$(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/30/Cloud/$*/images/Fedora-Cloud-Base-30-1.2.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-31-1.9.%.qcow2:
|
|
$(WGET) -O $@ http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/31/Cloud/$*/images/Fedora-Cloud-Base-31-1.9.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-32-1.6.%.qcow2:
|
|
$(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux/releases/32/Cloud/$*/images/Fedora-Cloud-Base-32-1.6.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-33-1.2.%.qcow2:
|
|
$(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux/releases/33/Cloud/$*/images/Fedora-Cloud-Base-33-1.2.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-34-1.2.%.qcow2:
|
|
$(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux//releases/34/Cloud/$*/images/Fedora-Cloud-Base-34-1.2.$*.qcow2
|
|
|
|
Fedora-Cloud-Base-35-1.2.%.qcow2:
|
|
$(WGET) -O $@ https://download.fedoraproject.org/pub/fedora/linux/releases/35/Cloud/$*/images/Fedora-Cloud-Base-35-1.2.$*.qcow2
|
|
|
|
# OpenSuSE downloads
|
|
openSUSE-Leap-15.1-JeOS.x86_64-kvm-and-xen.qcow2:
|
|
$(WGET) -O $@ https://download.opensuse.org/distribution/leap/15.1/jeos/openSUSE-Leap-15.1-JeOS.x86_64-kvm-and-xen.qcow2
|
|
|
|
openSUSE-Leap-15.2-JeOS.x86_64-kvm-and-xen.qcow2:
|
|
$(WGET) -O $@ https://download.opensuse.org/distribution/leap/15.2/appliances/openSUSE-Leap-15.2-JeOS.x86_64-kvm-and-xen.qcow2
|
|
|
|
openSUSE-Leap-15.3-JeOS.x86_64-kvm-and-xen.qcow2:
|
|
$(WGET) -O $@ https://download.opensuse.org/distribution/leap/15.3/appliances/openSUSE-Leap-15.3-JeOS.x86_64-kvm-and-xen.qcow2
|
|
|
|
openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64.raw.xz:
|
|
$(WGET) -O $@ http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64.raw.xz
|
|
|
|
openSUSE-Tumbleweed-ARM-JeOS-efi.armv7l.raw.xz:
|
|
$(WGET) -O $@ http://download.opensuse.org/ports/armv7hl/tumbleweed/appliances/openSUSE-Tumbleweed-ARM-JeOS-efi.armv7l.raw.xz
|
|
|
|
openSUSE-Tumbleweed-JeOS.x86_64-kvm-and-xen.qcow2:
|
|
$(WGET) -O $@ https://download.opensuse.org/tumbleweed/appliances/openSUSE-Tumbleweed-JeOS.x86_64-kvm-and-xen.qcow2
|
|
|
|
# Ubuntu downloads
|
|
trusty-server-cloudimg-%-disk1.img:
|
|
$(WGET) -O $@ https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-$*-disk1.img
|
|
|
|
xenial-server-cloudimg-powerpc-disk1.img:
|
|
$(WGET) -O $@ https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-powerpc-disk1.img
|
|
|
|
jammy-server-cloudimg-s390x.img:
|
|
$(WGET) -O $@ https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-s390x.img
|