qemu/tests
John Snow 0ec4dfb8d6 blockjobs: add block_job_verb permission table
Which commands ("verbs") are appropriate for jobs in which state is
also somewhat burdensome to keep track of.

As of this commit, it looks rather useless, but begins to look more
interesting the more states we add to the STM table.

A recurring theme is that no verb will apply to an 'undefined' job.

Further, it's not presently possible to restrict the "pause" or "resume"
verbs any more than they are in this commit because of the asynchronous
nature of how jobs enter the PAUSED state; justifications for some
seemingly erroneous applications are given below.

=====
Verbs
=====

Cancel:    Any state except undefined.
Pause:     Any state except undefined;
           'created': Requests that the job pauses as it starts.
           'running': Normal usage. (PAUSED)
           'paused':  The job may be paused for internal reasons,
                      but the user may wish to force an indefinite
                      user-pause, so this is allowed.
           'ready':   Normal usage. (STANDBY)
           'standby': Same logic as above.
Resume:    Any state except undefined;
           'created': Will lift a user's pause-on-start request.
           'running': Will lift a pause request before it takes effect.
           'paused':  Normal usage.
           'ready':   Will lift a pause request before it takes effect.
           'standby': Normal usage.
Set-speed: Any state except undefined, though ready may not be meaningful.
Complete:  Only a 'ready' job may accept a complete request.

=======
Changes
=======

(1)

To facilitate "nice" error checking, all five major block-job verb
interfaces in blockjob.c now support an errp parameter:

- block_job_user_cancel is added as a new interface.
- block_job_user_pause gains an errp paramter
- block_job_user_resume gains an errp parameter
- block_job_set_speed already had an errp parameter.
- block_job_complete already had an errp parameter.

(2)

block-job-pause and block-job-resume will no longer no-op when trying
to pause an already paused job, or trying to resume a job that isn't
paused. These functions will now report that they did not perform the
action requested because it was not possible.

iotests have been adjusted to address this new behavior.

(3)

block-job-complete doesn't worry about checking !block_job_started,
because the permission table guards against this.

(4)

test-bdrv-drain's job implementation needs to announce that it is
'ready' now, in order to be completed.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2018-03-19 12:01:24 +01:00
..
acpi-test-data acpi-test: update FADT 2018-02-13 18:25:48 +02:00
data test-qga: add test for guest-get-osinfo 2017-07-18 05:49:01 -05:00
decode scripts: Add decodetree.py 2018-02-22 15:44:07 -08:00
docker tests: make docker-test-debug@fedora run sanitizers 2018-03-13 01:19:56 +08:00
guest-debug tests/guest-debug: introduce basic gdbstub tests 2015-12-17 13:37:15 +00:00
image-fuzzer tests: Use Python 2.6 "except E as ..." syntax 2016-02-08 17:29:54 +01:00
keys tests: Add a test key pair 2017-09-22 10:46:25 +08:00
libqos tests/libqos: Check for valid dev pointer when looking for PCI devices 2018-03-05 09:03:17 +00:00
migration tests/migration: Add source to PC boot block 2018-02-14 10:26:21 +00:00
multiboot tests/multiboot: Fix whitespace failure 2017-08-11 13:23:19 +02:00
qapi-schema qapi: Record 'include' directives in intermediate representation 2018-03-02 13:14:10 -06:00
qemu-iotests iotests: add pause_wait 2018-03-19 12:01:24 +01:00
rocker tests: Avoid non-portable 'echo -ARG' 2017-07-11 17:45:00 +02:00
tcg maint: Fix macros with broken 'do/while(0); ' usage 2018-01-16 14:54:52 +01:00
vm docs: Add docs/devel/testing.rst 2018-02-08 09:23:07 +08:00
vmstate-static-checker-data tests: vmstate static checker: add size mismatch inside substructure 2014-06-23 19:14:52 +02:00
.gitignore sockets: move fd_is_socket() into common sockets code 2018-03-13 18:06:06 +00:00
ac97-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
acpi-utils.c tests: Move reusable ACPI code into a utility file 2017-03-02 07:14:27 +02:00
acpi-utils.h maint: Fix macros with broken 'do/while(0); ' usage 2018-01-16 14:54:52 +01:00
ahci-test.c ahci-test: fix opts leak of skip tests 2018-03-06 14:01:27 +01:00
atomic_add-bench.c tests: add atomic_add-bench 2016-10-26 08:29:01 -07:00
benchmark-crypto-cipher.c tests: fix incorrect size_t format in benchmark-crypto 2017-09-04 10:45:19 +01:00
benchmark-crypto-hash.c tests: fix incorrect size_t format in benchmark-crypto 2017-09-04 10:45:19 +01:00
benchmark-crypto-hmac.c tests: fix incorrect size_t format in benchmark-crypto 2017-09-04 10:45:19 +01:00
bios-tables-test.c tests/boot-sector: Drop dependence on global_qtest 2018-02-14 11:43:41 +01:00
boot-order-test.c libqos: Use explicit QTestState for fw_cfg operations 2018-02-14 11:43:41 +01:00
boot-sector.c tests/boot-sector: Drop dependence on global_qtest 2018-02-14 11:43:41 +01:00
boot-sector.h tests/boot-sector: Drop dependence on global_qtest 2018-02-14 11:43:41 +01:00
boot-serial-test.c tests/boot-serial-test: Fix problem with timeout due to dropped characters 2018-02-16 10:15:48 +00:00
check-block.sh tests: allow to specify list of formats to test for check-block.sh 2016-09-23 13:36:09 +02:00
check-qdict.c qdict: Introduce qdict_rename_keys() 2018-03-09 15:17:47 +01:00
check-qjson.c Include qapi/qmp/qstring.h exactly where needed 2018-02-09 13:52:15 +01:00
check-qlist.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
check-qlit.c Include qapi/qmp/qnum.h exactly where needed 2018-02-09 13:52:15 +01:00
check-qnull.c qapi/qnull: Add own header 2017-11-17 18:21:30 +01:00
check-qnum.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
check-qobject.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
check-qom-interface.c tests: fix check-qom-interface leaks 2016-09-08 17:57:32 +04:00
check-qom-proplist.c qapi: drop the sentinel in enum array 2017-09-04 13:09:13 +02:00
check-qstring.c tests: remove /{qnum, qlist, dict}/destroy test 2017-06-20 14:31:31 +02:00
cpu-plug-test.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
crypto-tls-x509-helpers.c crypto: fix test cert generation to not use SHA1 algorithm 2017-09-04 10:45:19 +01:00
crypto-tls-x509-helpers.h clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
device-introspect-test.c Include qapi/qmp/qbool.h exactly where needed 2018-02-09 13:52:15 +01:00
display-vga-test.c qtest: add display-vga-test to ppc64 2017-01-31 10:10:13 +11:00
drive_del-test.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
ds1338-test.c libqos: Use explicit QTestState for i2c operations 2018-02-14 11:43:41 +01:00
e1000-test.c tests: fix e1000-test leak 2017-03-01 11:51:28 +04:00
e1000e-test.c libqos: Use explicit QTestState for fw_cfg operations 2018-02-14 11:43:41 +01:00
eepro100-test.c tests: fix eepro100-test leak 2017-03-01 11:51:05 +04:00
endianness-test.c libqtest: Add qtest_[v]startf() 2017-10-20 13:32:10 +02:00
es1370-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
fdc-test.c fdc-test: Avoid deprecated 'change' command 2017-05-09 09:14:40 +02:00
fw_cfg-test.c libqos: Use explicit QTestState for fw_cfg operations 2018-02-14 11:43:41 +01:00
hd-geo-test.c tests: fix hd-geo-test leaks 2017-03-01 11:51:04 +04:00
i440fx-test.c libqos: Track QTestState with QPCIBus 2018-02-14 11:43:02 +01:00
i82801b11-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
ide-test.c libqos: Use explicit QTestState for fw_cfg operations 2018-02-14 11:43:41 +01:00
intel-hda-test.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
io-channel-helpers.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
io-channel-helpers.h io: add QIOChannelSocket class 2015-12-18 12:18:31 +00:00
ioh3420-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
iothread.c aio: introduce aio_co_schedule and aio_co_wake 2017-02-21 11:14:07 +00:00
iothread.h aio: introduce aio_co_schedule and aio_co_wake 2017-02-21 11:14:07 +00:00
ipmi-bt-test.c libqtest: Add qtest_[v]startf() 2017-10-20 13:32:10 +02:00
ipmi-kcs-test.c tests: fix ipmi-kcs-test leak 2017-03-01 11:51:05 +04:00
ipoctal232-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
ivshmem-test.c libqos: Use explicit QTestState for remaining libqos operations 2018-02-14 11:43:41 +01:00
libqtest.c libqtest: Use qemu_strtoul() 2018-02-14 10:08:41 +01:00
libqtest.h Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
m25p80-test.c libqtest: Add qtest_[v]startf() 2017-10-20 13:32:10 +02:00
m48t59-test.c tests/m48t59: Use the m48t59 test on ppc, too 2018-02-14 11:43:42 +01:00
Makefile.include sockets: move fd_is_socket() into common sockets code 2018-03-13 18:06:06 +00:00
megasas-test.c libqos: Use explicit QTestState for remaining libqos operations 2018-02-14 11:43:41 +01:00
migration-test.c tests: Silence migration-test 'bad' test 2018-03-09 17:39:25 +00:00
ne2000-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
numa-test.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
nvme-test.c tests: Use null-co:// instead of /dev/null as the dummy image 2017-05-11 11:08:40 +02:00
pcnet-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
pkix_asn1_tab.c qtest: fix make check complaint in crypto module 2016-10-19 10:09:24 +01:00
pnv-xscom-test.c ppc/pnv: fix XSCOM core addressing on POWER9 2018-01-17 09:35:24 +11:00
prom-env-test.c libqtest: Add qtest_[v]startf() 2017-10-20 13:32:10 +02:00
ptimer-test-stubs.c ptimer-test: do not link to libqemustub.a/libqemuutil.a 2017-09-19 16:19:39 +02:00
ptimer-test.c Clean up includes 2018-02-09 05:05:11 +01:00
ptimer-test.h tests: ptimer: Change the copyright comment 2016-10-24 16:26:53 +01:00
pvpanic-test.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
pxe-test.c tests/boot-sector: Drop dependence on global_qtest 2018-02-14 11:43:41 +01:00
q35-test.c libqos: Track QTestState with QPCIBus 2018-02-14 11:43:02 +01:00
qemu-iotests-quick.sh qemu-iotests: Speed up make check-block 2015-01-13 11:47:55 +00:00
qht-bench.c tcg: define CF_PARALLEL and use it for TB hashing along with CF_COUNT_MASK 2017-10-24 13:53:41 -07:00
qmp-test.c sev/i386: qmp: add query-sev-capabilities command 2018-03-13 17:36:05 +01:00
qom-test.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
rcutorture.c rcutorture: remove synchronize_rcu from readers 2018-03-12 16:12:47 +01:00
rtas-test.c libqos: Use explicit QTestState for remaining libqos operations 2018-02-14 11:43:41 +01:00
rtc-test.c rtc-test: introduce more update tests 2017-08-01 17:27:33 +02:00
rtl8139-test.c libqos: Track QTestState with QPCIBus 2018-02-14 11:43:02 +01:00
sdhci-test.c sdhci-test: fix leaks 2018-03-06 14:01:27 +01:00
socket-helpers.c sockets: strengthen test suite IP protocol availability checks 2018-03-13 18:06:06 +00:00
socket-helpers.h sockets: strengthen test suite IP protocol availability checks 2018-03-13 18:06:06 +00:00
spapr-phb-test.c spapr: Improved placement of PCI host bridges in guest memory map 2016-10-16 12:04:15 +11:00
tco-test.c libqos: Track QTestState with QPCIBus 2018-02-14 11:43:02 +01:00
test-aio-multithread.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
test-aio.c cpus: define QEMUTimerListNotifyCB for QEMU system emulation 2017-03-14 13:28:29 +01:00
test-arm-mptimer.c tests: Add tests for the ARM MPTimer 2016-10-24 16:26:54 +01:00
test-base64.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
test-bdrv-drain.c blockjobs: add block_job_verb permission table 2018-03-19 12:01:24 +01:00
test-bitcnt.c tests: New test-bitcnt 2017-01-10 08:49:59 -08:00
test-bitops.c bitops.h: Implement half-shuffle and half-unshuffle ops 2016-06-17 15:23:51 +01:00
test-block-backend.c block: test blk_aio_flush() with blk->root == NULL 2018-03-02 18:39:07 +01:00
test-blockjob-txn.c blockjobs: model single jobs as transactions 2018-03-19 12:01:24 +01:00
test-blockjob.c blockjobs: model single jobs as transactions 2018-03-19 12:01:24 +01:00
test-bufferiszero.c cutils: Add test for buffer_is_zero 2016-09-13 19:13:32 +02:00
test-char.c * Record-replay lockstep execution, log dumper and fixes (Alex, Pavel) 2018-03-16 11:05:03 +00:00
test-clone-visitor.c Eliminate qapi/qmp/types.h 2018-02-09 13:52:15 +01:00
test-coroutine.c lockable: add QemuLockable 2018-02-08 09:22:03 +08:00
test-crypto-afsplit.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-block.c tests: Run the luks tests in test-crypto-block only if encryption is available 2017-11-08 11:03:46 +00:00
test-crypto-cipher.c crypto: add 3des-ede support when using libgcrypt/nettle 2016-12-21 14:26:26 +00:00
test-crypto-hash.c crypto: fix initialization of crypto in tests 2016-10-19 10:23:55 +01:00
test-crypto-hmac.c crypto: add HMAC algorithms testcases 2016-12-22 09:24:59 +00:00
test-crypto-ivgen.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-pbkdf.c crypto: support more hash algorithms for pbkdf 2016-09-19 16:30:45 +01:00
test-crypto-secret.c crypto: remove temp files on completion of secrets test 2016-06-13 12:41:17 +01:00
test-crypto-tlscredsx509.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-tlssession.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
test-crypto-xts.c crypto: rename OUT to out in xts test to avoid clash on MinGW 2016-07-04 10:46:59 +01:00
test-cutils.c cutils: add qemu_strtoi & qemu_strtoui parsers for int/unsigned int types 2018-03-13 18:06:05 +00:00
test-filter-mirror.c libqtest: Add qtest_[v]startf() 2017-10-20 13:32:10 +02:00
test-filter-redirector.c tests/test-filter-redirector: move close() 2018-02-07 14:09:25 +01:00
test-hbitmap.c tests/hbitmap: use ARRAY_SIZE macro 2018-02-10 10:44:30 +03:00
test-hmp.c net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands 2018-03-05 10:30:15 +08:00
test-int128.c int128: Use __int128 if available 2016-10-26 08:29:00 -07:00
test-io-channel-buffer.c tests: Clean up includes 2016-02-16 14:29:27 +00:00
test-io-channel-command.c tests: fix leaks in test-io-channel-command 2017-03-01 00:09:28 +04:00
test-io-channel-file.c io: Fix QIOChannelFile when creating and opening read-write 2018-02-15 16:54:57 +00:00
test-io-channel-socket.c sockets: pull code for testing IP availability out of specific test 2018-03-13 18:06:06 +00:00
test-io-channel-tls.c qio: non-default context for TLS handshake 2018-03-06 10:19:07 +00:00
test-io-task.c qio: non-default context for threaded qtask 2018-03-06 10:19:05 +00:00
test-iov.c tests: Use real size for iov tests 2017-09-05 22:34:40 +02:00
test-keyval.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
test-logging.c test-logging: don't hard-code paths in /tmp 2016-08-19 12:44:11 +01:00
test-mul64.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
test-netfilter.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
test-opts-visitor.c qapi: Fix QemuOpts visitor regression on unvisited input 2017-03-22 19:24:34 +01:00
test-qapi-util.c Drop superfluous includes of qapi-types.h and test-qapi-types.h 2018-02-09 05:05:11 +01:00
test-qdev-global-props.c test-qdev-global-props: Test global property ordering 2017-07-17 15:41:30 -03:00
test-qdist.c qdist: return "(empty)" instead of NULL when printing an empty dist 2016-08-03 18:44:56 +02:00
test-qemu-opts.c test-qemu-opts: Test qemu_opts_to_qdict_filtered() 2018-03-09 15:17:47 +01:00
test-qga.c Include qapi/qmp/qdict.h exactly where needed 2018-02-09 13:52:15 +01:00
test-qht-par.c clean-includes: run it once more 2016-06-16 18:39:03 +02:00
test-qht.c test-qht: perform lookups under rcu_read_lock 2016-10-06 18:04:13 +02:00
test-qmp-cmds.c qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-02 13:45:57 -06:00
test-qmp-event.c qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-02 13:45:57 -06:00
test-qobject-input-visitor.c qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-02 13:45:57 -06:00
test-qobject-output-visitor.c tests/qapi: use QEMU_IS_ALIGNED macro 2018-02-10 10:44:58 +03:00
test-rcu-list.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
test-replication.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
test-shift128.c host-utils: Implement unsigned quadword left/right shift and unit tests 2017-01-31 10:10:14 +11:00
test-string-input-visitor.c Eliminate qapi/qmp/types.h 2018-02-09 13:52:15 +01:00
test-string-output-visitor.c tests/qapi: use ARRAY_SIZE macro 2018-02-10 10:45:14 +03:00
test-thread-pool.c test-thread-pool: use generic AioContext infrastructure 2017-02-21 11:14:07 +00:00
test-throttle.c block: convert ThrottleGroup to object with QOM 2017-09-05 18:12:21 +02:00
test-timed-average.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
test-util-sockets.c sockets: allow SocketAddress 'fd' to reference numeric file descriptors 2018-03-13 18:06:06 +00:00
test-uuid.c util: add is_equal to UUID API 2017-12-20 22:01:24 +08:00
test-visitor-serialization.c qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
test-vmstate.c migration: Route more error paths 2017-09-27 11:44:18 +01:00
test-write-threshold.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
test-x86-cpuid-compat.c Include qapi/qmp/qlist.h exactly where needed 2018-02-09 13:52:15 +01:00
test-x86-cpuid.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
test-xbzrle.c migration: Create migration/xbzrle.h 2017-05-18 18:04:54 +02:00
tmp105-test.c libqos: Use explicit QTestState for i2c operations 2018-02-14 11:43:41 +01:00
tpci200-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
tpm-crb-test.c tests: Move common TPM test code into tpm-emu.c 2018-02-21 07:24:50 -05:00
tpm-emu.c tests: add test for TPM TIS device 2018-02-21 07:24:50 -05:00
tpm-emu.h tests: Move common TPM test code into tpm-emu.c 2018-02-21 07:24:50 -05:00
tpm-tis-test.c tests: add test for TPM TIS device 2018-02-21 07:24:50 -05:00
usb-hcd-ehci-test.c libqos: Track QTestState with QPCIBus 2018-02-14 11:43:02 +01:00
usb-hcd-ohci-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
usb-hcd-uhci-test.c libqos: Use explicit QTestState for remaining libqos operations 2018-02-14 11:43:41 +01:00
usb-hcd-xhci-test.c tests: Introduce generic device hot-plug/hot-unplug functions 2017-09-15 09:05:18 +02:00
vhost-user-bridge.c tests: Avoid 'do/while(false); ' in vhost-user-bridge 2018-01-16 14:54:52 +01:00
vhost-user-test.c libqos: Use explicit QTestState for fw_cfg operations 2018-02-14 11:43:41 +01:00
virtio-9p-test.c libqos: Use explicit QTestState for remaining libqos operations 2018-02-14 11:43:41 +01:00
virtio-balloon-test.c tests: Enable the very simple virtio tests on s390x, too 2017-10-20 13:32:10 +02:00
virtio-blk-test.c libqos: Use explicit QTestState for remaining libqos operations 2018-02-14 11:43:41 +01:00
virtio-console-test.c tests: Enable the very simple virtio tests on s390x, too 2017-10-20 13:32:10 +02:00
virtio-net-test.c libqos: Use explicit QTestState for remaining libqos operations 2018-02-14 11:43:41 +01:00
virtio-rng-test.c tests: enable virtio tests on SPAPR 2016-10-28 09:36:58 +11:00
virtio-scsi-test.c scsi: support NDOB (no data-out buffer) for WRITE SAME commands 2018-03-12 16:12:46 +01:00
virtio-serial-test.c tests: Enable the very simple virtio tests on s390x, too 2017-10-20 13:32:10 +02:00
vmgenid-test.c tests/boot-sector: Drop dependence on global_qtest 2018-02-14 11:43:41 +01:00
vmxnet3-test.c tests: Remove unnecessary glib.h includes 2016-06-07 18:19:24 +03:00
wdt_ib700-test.c wdt_ib700-test: Drop dependence on global_qtest 2018-02-14 11:43:42 +01:00