[Avocado-devel] Avocado 0.24.0 released!
Lucas Meneghel Rodrigues
lmr at redhat.com
Tue May 19 14:44:12 UTC 2015
We are proud to announce the new Avocado 0.24.0 release! This time, we
had made a number of API changes to reflect some good practices in API
development, and changes to the multiplexer, that is making large steps
towards a production ready state. Let's break down the changes:
Core/General API isolation
In order to avoid user confusion, now the avocado API has a clear
separation with regards to what it's supposed to be used by test
developers, and what is supposed to be used by plugin/core application
developers:
avocado.core is restricted to plugin/core app developers
avocado can be used by both test developers and plugin/core app
developers
Breakdown of changes:
avocado.core.data_dir -> avocado.data_dir
avocado.plugins -> avocado.core.plugins
avocado.remote -> avocado.core.remote
avocado.job -> avocado.core.job
avocado.job.main -> avocado.main
avocado.loader -> avocado.core.loader
avocado.output -> avocado.core.output
avocado.loader -> avocado.core.loader
avocado.parser -> avocado.core.parser
avocado.runner -> avocado.core.runner
avocado.sysinfo -> avocado.core.sysinfo
avocado.external.gdbmi_parser -> avocado.core.gdbmi_parser
avocado.external.spark -> avocado.core.spark
avocado.cli.app -> avocado.core.app
avocado.exceptions -> avocado.core.exceptions
Multiplexer
The multiplexer has gone through changes on the parameters retrieval
API. The new way of retrieving params is through the get API, that has
the form::
get(key, path, default)
The avocado.test.Test.params object is no longer a dictionary, and it's
not possible to refer to the values through the shortcut
avocado.test.Test.params.key anymore.
Example of old usage::
c_file = self.get_data_path(self.params.get('source', 'doublefree.c'))
This statement has to be updated to::
c_file = self.get_data_path(self.params.get('source',
default='doublefree.c'))
Otherwise the default doublefree.c value will be taken as the retrieval
path, then c_file would be None.
The multiplexer file format also has a new !mux tag, that means to
recursively multiplex all nodes below the specified tag. By default
now, we don't multiplex until the !mux tag is specified. Let's consider
the following file::
hw:
cpu:
intel:
cpu_CFLAGS: '-march=core2'
amd:
cpu_CFLAGS: '-march=athlon64'
arm:
cpu_CFLAGS: '-mabi=apcs-gnu -march=armv8-a -mtune=arm8'
disk:
scsi:
disk_type: 'scsi'
virtio:
disk_type: 'virtio'
distro:
fedora:
init: 'systemd'
mint:
init: 'systemv'
env:
debug:
opt_CFLAGS: '-O0 -g'
prod:
opt_CFLAGS: '-O2'
Here, the nodes cpu, disk, distro and env are the ones we actually want
to combine, whilehw is just for organization purposes (we don't want to
combine hw with distro, really).
New version, with !mux:
hw:
cpu: !mux
intel:
cpu_CFLAGS: '-march=core2'
amd:
cpu_CFLAGS: '-march=athlon64'
arm:
cpu_CFLAGS: '-mabi=apcs-gnu -march=armv8-a -mtune=arm8'
disk: !mux
scsi:
disk_type: 'scsi'
virtio:
disk_type: 'virtio'
distro: !mux
fedora:
init: 'systemd'
mint:
init: 'systemv'
env: !mux
debug:
opt_CFLAGS: '-O0 -g'
prod:
opt_CFLAGS: '-O2'
This way we can keep using hw as a organization label, not interfering
with our final purpose of combining only cpu, disk, distro and env. The
variants generated with the new tag arrangement are:
Variant 1: /hw/cpu/intel, /hw/disk/scsi, /distro/fedora, /env/debug
Variant 2: /hw/cpu/intel, /hw/disk/scsi, /distro/fedora, /env/prod
Variant 3: /hw/cpu/intel, /hw/disk/scsi, /distro/mint, /env/debug
Variant 4: /hw/cpu/intel, /hw/disk/scsi, /distro/mint, /env/prod
Variant 5: /hw/cpu/intel, /hw/disk/virtio, /distro/fedora, /env/debug
Variant 6: /hw/cpu/intel, /hw/disk/virtio, /distro/fedora, /env/prod
Variant 7: /hw/cpu/intel, /hw/disk/virtio, /distro/mint, /env/debug
Variant 8: /hw/cpu/intel, /hw/disk/virtio, /distro/mint, /env/prod
Variant 9: /hw/cpu/amd, /hw/disk/scsi, /distro/fedora, /env/debug
Variant 10: /hw/cpu/amd, /hw/disk/scsi, /distro/fedora, /env/prod
Variant 11: /hw/cpu/amd, /hw/disk/scsi, /distro/mint, /env/debug
Variant 12: /hw/cpu/amd, /hw/disk/scsi, /distro/mint, /env/prod
Variant 13: /hw/cpu/amd, /hw/disk/virtio, /distro/fedora, /env/debug
Variant 14: /hw/cpu/amd, /hw/disk/virtio, /distro/fedora, /env/prod
Variant 15: /hw/cpu/amd, /hw/disk/virtio, /distro/mint, /env/debug
Variant 16: /hw/cpu/amd, /hw/disk/virtio, /distro/mint, /env/prod
Variant 17: /hw/cpu/arm, /hw/disk/scsi, /distro/fedora, /env/debug
Variant 18: /hw/cpu/arm, /hw/disk/scsi, /distro/fedora, /env/prod
Variant 19: /hw/cpu/arm, /hw/disk/scsi, /distro/mint, /env/debug
Variant 20: /hw/cpu/arm, /hw/disk/scsi, /distro/mint, /env/prod
Variant 21: /hw/cpu/arm, /hw/disk/virtio, /distro/fedora, /env/debug
Variant 22: /hw/cpu/arm, /hw/disk/virtio, /distro/fedora, /env/prod
Variant 23: /hw/cpu/arm, /hw/disk/virtio, /distro/mint, /env/debug
Variant 24: /hw/cpu/arm, /hw/disk/virtio, /distro/mint, /env/prod
The tree representation also changed to print the !mux points of
branching, to further help the user to understand the structure of the
tree::
$ scripts/avocado multiplex --tree examples/mux-environment.yaml
Config file tree structure:
/-intel
|
/cpu-<>--amd
| |
/hw \-arm
| |
| | /-scsi
| \disk-<>
| \-virtio
-|
| /-fedora
|-distro-<>
| \-mint
|
| /-debug
\env-<>
\-prod
The more detailed breakdown of the 145 commits can be seen here:
0.23.0...0.24.0
Happy testing!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/avocado-devel/attachments/20150519/bc6da63e/attachment.htm>
More information about the Avocado-devel
mailing list