autotest/virt-test — pull request #335 by jzupka (2013-05-02 20:49:17+00:00)
Title: virt: New version Cartesian config.

Changes from old version:
- Splits lexical analyze from syntax analyze.
(not fully because speed optimization)
- Makes parser more strict for easier work with configs.
- Error message should be more concrete.
- Adds new syntax features.
- Adds optimization for generation of lots of variants.
- Improve generating of huge number of variants.
(almost 2 x faster than old version) 50s old -> 23s new

Disadvantage:
Syntax analyze is more strict and takes 1/3 of time more
for parse text. 220ms -> 320ms

New syntax features:
variants:
- added metadata variants _name_ [default=aaa] [xxx] [yyy]:
where:
_name_ - Name of variants group.
[default=aaa] - Alternative for @. It raise error
if variant aaa missing in variants.
- It is possible add more [default=xxx]
but only first of them is expanded if
defaults is set.
[xxx], [yyy] - Another possible metadata for future.
- default could be enabled and disabled. Generate only default variant.
enable:
cartesian_config.py -d
Parser(..., ..., defaults=True, ...)
disable:
cartesian_config.py
Parser(..., ..., defaults=False, ...)
- default variant could be expanded by parser parameters.
cartesian_config.py --expand _name1_,_name2_
Parser(..., ..., ..., expand_defualts="_name1_, _name2_")

filters:
- new examples
only (guest_os=Fedora).15
only (guest_os=Fedora)..(fedora_version=15)
only (15)

variants group "guest_os" and variant name "Fedora"

- variants comparison is based on hash value
instead of pure string comparison.

Signed-off-by: Jiří Župka