qemu-cr16/tests/unit
Roman Penyaev c9c05ed525 tests/unit/test-char: add unit tests for hub chardev backend
This commit introduces a new test function `char_hub_test` to validate
the functionality and constraints of the "hub" chardev backend in QEMU.
The test includes multiple scenarios:

1. Invalid hub creation:
   - Creating a hub without defining `chardevs.N` (expects an error).
   - Creating a hub with an embedded multiplexer (`mux=on`) or a chardev
     already in use (expects errors).

2. Max backend limit:
   - Ensures the hub does not accept more backends than the maximum
     allowed, with appropriate error handling.

3. Valid hub creation and data aggregation:
   - Successfully creating a hub with two ring buffer backends.
   - Verifying data aggregation from backends to a frontend and vice versa.
   - Ensuring correct error handling for attempts to attach a hub multiple
     times or remove busy chardevs.

4. Extended EAGAIN simulation (non-Windows only):
   - Simulates a setup with three backends, including a pipe, to test
     EAGAIN handling and watcher behavior.
   - Verifies data flow and recovery in scenarios involving buffer
     overflows and drained pipes.

The test also ensures correct cleanup of chardevs in all cases, covering
both valid and invalid configurations.

Signed-off-by: Roman Penyaev <r.peniaev@gmail.com>
Reviewed-by: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org
Message-ID: <20250123085327.965501-4-r.peniaev@gmail.com>
2025-02-03 13:57:08 +04:00
..
check-block-qdict.c
check-qdict.c
check-qjson.c
check-qlist.c
check-qlit.c
check-qnull.c
check-qnum.c
check-qobject.c
check-qom-interface.c
check-qom-proplist.c tests: Explicitly create containers in test_qom_partial_path() 2024-12-20 17:44:55 +01:00
check-qstring.c
crypto-tls-psk-helpers.c crypto: Remove 'crypto-tls-x509-helpers.h' from crypto-tls-psk-helpers.c 2024-07-24 10:39:10 +01:00
crypto-tls-psk-helpers.h
crypto-tls-x509-helpers.c tests/unit/crypto-tls-x509-helpers: deinit privkey in test_tls_cleanup 2024-09-03 16:24:34 -03:00
crypto-tls-x509-helpers.h tests/qtest/migration-test: Free QCRyptoTLSTestCertReq objects 2024-09-03 16:24:34 -03:00
io-channel-helpers.c
io-channel-helpers.h
iothread.c
iothread.h
meson.build tests/unit: remove block layer code from test-nested-aio-poll 2024-10-02 12:58:46 +02:00
pkix_asn1_tab.c.inc crypto: Restrict pkix_asn1_tab[] to crypto-tls-x509-helpers.c 2024-07-24 10:39:10 +01:00
ptimer-test-stubs.c
ptimer-test.c hw/core/ptimer: fix timer zero period condition for freq > 1GHz 2024-08-12 11:40:16 +01:00
ptimer-test.h
rcutorture.c
socket-helpers.c tests/unit/socket-helpers: Don't close(-1) 2024-03-25 10:41:00 +00:00
socket-helpers.h
test-aio-multithread.c
test-aio.c tests: remove aio_context_acquire() tests 2023-12-21 22:49:27 +01:00
test-authz-list.c
test-authz-listfile.c
test-authz-pam.c
test-authz-simple.c
test-base64.c
test-bdrv-drain.c include: Include missing 'qemu/clang-tsa.h' header 2024-12-20 17:44:57 +01:00
test-bdrv-graph-mod.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-bitcnt.c
test-bitmap.c
test-bitops.c
test-block-backend.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-block-iothread.c include: Include missing 'qemu/clang-tsa.h' header 2024-12-20 17:44:57 +01:00
test-blockjob-txn.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-blockjob.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-bufferiszero.c
test-char.c tests/unit/test-char: add unit tests for hub chardev backend 2025-02-03 13:57:08 +04:00
test-clone-visitor.c
test-coroutine.c tests/coroutine: Clean up global variable shadowing 2023-10-27 09:39:08 +02:00
test-crypto-afsplit.c qapi/crypto: Rename QCryptoHashAlgorithm to *Algo, and drop prefix 2024-09-10 14:02:16 +02:00
test-crypto-akcipher.c qapi/crypto: Rename QCryptoRSAPaddingAlgorithm to *Algo, and drop prefix 2024-09-10 14:03:30 +02:00
test-crypto-block.c qapi/crypto: Rename QCryptoIVGenAlgorithm to *Algo, and drop prefix 2024-09-10 14:03:30 +02:00
test-crypto-cipher.c qapi/crypto: Rename QCryptoCipherAlgorithm to *Algo, and drop prefix 2024-09-10 14:03:30 +02:00
test-crypto-der.c
test-crypto-hash.c crypto: Introduce SM3 hash hmac pbkdf algorithm 2024-11-05 18:37:18 +00:00
test-crypto-hmac.c crypto: Introduce SM3 hash hmac pbkdf algorithm 2024-11-05 18:37:18 +00:00
test-crypto-ivgen.c qapi/crypto: Rename QCryptoIVGenAlgorithm to *Algo, and drop prefix 2024-09-10 14:03:30 +02:00
test-crypto-pbkdf.c crypto: Introduce SM3 hash hmac pbkdf algorithm 2024-11-05 18:37:18 +00:00
test-crypto-secret.c
test-crypto-tlscredsx509.c
test-crypto-tlssession.c crypto: propagate errors from TLS session I/O callbacks 2024-07-24 10:39:10 +01:00
test-crypto-xts.c
test-cutils.c
test-div128.c
test-error-report.c
test-fifo.c tests/unit: Comment FIFO8 tests 2024-09-13 20:11:13 +02:00
test-forward-visitor.c
test-hbitmap.c
test-image-locking.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-int128.c
test-interval-tree.c
test-io-channel-buffer.c
test-io-channel-command.c
test-io-channel-file.c
test-io-channel-null.c
test-io-channel-socket.c tests/unit: Add a assert for test_io_channel_unix_listen_cleanup 2024-10-10 13:41:45 +01:00
test-io-channel-tls.c
test-io-task.c tests/unit/test-io-task: Rename "qemu:dummy" to avoid colon in the name 2023-12-20 10:29:23 +01:00
test-iov.c tests/unit/test-iov: Fix timeout problem on NetBSD and OpenBSD 2024-01-23 15:25:45 +01:00
test-keyval.c
test-logging.c
test-mul64.c
test-nested-aio-poll.c tests/unit: Remove debug statements in test-nested-aio-poll.c 2024-04-25 15:15:25 +02:00
test-opts-visitor.c
test-qapi-util.c
test-qdev-global-props.c Accel & Exec patch queue 2024-12-21 11:07:00 -05:00
test-qdist.c
test-qemu-opts.c
test-qga.c tests/unit/test-qga: do not qualify executable paths 2024-01-30 12:11:35 +02:00
test-qgraph.c
test-qht.c
test-qmp-cmds.c
test-qmp-event.c tests/unit/test-qmp-event: Replace fixture by global variables 2023-12-20 10:29:23 +01:00
test-qobject-input-visitor.c tests/qapi-schema: Drop temporary 'prefix' 2024-09-10 13:22:47 +02:00
test-qobject-output-visitor.c tests/qapi-schema: Drop temporary 'prefix' 2024-09-10 13:22:47 +02:00
test-qtree.c
test-rcu-list.c
test-rcu-simpleq.c
test-rcu-slist.c
test-rcu-tailq.c
test-replication.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-resv-mem.c test-resv-mem: Fix CID 1523911 2023-11-13 11:35:47 +01:00
test-seccomp.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-shift128.c
test-smp-parse.c tests/unit/test-smp-parse: Test the full 8-levels topology hierarchy 2024-06-12 12:10:57 +02:00
test-string-input-visitor.c
test-string-output-visitor.c
test-thread-pool.c
test-throttle.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-timed-average.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
test-util-filemonitor.c test-util-filemonitor: Adapt to the FreeBSD inotify rename semantics 2024-02-06 10:27:50 +01:00
test-util-sockets.c tests/unit/test-util-sockets: Remove temporary file after test 2024-03-01 08:27:33 +01:00
test-uuid.c util/uuid: Add UUID_STR_LEN definition 2023-11-03 09:20:31 +01:00
test-virtio-dmabuf.c hw/display: introduce virtio-dmabuf 2023-10-04 18:15:06 -04:00
test-visitor-serialization.c
test-vmstate.c migration: remove migration.h references 2024-03-11 16:28:59 -04:00
test-write-threshold.c
test-x86-topo.c tests: Add test case of APIC ID for module level parsing 2024-05-22 19:43:29 +02:00
test-xbzrle.c
test-xs-node.c tests/unit: replace assert(0) with g_assert_not_reached() 2024-09-17 10:50:39 +02:00
test-yank.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00