qemu-e2k/tests/avocado
Peter Delevoryas f9922937d1 python/machine: Fix AF_UNIX path too long on macOS
On macOS, private $TMPDIR's are the default. These $TMPDIR's are
generated from a user's unix UID and UUID [1], which can create a
relatively long path:

    /var/folders/d7/rz20f6hd709c1ty8f6_6y_z40000gn/T/

QEMU's avocado tests create a temporary directory prefixed by
"avo_qemu_sock_", and create QMP sockets within _that_ as well.
The QMP socket is unnecessarily long, because a temporary directory
is created for every QEMUMachine object.

    /avo_qemu_sock_uh3w_dgc/qemu-37331-10bacf110-monitor.sock

The path limit for unix sockets on macOS is 104: [2]

    /*
     * [XSI] Definitions for UNIX IPC domain.
     */
    struct  sockaddr_un {
        unsigned char   sun_len;        /* sockaddr len including null */
        sa_family_t     sun_family;     /* [XSI] AF_UNIX */
        char            sun_path[104];  /* [XSI] path name (gag) */
    };

This results in avocado tests failing on macOS because the QMP unix
socket can't be created, because the path is too long:

    ERROR| Failed to establish connection: OSError: AF_UNIX path too long

This change resolves by reducing the size of the socket directory prefix
and the suffix on the QMP and console socket names.

The result is paths like this:

    pdel@pdel-mbp:/var/folders/d7/rz20f6hd709c1ty8f6_6y_z40000gn/T
    $ tree qemu*
    qemu_df4evjeq
    qemu_jbxel3gy
    qemu_ml9s_gg7
    qemu_oc7h7f3u
    qemu_oqb1yf97
    ├── 10a004050.con
    └── 10a004050.qmp

[1] https://apple.stackexchange.com/questions/353832/why-is-mac-osx-temp-directory-in-weird-path
[2] /Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/include/sys/un.h

Signed-off-by: Peter Delevoryas <peter@pjd.dev>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20230110082930.42129-2-peter@pjd.dev
Signed-off-by: John Snow <jsnow@redhat.com>
2023-01-24 13:37:13 -05:00
..
acpi-bits acpi/tests/avocado/bits: add SPDX license identifiers for bios bits tests 2022-12-21 07:32:24 -05:00
avocado_qemu python/machine: Fix AF_UNIX path too long on macOS 2023-01-24 13:37:13 -05:00
virtiofs_submounts.py.data tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
README.rst tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
acpi-bits.py acpi/tests/avocado/bits: add mformat as one of the dependencies 2022-12-21 07:32:24 -05:00
boot_linux.py tests/avocado: skip aarch64 cloud TCG tests in CI 2022-11-22 09:52:23 +00:00
boot_linux_console.py tests/avocado: Add SD boot test to Cubieboard 2023-01-12 16:50:19 +00:00
boot_xen.py tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
cpu_queries.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
empty_cpu_model.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
hotplug_cpu.py tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
info_usernet.py tests/avocado: set -machine none for userfwd and vnc tests 2022-10-31 20:37:59 +00:00
intel_iommu.py tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
linux_initrd.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
linux_ssh_mips_malta.py tests/avocado/linux_ssh_mips_malta.py: add missing accel (tcg) tag 2022-03-08 19:38:17 +01:00
load_bflt.py tests/avocado: Add bFLT loader linux-user test 2021-11-08 17:00:22 +01:00
machine_aarch64_virt.py tests/avocado: introduce alpine virt test for CI 2022-11-22 09:52:23 +00:00
machine_arm_canona1100.py tests/avocado: Update the URLs of the advent calendar images 2022-11-23 10:58:48 +01:00
machine_arm_integratorcp.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
machine_arm_n8x0.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
machine_aspeed.py tests/avocado/machine_aspeed.py: Reduce noise on the console for SDK tests 2022-11-22 09:48:57 +00:00
machine_avr6.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
machine_m68k_nextcube.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
machine_microblaze.py tests/avocado: Update the URLs of the advent calendar images 2022-11-23 10:58:48 +01:00
machine_mips_fuloong2e.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
machine_mips_loongson3v.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
machine_mips_malta.py tests/avocado: Add tests booting YAMON ROM on MIPS Malta machines 2023-01-13 09:32:32 +01:00
machine_rx_gdbsim.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
machine_s390_ccw_virtio.py target/s390x: support PRNO_TRNG instruction 2022-09-26 17:23:11 +02:00
machine_sparc64_sun4u.py tests/avocado: Update the URLs of the advent calendar images 2022-11-23 10:58:48 +01:00
machine_sparc_leon3.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
migration.py tests/avocado/migration: Get find_free_port() from the ports 2022-08-30 07:55:43 +02:00
multiprocess.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
pc_cpu_hotplug_props.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
ppc_74xx.py avocado/ppc_74xx.py: check TCG accel for all tests 2022-03-14 15:57:17 +01:00
ppc_405.py avocado/ppc_405.py: check TCG accel in test_ppc_ref405ep() 2022-03-14 15:57:17 +01:00
ppc_bamboo.py tests/avocado: Add missing require_netdev('user') checks 2022-10-11 17:25:50 +02:00
ppc_mpc8544ds.py tests/avocado: Update the URLs of the advent calendar images 2022-11-23 10:58:48 +01:00
ppc_prep_40p.py avocado/ppc_prep_40p.py: check TCG accel in all tests 2022-03-14 15:57:17 +01:00
ppc_pseries.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
ppc_virtex_ml507.py tests/avocado: Update the URLs of the advent calendar images 2022-11-23 10:58:48 +01:00
replay_kernel.py tests/avocado: Update the URLs of the advent calendar images 2022-11-23 10:58:48 +01:00
replay_linux.py tests/avocado: Do not run tests that require libslirp if it is not available 2022-08-29 15:28:51 +02:00
reverse_debugging.py tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
riscv_opensbi.py tests/avocado: add RISC-V OpenSBI boot test 2023-01-20 10:14:13 +10:00
smmu.py tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
tcg_plugins.py tests/avocado: fix tcg_plugin mem access count test 2021-11-29 15:12:56 +00:00
tesseract_utils.py tests/acceptance: rename tests acceptance to tests avocado 2021-11-08 17:00:22 +01:00
version.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
virtio-gpu.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00
virtio_check_params.py tests: install "qemu" namespace package into venv 2022-06-06 09:26:54 +02:00
virtio_version.py tests: install "qemu" namespace package into venv 2022-06-06 09:26:54 +02:00
virtiofs_submounts.py tests/avocado: Share useful helpers from virtiofs_submounts test 2021-11-08 17:00:22 +01:00
vnc.py tests/avocado: set -machine none for userfwd and vnc tests 2022-10-31 20:37:59 +00:00
x86_cpu_model_versions.py tests/avocado: Rename avocado_qemu.Test -> QemuSystemTest 2021-11-08 17:00:22 +01:00

README.rst

=============================================
Integration tests using the Avocado Framework
=============================================

This directory contains integration tests. They're usually higher
level, and may interact with external resources and with various
guest operating systems.

For more information, please refer to ``docs/devel/testing.rst``,
section "Integration tests using the Avocado Framework".