xemu/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 tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qdict.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qjson.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qlist.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qlit.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qnull.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qnum.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qobject.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qom-interface.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
check-qom-proplist.c tests: convert check-qom-proplist to keyval 2021-03-19 10:18:17 +01:00
check-qstring.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
crypto-tls-psk-helpers.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
crypto-tls-psk-helpers.h tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
crypto-tls-x509-helpers.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
crypto-tls-x509-helpers.h tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
io-channel-helpers.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
io-channel-helpers.h tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
iothread.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
iothread.h tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
meson.build tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
pkix_asn1_tab.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
ptimer-test-stubs.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
ptimer-test.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
ptimer-test.h tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
rcutorture.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
socket-helpers.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
socket-helpers.h tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-aio-multithread.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-aio.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-authz-list.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-authz-listfile.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-authz-pam.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-authz-simple.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-base64.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-bdrv-drain.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-bdrv-graph-mod.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-bitcnt.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-bitmap.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-bitops.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-block-backend.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
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 tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-blockjob.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-bufferiszero.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-char.c char: Deprecate backend aliases 'tty' and 'parport' 2021-03-19 10:18:06 +01:00
test-clone-visitor.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-coroutine.c test-coroutine: Add rwlock downgrade test 2021-03-31 10:44:21 +01:00
test-crypto-afsplit.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-block.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-cipher.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-hash.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-hmac.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-ivgen.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-pbkdf.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-secret.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-tlscredsx509.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-tlssession.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-crypto-xts.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-cutils.c utils: Work around mingw strto*l bug with 0x 2021-03-24 14:25:41 +00:00
test-fdmon-epoll.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-hbitmap.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-image-locking.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-int128.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-io-channel-buffer.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-io-channel-command.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-io-channel-file.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-io-channel-socket.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-io-channel-tls.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-io-task.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-iov.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-keyval.c * Move unit and bench tests into separate directories 2021-03-14 15:13:53 +00:00
test-logging.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-mul64.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-opts-visitor.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-qapi-util.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-qdev-global-props.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-qdist.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-qemu-opts.c * Move unit and bench tests into separate directories 2021-03-14 15:13:53 +00:00
test-qga.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-qgraph.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-qht.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
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 tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-qobject-output-visitor.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-rcu-list.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-rcu-simpleq.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-rcu-slist.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-rcu-tailq.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-replication.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-shift128.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-string-input-visitor.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-string-output-visitor.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-thread-pool.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-throttle.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-timed-average.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-util-filemonitor.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-util-sockets.c test-util-sockets: Add stub for monitor_set_cur() 2021-03-19 16:05:11 +01:00
test-uuid.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-visitor-serialization.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-vmstate.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-write-threshold.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-x86-cpuid.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00
test-xbzrle.c tests: Move unit tests into a separate directory 2021-03-12 15:46:30 +01:00