qemu/tests/unit
David Edmondson b6489ac066 test-coroutine: Add rwlock downgrade test
Test that downgrading an rwlock does not result in a failure to
schedule coroutines queued on the rwlock.

The diagram associated with test_co_rwlock_downgrade() describes the
intended behaviour, but what was observed previously corresponds to:

| c1     | c2         | c3         | c4       |
|--------+------------+------------+----------|
| rdlock |            |            |          |
| yield  |            |            |          |
|        | wrlock     |            |          |
|        | <queued>   |            |          |
|        |            | rdlock     |          |
|        |            | <queued>   |          |
|        |            |            | wrlock   |
|        |            |            | <queued> |
| unlock |            |            |          |
| yield  |            |            |          |
|        | <dequeued> |            |          |
|        | downgrade  |            |          |
|        | ...        |            |          |
|        | unlock     |            |          |
|        |            | <dequeued> |          |
|        |            | <queued>   |          |

This results in a failure...

ERROR:../tests/test-coroutine.c:369:test_co_rwlock_downgrade: assertion failed: (c3_done)
Bail out! ERROR:../tests/test-coroutine.c:369:test_co_rwlock_downgrade: assertion failed: (c3_done)

...as a result of the c3 coroutine failing to run to completion.

Signed-off-by: David Edmondson <david.edmondson@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 20210325112941.365238-7-pbonzini@redhat.com
Message-Id: <20210309144015.557477-5-david.edmondson@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2021-03-31 10:44:21 +01: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: convert check-qom-proplist to keyval 2021-03-19 10:18:17 +01:00
check-qstring.c
crypto-tls-psk-helpers.c
crypto-tls-psk-helpers.h
crypto-tls-x509-helpers.c
crypto-tls-x509-helpers.h
io-channel-helpers.c
io-channel-helpers.h
iothread.c
iothread.h
meson.build
pkix_asn1_tab.c
ptimer-test-stubs.c
ptimer-test.c
ptimer-test.h
rcutorture.c
socket-helpers.c
socket-helpers.h
test-aio-multithread.c
test-aio.c
test-authz-list.c
test-authz-listfile.c
test-authz-pam.c
test-authz-simple.c
test-base64.c
test-bdrv-drain.c
test-bdrv-graph-mod.c
test-bitcnt.c
test-bitmap.c
test-bitops.c
test-block-backend.c
test-block-iothread.c tests/unit/test-block-iothread: fix maybe-uninitialized error on GCC 11 2021-03-20 06:17:09 +01:00
test-blockjob-txn.c
test-blockjob.c
test-bufferiszero.c
test-char.c char: Deprecate backend aliases 'tty' and 'parport' 2021-03-19 10:18:06 +01:00
test-clone-visitor.c
test-coroutine.c test-coroutine: Add rwlock downgrade test 2021-03-31 10:44:21 +01:00
test-crypto-afsplit.c
test-crypto-block.c
test-crypto-cipher.c
test-crypto-hash.c
test-crypto-hmac.c
test-crypto-ivgen.c
test-crypto-pbkdf.c
test-crypto-secret.c
test-crypto-tlscredsx509.c
test-crypto-tlssession.c
test-crypto-xts.c
test-cutils.c utils: Work around mingw strto*l bug with 0x 2021-03-24 14:25:41 +00:00
test-fdmon-epoll.c
test-hbitmap.c
test-image-locking.c
test-int128.c
test-io-channel-buffer.c
test-io-channel-command.c
test-io-channel-file.c
test-io-channel-socket.c
test-io-channel-tls.c
test-io-task.c
test-iov.c
test-keyval.c
test-logging.c
test-mul64.c
test-opts-visitor.c
test-qapi-util.c
test-qdev-global-props.c
test-qdist.c
test-qemu-opts.c
test-qga.c
test-qgraph.c
test-qht.c
test-qmp-cmds.c qapi: Enforce command naming rules 2021-03-23 22:31:05 +01:00
test-qmp-event.c qapi: Enforce event naming rules 2021-03-23 22:31:05 +01:00
test-qobject-input-visitor.c
test-qobject-output-visitor.c
test-rcu-list.c
test-rcu-simpleq.c
test-rcu-slist.c
test-rcu-tailq.c
test-replication.c
test-shift128.c
test-string-input-visitor.c
test-string-output-visitor.c
test-thread-pool.c
test-throttle.c
test-timed-average.c
test-util-filemonitor.c
test-util-sockets.c test-util-sockets: Add stub for monitor_set_cur() 2021-03-19 16:05:11 +01:00
test-uuid.c
test-visitor-serialization.c
test-vmstate.c
test-write-threshold.c
test-x86-cpuid.c
test-xbzrle.c