1. add api_version support to get_compute_client, because StartStop
needs speical api version.
2. Support generate storage account names for different purpose.
3. fix a incorrect type.
* Part2 - Migrate NVMe test cases.
* Implement assertion for cmd result.
This pattern is used by many test cases, implement the shared logic.
Add message for assert exit code method.
Co-authored-by: Chi Song <chisong@example.com>
With unknown reason, if enable capture in pytest, there is a
"the handler is invalid" error. Disable the "capture" can workaround it.
Enable capture on the html report back, so it can output information.
A transformer generates a couple of variables. User can define a couple
of transformers to prepare test data sequentially. For example, the
first transformer can install kernel package to an existing environment,
and then the second transformer generate a testable VHD. Well defined
transformers can be organized with different sequence. For example, the
second transformer, which is in previous example, can be used to copy a
image from kernel built too.
The subclasses of Transformer must implement two method,
1. _internal_run. It implements the actual logic of a transformer.
2. output_names. It tells which variables will be generated. It's used
to validate variables before the real run. It lets failure happenning
early.
To suport Transformer, the variables need to be delay parsed. Refactor
the code to resolve part of runbook, when it's used. Delay parse the
whole runbook for logging and runner too.
When platform defined the requirement, it should only take defined
items, and apply to test requirement. This fix change the
platform.requirement to be a dict, and merge with test requirement in
runner.
Virtual tools may not need to implement the command method. The abstract
class requires the abstract method. Removing abstract class to get it
optional.