The original collection of SetSpace cannot be serialized, so that azure
location cache cannot save features to disk. So add items field for
serialization.
Note, it's a minimum patch to support our functionality, not target to
create a search_space works any place else.
1. add __post_init__ to load data from deserialized data.
2. unfortunately, #1 doesn't work automatically like document. So add
decode_set_space to make it can be called explictly.
3. override add, update methods, because they are used in code.
4. call decoders in schema.
The feature class will be parsed in platform level, so it doesn't need
to know feature class in schema. the excluded feature set won't be
merged into included, after this change.
As final implementation, no need to create capability from value. The
capability should be defined, if it's needed. If a capability is not
defined, a node uses default capability.
Biggest change is the move to Black 20.8b1. W503 is now disabled by
default, and since we control the versions of the tools we use, we can
safely update our configuration.
This Makefile is optional because the commands can be run independently,
it was added just to simplify and centralize all our commands. On Linux,
GNU Make is expected to almost universally be installed, but on Windows
it may need to be installed manually to use it. Fortunately the GitHub
Actions Windows image has it.
Since arm doesn't support nested loop, so use nested template to
workaround. Also add field and logic to support it.
other changes,
1. adjust priority of demo test cases, so easy to select by priority.
2. Remove AzureArmParameterNode, reuse AzureNodeSchema as their schema
is almost the same.
3. some performance tuning like adjust loop priority, reuse caches.
4. remove some unused code.
5. improve log messages.
6. other minor improvements.
* Add ut for lisarunner, and bug fixes
1. add ut for lisa runner
2. fix bugs found by ut.
3. remove some unused code.
4. improve testability.
5. move EnvironmentSpace from shema to env, because it's confused in
schema folder. As it's not a schema.
6. other minor fixes.
1. Add platform test cases
2. remove global platforms cache for testability.
3. remove unused platform_schema and node_schema on platform.
4. skip test files when importing to exclude mock classes.
5. other minor improvements.
Other changes,
1. remove yum update on centos, as it's not necessary
2. fix lscpu under windows
3. fix logger to show debug in file always
4. show console as configured
5. update test case behavior, it's still acceptable
6. tuning some log
7. minor improvements
1. update OS to support Ubuntu and CentOS
2. add logic to detect OS.
3. support package installation
4. add gcc, make tools
5. support git, ntttcp install
6. other minor improvements
1. add work flow to create env from cases.
2. add capability on environment and node.
3. add EnvironmentSpace for requirement and capability.
4. add prepare_environment method to match capability and requirements
5. use delay node schema nodes replace ugly package instrument.
6. move some test only code to test file.
7. add create factory to support windows tools.
8. support test case settings like retry, times, and so on.
9. other minor improvements.
1. Move runbook related init code into runbook.py
2. cleanup commands.py, make it like a command wrapper.
3. move test case selector to lisarunner to centralize flow.
4. other minor improvements.
Terms
1. Search Space. A couple of values, partial match is ok. For example,
test case need at leat 8 cores, but also ok for 16 cores. But if a
case needs exact 4 cores, so 6 or 2 doesn't meet requirement.
2. Requirement: it's from test case, it's requirement on test
environment, platform and so on.
3. Capability: it's from platform, it describes what kind of environment
can be provided by platform.
Two major methods,
1. check to check if a requirement can be met by a capability.
2. generate_min_capaiblity, if meet requirement, get the minimum meet object.
Support count, set (unordered) are enougth to current
design.
Replace original template with NodeSpace.