[Avocado-devel] Avocado testplans
Lukáš Doktor
ldoktor at redhat.com
Thu Aug 2 14:08:01 UTC 2018
Dne 1.8.2018 v 13:19 Sergey Bronnikov napsal(a):
> Hello!
>
> I'm trying to find a way to organize my tests for running without
> specifying all of them in command-line. Imagine we have a set of different
> tests: sleep.py, passtest.py and fail.py. To run all of them with required
> parameters (aka variants) we may execute a command:
> avocado run sleep.py fail.py passtest.py -m basic.yaml
>
> Is there a way to run the same tests without explicit specifying them?
> For example: avocado run -m basic.yaml
>
> Sergey
>
Dear Sergey,
as a matter of fact, there are multiple ways.
1. filter-by-tag: http://avocado-framework.readthedocs.io/en/latest/WritingTests.html#categorizing-tests
you can tag your tests eg. `sanity`, `release`, ... and then run `avocado run --filter-by-tag=sanity -- TEST_REPO` to only run tests tagged `sanity` (note the granularity is per-class or even per-test-method.
2. yaml loader optional plugin: http://avocado-framework.readthedocs.io/en/latest/optional_plugins/yaml_loader.html
which is probably more what you're looking for, but currently only works on python2 (but should get py3 support, hopefully, soon). It works similarly to yaml_to_mux varianter plugin, but allows special keys like `test_reference` to specify what test will be used or even `test_reference_resolver_class` when your tests are not the default ones. This is for example useful when you want to include multiple external-runner tests with different external-runner. There are examples in: https://github.com/avocado-framework/avocado/tree/master/examples/yaml_to_mux_loader but let me share my slighly advanced example here:
```yaml
# Generated s390x mux-suite
!mux
qemu_make: !mux
mux_suite_test_name_prefix: 'qemu_make/git '
check:
test_reference: /home/jenkins/s390x/qemu-master/avocado-qemu-make-check
install:
test_reference: /home/jenkins/s390x/qemu-master/avocado-qemu-make-install
unit:
variants: !mux
test_reference_resolver_class: avocado.core.loader.ExternalLoader
timeout: 360
rpm-tcg:
mux_suite_test_name_prefix: 'unit/rpm/tcg '
test_reference_resolver_extra: !!python/dict
loader_options: /home/jenkins/s390x/kvm-unit-test/avocado-runner-rpm-tcg
rpm-kvm:
mux_suite_test_name_prefix: 'unit/rpm/kvm '
test_reference_resolver_extra: !!python/dict
loader_options: /home/jenkins/s390x/kvm-unit-test/avocado-runner-rpm-kvm
git-tcg:
mux_suite_test_name_prefix: 'unit/git/tcg '
test_reference_resolver_extra: !!python/dict
loader_options: /home/jenkins/s390x/kvm-unit-test/avocado-runner-git-tcg
git-kvm:
mux_suite_test_name_prefix: 'unit/git/kvm '
test_reference_resolver_extra: !!python/dict
loader_options: /home/jenkins/s390x/kvm-unit-test/avocado-runner-git-kvm
tests: !mux
cmm:
test_reference: cmm
diag10:
test_reference: diag10
emulator:
test_reference: emulator
gs:
test_reference: gs
iep:
test_reference: iep
intercept:
test_reference: intercept
pfmf:
test_reference: pfmf
selftest-setup:
test_reference: selftest-setup
sieve:
test_reference: sieve
skey:
test_reference: skey
sthyi:
test_reference: sthyi
vector:
test_reference: vector
functional: !mux
test_reference_resolver_class: avocado_vt.loader.VirtTestLoader
s390x-rpm-libvirt/dvd:
mux_suite_test_name_prefix: 'functional/rpm/libvirt/dvd '
test_reference: unattended_install.cdrom.extra_cdrom_ks.default_install.aio_threads io-github-autotest-qemu.boot remove_guest.without_disk
test_reference_resolver_args: !!python/dict
vt_qemu_bin: /usr/libexec/qemu-kvm
vt_dst_qemu_bin: /usr/libexec/qemu-kvm
vt_type: libvirt
vt_extra_params:
- automem=no
- url=$URL
- vga=none
s390x-rpm-libvirt/url:
mux_suite_test_name_prefix: 'functional/rpm/libvirt/url '
test_reference: unattended_install.url.extra_cdrom_ks.default_install.aio_threads io-github-autotest-qemu.boot remove_guest.without_disk
test_reference_resolver_args: !!python/dict
vt_qemu_bin: /usr/libexec/qemu-kvm
vt_dst_qemu_bin: /usr/libexec/qemu-kvm
vt_type: libvirt
vt_extra_params:
- automem=no
- url=$URL
- vga=none
s390x-rpm-dvd:
mux_suite_test_name_prefix: 'functional/rpm/dvd '
test_reference: unattended_install.cdrom.extra_cdrom_ks.default_install.aio_threads boot migrate.with_reboot.tcp migrate.with_reboot.exec.gzip_exec migrate.default.tcp.with_post_copy
test_reference_resolver_args: !!python/dict
vt_qemu_bin: /usr/libexec/qemu-kvm
vt_dst_qemu_bin: /usr/libexec/qemu-kvm
vt_extra_params:
- automem=no
- url=$URL
- ping_pong=5
- vga=none
s390x-rpm-url:
mux_suite_test_name_prefix: 'functional/rpm/url '
test_reference: unattended_install.url.extra_cdrom_ks.default_install.aio_threads boot migrate.with_reboot.tcp migrate.with_reboot.exec.gzip_exec migrate.default.tcp.with_post_copy
test_reference_resolver_args: !!python/dict
vt_qemu_bin: /usr/libexec/qemu-kvm
vt_dst_qemu_bin: /usr/libexec/qemu-kvm
vt_extra_params:
- automem=no
- url=$URL
- ping_pong=5
- vga=none
s390x-git-dvd:
mux_suite_test_name_prefix: 'functional/git/dvd '
test_reference: unattended_install.cdrom.extra_cdrom_ks.default_install.aio_threads boot migrate.with_reboot.tcp migrate.with_reboot.exec.gzip_exec migrate.default.tcp.with_post_copy
test_reference_resolver_args: !!python/dict
vt_qemu_bin: /home/jenkins/s390x/qemu-master/build/bin/qemu-system-s390x
vt_dst_qemu_bin: /home/jenkins/s390x/qemu-master/build/bin/qemu-system-s390x
vt_extra_params:
- automem=no
- url=$URL
- ping_pong=5
- vga=none
s390x-git-url:
mux_suite_test_name_prefix: 'functional/git/url '
test_reference: unattended_install.url.extra_cdrom_ks.default_install.aio_threads boot migrate.with_reboot.tcp migrate.with_reboot.exec.gzip_exec migrate.default.tcp.with_post_copy
test_reference_resolver_args: !!python/dict
vt_qemu_bin: /home/jenkins/s390x/qemu-master/build/bin/qemu-system-s390x
vt_dst_qemu_bin: /home/jenkins/s390x/qemu-master/build/bin/qemu-system-s390x
vt_extra_params:
- automem=no
- url=$URL
- ping_pong=5
- vga=none
```
(feel free to ask for details, but basically it uses SIMPLE tests, EXTERNAL_RUNNER tests and then Avocado-vt tests. The test always receives all the params so you can override the standard arguments. If you specify "test_reference_resolver_args" it also updates the loader parameters, which is what I use for Avocado-vt tests).
Theoretically there is yet another way and that is to create directory "sanity" and put symlinks to actual tests there, but the granularity there would be only per-test-class, which usually does not suffice.
Anyway, hopefully at least one method suits you, but feel free to elaborate more, we can always improve.
Kind regards,
Lukáš
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/avocado-devel/attachments/20180802/8d296b3f/attachment.sig>
More information about the Avocado-devel
mailing list