qemu/tests
Max Reitz b28f582c2a iotests: Let 233 run concurrently
common.nbd's nbd_server_set_tcp_port() tries to find a free port, and
then uses it for the whole test run.  However, this is racy because even
if the port was free at the beginning, there is no guarantee it will
continue to be available.  Therefore, 233 currently cannot reliably be
run concurrently with other NBD TCP tests.

This patch addresses the problem by dropping nbd_server_set_tcp_port(),
and instead finding a new port every time nbd_server_start_tcp_socket()
is invoked.  For this, we run qemu-nbd with --fork and on error evaluate
the output to see whether it contains "Address already in use".  If so,
we try the next port.

On success, we still want to continually redirect the output from
qemu-nbd to stderr.  To achieve both, we redirect qemu-nbd's stderr to a
FIFO that we then open in bash.  If the parent process exits with status
0 (which means that the server has started successfully), we launch a
background cat process that copies the FIFO to stderr.  On failure, we
read the whole content into a variable and then evaluate it.

While at it, use --fork in nbd_server_start_unix_socket(), too.  Doing
so allows us to drop nbd_server_wait_for_*_socket().

Note that the reason common.nbd did not use --fork before is that
qemu-nbd did not have --pid-file.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190508211820.17851-6-mreitz@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
2019-06-13 08:50:47 -05:00
..
acceptance BootLinuxConsoleTest: Run kerneltests BusyBox on Malta 2019-06-11 14:13:09 -03:00
data tests: acpi: add simple arm/virt testcase 2019-06-03 10:31:30 -04:00
decode decodetree: Properly diagnose fields overflowing an insn 2019-03-12 09:46:58 -07:00
docker tests/docker: Update the Ubuntu image to 19.04 2019-06-12 17:53:22 +01:00
fp softfloat: Support float_round_to_odd more places 2019-02-26 14:08:03 +00:00
guest-debug tests/guest-debug: fix scoping of failcount 2018-11-13 10:47:59 +00:00
image-fuzzer
keys
libqos Supply missing header guards 2019-06-12 13:20:21 +02:00
migration Clean up a few header guard symbols 2019-06-12 13:20:20 +02:00
multiboot tests/multiboot: Improve portability by searching bash in the $PATH 2019-03-08 12:26:45 +01:00
perf/block/qcow2 tests/perf: Test lseek influence on qcow2 block-status 2019-06-04 15:20:41 +02:00
qapi-schema tests/qapi-schema: Error case tests for features in structs 2019-06-12 18:35:26 +02:00
qemu-iotests iotests: Let 233 run concurrently 2019-06-13 08:50:47 -05:00
rocker
tcg tests/tcg/x86_64: add a PVH crt.o for x86_64 system tests 2019-06-12 17:53:23 +01:00
uefi-test-tools Clean up a few header guard symbols 2019-06-12 13:20:20 +02:00
vm tests/vm: python3 fixes 2019-06-12 17:53:22 +01:00
vmstate-static-checker-data
.gitignore tests/.gitignore: ignore test-qapi-emit-events.[ch] for in-tree builds 2019-03-14 16:02:13 +01:00
ac97-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
acpi-utils.c tests: acpi: add acpi_find_rsdp_address_uefi() helper 2019-05-20 18:40:02 -04:00
acpi-utils.h tests: acpi: add acpi_find_rsdp_address_uefi() helper 2019-05-20 18:40:02 -04:00
ahci-test.c ahci-test: Drop dependence on global_qtest 2019-03-12 07:40:59 +01:00
atomic64-bench.c tests: use g_usleep instead of rem = sleep(time) 2019-01-14 14:52:30 +00:00
atomic_add-bench.c tests: use g_usleep instead of rem = sleep(time) 2019-01-14 14:52:30 +00:00
benchmark-crypto-cipher.c crypto: expand algorithm coverage for cipher benchmark 2018-10-24 19:03:37 +01:00
benchmark-crypto-hash.c tests/crypto: Use the IEC binary prefix definitions 2018-07-02 15:41:17 +02:00
benchmark-crypto-hmac.c tests/crypto: Use the IEC binary prefix definitions 2018-07-02 15:41:17 +02:00
bios-tables-test-allowed-diff.h bios-tables-test: add diff allowed list 2019-05-29 18:00:58 -04:00
bios-tables-test.c bios-tables-test: ignore identical binaries 2019-06-05 15:54:15 -04:00
boot-order-test.c tests/boot-order: Make test independent of global_qtest 2019-01-22 05:14:32 +01:00
boot-sector.c
boot-sector.h
boot-serial-test.c s390-bios: Factor finding boot device out of virtio code path 2019-04-12 12:40:35 +02:00
cdrom-test.c tests/cdrom-test: only include isapc cdrom test when g_test_slow() 2019-02-22 09:32:32 +00:00
check-block-qdict.c tests: fix crumple/recursive leak 2018-08-15 08:12:19 +02:00
check-block.sh qemu-iotests: convert pwd and $(pwd) to $PWD 2018-11-19 10:08:19 -06:00
check-qdict.c tests: Move qdict-test-data.txt to tests/data/qobject/ 2019-03-07 22:05:54 +01:00
check-qjson.c json: Fix % handling when not interpolating 2019-01-24 15:20:59 +01:00
check-qlist.c
check-qlit.c
check-qnull.c
check-qnum.c
check-qobject.c qstring: Move qstring_from_substr()'s @end one to the right 2018-07-28 09:09:58 +02:00
check-qom-interface.c qom: make interface types abstract 2018-12-11 15:45:22 -02:00
check-qom-proplist.c tests/qom-proplist: check class properties iterator 2018-10-05 16:27:09 +04:00
check-qstring.c qstring: Move qstring_from_substr()'s @end one to the right 2018-07-28 09:09:58 +02:00
cpu-plug-test.c hw/i386: Remove deprecated machines pc-0.10 and pc-0.11 2018-12-20 11:19:12 -05:00
crypto-tls-psk-helpers.c crypto: Implement TLS Pre-Shared Keys (PSK). 2018-07-03 13:04:38 +01:00
crypto-tls-psk-helpers.h Supply missing header guards 2019-06-12 13:20:21 +02:00
crypto-tls-x509-helpers.c tests: call qcrypto_init instead of gnutls_global_init 2018-07-24 17:33:39 +01:00
crypto-tls-x509-helpers.h Supply missing header guards 2019-06-12 13:20:21 +02:00
device-introspect-test.c tests/device-introspect: Use qtest_init() instead of qtest_start() 2019-05-21 10:00:41 +02:00
device-plug-test.c tests/device-plug: Add PHB unplug request test for spapr 2019-02-26 09:21:25 +11:00
display-vga-test.c tests/display-vga: Enable virtio-vga test 2019-01-11 11:45:00 +01:00
drive_del-test.c tests/drive_del-test: Use qtest_init() instead of qtest_start() 2019-05-08 17:45:54 +02:00
ds1338-test.c libqos: i2c: move address into QI2CDevice 2019-06-03 14:03:02 +02:00
e1000-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
e1000e-test.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
eepro100-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
endianness-test.c tests/endianesss: Make test independent of global_qtest 2019-01-22 05:14:32 +01:00
es1370-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
fdc-test.c tests: Remove (mostly) useless architecture checks 2019-03-06 10:10:36 +01:00
fw_cfg-test.c tests: fw_cfg: add 'splash-time' test case 2019-05-23 14:10:31 +02:00
hd-geo-test.c tests/hd-geo-test: Use qtest_init() instead of qtest_start() 2019-05-21 10:00:46 +02:00
hexloader-test.c tests/hexloader-test: Don't pass -nographic to the QEMU under test 2019-01-22 06:26:32 +01:00
i440fx-test.c tests/libqos: rename qpci_init_pc and qpci_init_spapr functions 2019-03-07 16:50:04 +01:00
i82801b11-test.c
ide-test.c tests/ide-test: Make test independent of global_qtest 2019-05-08 16:59:28 +02:00
intel-hda-test.c
io-channel-helpers.c
io-channel-helpers.h Normalize position of header guard 2019-06-12 13:20:20 +02:00
ioh3420-test.c
iothread.c
iothread.h
ipmi-bt-test.c tests: Remove (mostly) useless architecture checks 2019-03-06 10:10:36 +01:00
ipmi-kcs-test.c tests: Remove (mostly) useless architecture checks 2019-03-06 10:10:36 +01:00
ipoctal232-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
ivshmem-test.c tests: qpci_unplug_acpi_device_test() should not rely on global_qtest 2019-05-08 17:45:54 +02:00
libqtest.c qemu-common: Move qemu_isalnum() etc. to qemu/ctype.h 2019-06-11 20:22:09 +02:00
libqtest.h migration-test: Add a test for fd protocol 2019-06-05 12:44:03 +02:00
m25p80-test.c libqtest: Replace qtest_startf() by qtest_initf() 2018-08-16 08:42:06 +02:00
m48t59-test.c tests: Do not use "\n" in g_test_message() strings 2019-03-07 22:16:22 +01:00
machine-none-test.c tests/machine-none: Make test independent of global_qtest 2018-12-17 15:36:40 +01:00
Makefile.include tests/qapi-schema: Error case tests for features in structs 2019-06-12 18:35:26 +02:00
megasas-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
microbit-test.c tests/microbit-test: Add tests for nRF51 NVMC 2019-02-01 15:32:17 +00:00
migration-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
ne2000-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
numa-test.c tests/numa-test: Use qtest_init() instead of qtest_start() 2019-05-21 10:00:32 +02:00
nvme-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
pca9552-test.c libqos: i2c: move address into QI2CDevice 2019-06-03 14:03:02 +02:00
pci-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
pcnet-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
pkix_asn1_tab.c
pnv-xscom-test.c ppc/pnv: activate XSCOM tests for POWER9 2019-03-12 14:33:05 +11:00
prom-env-test.c Suppress test warnings about missing Spectre/Meltdown mitigations with TCG 2019-03-12 16:07:14 +11:00
ptimer-test-stubs.c qemu-timer: introduce timer attributes 2018-10-19 13:44:03 +02:00
ptimer-test.c ptimer: Add TRIGGER_ONLY_ON_DECREMENT policy option 2018-07-09 14:51:34 +01:00
ptimer-test.h
pvpanic-test.c tests/pvpanic: Make the pvpanic test independent of global_qtest 2018-12-17 15:36:40 +01:00
pxe-test.c Suppress test warnings about missing Spectre/Meltdown mitigations with TCG 2019-03-12 16:07:14 +11:00
q35-test.c tests/q35-test: Make test independent of global_qtest 2019-05-21 10:00:27 +02:00
qemu-iotests-quick.sh
qht-bench.c tests: use g_usleep instead of rem = sleep(time) 2019-01-14 14:52:30 +00:00
qmp-cmd-test.c tests/qmp-cmd-test: Use qtest_init() instead of qtest_start() 2019-05-08 16:59:28 +02:00
qmp-test.c Revert "tests: Add parameter to qtest_init_without_qmp_handshake" 2018-12-12 10:28:27 +01:00
qom-test.c tests/qom-test: Use qtest_init() instead of qtest_start() 2019-05-21 10:00:37 +02:00
qos-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
rcutorture.c
requirements.txt BootLinuxSshTest: Test some userspace commands on Malta 2019-05-26 17:45:02 +02:00
rtas-test.c tests/libqos: embed allocators instead of malloc-ing them separately 2019-03-07 17:28:07 +01:00
rtc-test.c tests: Do not use "\n" in g_test_message() strings 2019-03-07 22:16:22 +01:00
rtl8139-test.c - qtest fixes 2019-03-08 16:31:34 +00:00
sdhci-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
socket-helpers.c
socket-helpers.h Supply missing header guards 2019-06-12 13:20:21 +02:00
spapr-phb-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
tco-test.c tests/tco: Make test independent of global_qtest 2019-05-08 16:59:28 +02:00
test-aio-multithread.c tests: Do not use "\n" in g_test_message() strings 2019-03-07 22:16:22 +01:00
test-aio.c
test-arm-mptimer.c tests/test-arm-mptimer: Don't leak string memory 2018-12-14 13:30:54 +00:00
test-authz-list.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-authz-listfile.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-authz-pam.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-authz-simple.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-base64.c
test-bdrv-drain.c test-bdrv-drain: Use bdrv_try_set_aio_context() 2019-06-04 16:55:58 +02:00
test-bdrv-graph-mod.c block: Add BlockBackend.ctx 2019-06-04 15:22:22 +02:00
test-bitcnt.c
test-bitops.c
test-block-backend.c block: Add BlockBackend.ctx 2019-06-04 15:22:22 +02:00
test-block-iothread.c block: Move node without parents to main AioContext 2019-06-04 15:22:22 +02:00
test-blockjob-txn.c tests/test-blockjob-txn: move .exit to .clean 2018-09-25 15:31:15 +02:00
test-blockjob.c block: Add BlockBackend.ctx 2019-06-04 15:22:22 +02:00
test-bufferiszero.c
test-char.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-clone-visitor.c tests: Rename UserDefNativeListUnion to UserDefListUnion 2019-03-05 14:43:11 +01:00
test-coroutine.c tests: Do not use "\n" in g_test_message() strings 2019-03-07 22:16:22 +01:00
test-crypto-afsplit.c
test-crypto-block.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-crypto-cipher.c
test-crypto-hash.c
test-crypto-hmac.c
test-crypto-ivgen.c
test-crypto-pbkdf.c test: execute g_test_run when tests are skipped 2019-01-11 13:57:25 +01:00
test-crypto-secret.c
test-crypto-tlscredsx509.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-crypto-tlssession.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-crypto-xts.c crypto: add testing for unaligned buffers with XTS cipher mode 2018-10-24 19:03:37 +01:00
test-cutils.c cutils: Fix qemu_strtosz() & friends to reject non-finite sizes 2018-12-13 19:10:06 +01:00
test-filter-mirror.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
test-filter-redirector.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
test-hbitmap.c Revert "hbitmap: Add @advance param to hbitmap_iter_next()" 2019-01-15 18:26:50 -05:00
test-hmp.c tests/test-hmp: Use qtest_init() instead of qtest_start() 2019-05-08 16:59:28 +02:00
test-image-locking.c tests: Add unit tests for image locking 2018-11-12 17:46:57 +01:00
test-int128.c
test-io-channel-buffer.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-channel-command.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-channel-file.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-channel-socket.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-channel-tls.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-io-task.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-iov.c
test-keyval.c hw: Use IEC binary prefix definitions from "qemu/units.h" 2018-07-02 15:41:10 +02:00
test-logging.c
test-mul64.c
test-netfilter.c
test-opts-visitor.c
test-qapi-util.c
test-qdev-global-props.c qdev: all globals are now user-provided 2019-01-07 16:18:42 +04:00
test-qdist.c
test-qemu-opts.c hw: Use IEC binary prefix definitions from "qemu/units.h" 2018-07-02 15:41:10 +02:00
test-qga.c qmp: common 'id' handling & make QGA conform to QMP spec 2019-03-18 10:48:06 -05:00
test-qgraph.c tests: test-qgraph: fix a memory leak 2019-03-11 16:33:49 +01:00
test-qht-par.c
test-qht.c qht: drop ht argument from qht iterators 2018-09-26 08:55:54 -07:00
test-qmp-cmds.c tests/qapi-schema: Test for good feature lists in structs 2019-06-12 18:35:17 +02:00
test-qmp-event.c qapi: Generate QAPIEvent stuff into separate files 2019-02-18 14:44:04 +01:00
test-qobject-input-visitor.c tests: Rename UserDefNativeListUnion to UserDefListUnion 2019-03-05 14:43:11 +01:00
test-qobject-output-visitor.c tests: Rename UserDefNativeListUnion to UserDefListUnion 2019-03-05 14:43:11 +01:00
test-rcu-list.c qemu/queue.h: leave head structs anonymous unless necessary 2019-01-11 15:46:55 +01:00
test-rcu-simpleq.c tests: add test-list-simpleq 2018-08-23 18:46:25 +02:00
test-rcu-tailq.c tests: add test-rcu-tailq 2018-08-23 18:46:25 +02:00
test-replication.c test-replication: Lock AioContext around blk_unref() 2018-10-01 19:13:55 +02:00
test-shift128.c
test-string-input-visitor.c test-string-input-visitor: Add range overflow tests 2018-12-13 19:10:06 +01:00
test-string-output-visitor.c
test-thread-pool.c test-thread-pool: be more reliable 2019-06-03 14:03:00 +02:00
test-throttle.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-timed-average.c
test-util-filemonitor.c filemon: fix watch IDs to avoid potential wraparound issues 2019-04-02 13:52:02 +01:00
test-util-sockets.c qemu-print: New qemu_printf(), qemu_vprintf() etc. 2019-04-18 22:18:59 +02:00
test-uuid.c
test-visitor-serialization.c
test-vmstate.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
test-write-threshold.c
test-x86-cpuid-compat.c build-sys: remove glib_subprocess check 2018-08-23 18:46:25 +02:00
test-x86-cpuid.c
test-xbzrle.c
tmp105-test.c libqos: i2c: move address into QI2CDevice 2019-06-03 14:03:02 +02:00
tpm-crb-swtpm-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
tpm-crb-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
tpm-emu.c tests: Fix signalling race condition in TPM tests 2018-09-07 16:37:47 -04:00
tpm-emu.h Clean up decorations and whitespace around header guards 2019-05-13 08:58:55 +02:00
tpm-tests.c tests/tpm-tests: Use g_test_skip() to mark skipped tests 2019-05-08 16:59:28 +02:00
tpm-tests.h
tpm-tis-swtpm-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
tpm-tis-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
tpm-util.c tests/tpm: Display if swtpm is not found or --tpm2 not supported 2018-10-30 13:53:15 -04:00
tpm-util.h Clean up includes 2018-12-20 10:29:08 +01:00
usb-hcd-ehci-test.c tests/libqos: rename qpci_init_pc and qpci_init_spapr functions 2019-03-07 16:50:04 +01:00
usb-hcd-ohci-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
usb-hcd-uhci-test.c tests: Clean up string interpolation around qtest_qmp_device_add() 2018-08-16 08:42:06 +02:00
usb-hcd-xhci-test.c tests: Clean up string interpolation around qtest_qmp_device_add() 2018-08-16 08:42:06 +02:00
vhost-user-bridge.c qemu-common: Move qemu_isalnum() etc. to qemu/ctype.h 2019-06-11 20:22:09 +02:00
vhost-user-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-9p-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-blk-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-ccw-test.c tests: virtio: separate ccw tests from libqos 2018-08-23 13:32:50 +02:00
virtio-net-test.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
virtio-rng-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-scsi-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-serial-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
virtio-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
vmgenid-test.c tests: acpi: make acpi_fetch_table() take size of fetched table pointer 2019-05-20 18:40:02 -04:00
vmxnet3-test.c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
wdt_ib700-test.c