There has been some discussions about whether STI should support a single entry point tests/tests.yml instead of the currently documented and implemented tests/tests*.yml which supports multiple playbooks.
tests/tests.yml
tests/tests*.yml
Supporting multiple playbooks causes in some cases additional complexity but on the other hands gives a possibility to run playbooks in parallel, currently not implemented in the pipeline:
With the enhanced test results reporting we need to either remove support for multiple playbooks or handle possible test result collisions in the pipeline. For example by creating a separate artifacts directory for each playbook to be run.
Relevant issue: https://pagure.io/fedora-ci/general/issue/18
Hi. I do not have strong opinion on this.
Just a few points to consider.
test-subject
Invocation order. Invocation order in CI-pipelines and by user must be the same. In this case we must retract ability to call ansible-playbook directly. And provide some tool, that controls order.
Isn't the test system supposed to provide a clean environment for each of the playbooks? The spec isn't particularly clear on this, but it would make a lot of sense, I think. In that case you don't care about the order, because the playbooks can't affect each other (and you can run them in parallel as a bonus).
@kparal please check reference STI : https://fedoraproject.org/wiki/CI/Standard_Test_Interface
To avoid any misunderstanding, please use exact naming. Not test system, but rather testing system.
test system
testing system
Isn't the test system supposed to provide a clean environment for each of the playbooks? Again confusion. What is clean environment ?
Isn't the test system supposed to provide a clean environment for each of the playbooks?
clean environment
Ok, now some thoughts:
Testing System does stage Test environment
Testing System
Test environment
@kparal your proposal sounds reasonable. We need define strict run-order. Define strict workflow between:
Test Runner
test-environment
So using the STI terminology I would say Test Runner receives the list of ansible playbooks to be executed from the Testing System and prepares a clean Test Environment for each playbook. Finally, after the testing is finished aggregates results from individual playbooks. Thus there would be no collisions as @kparal suggested above. Does that make sense? Would something like this work with the pipeline, @bgoncalv, @mvadkert?
Test Environment
yes, I think this is correct.
Yep, we are doing +- something like this in Bci, I guess it is also doable in the pipeline.
Metadata Update from @psss: - Issue tagged with: Standard Test Interface
To summarize what we've agreed on:
Which also leads to:
Here's a recent real-life example of a tests/tests_python.yml playbook.
tests/tests_python.yml
Metadata Update from @psss: - Issue assigned to psss
STI should be updated to explicitly require clean environment for each such playbook
Specification updated.
Fedora docs should be updated accordingly (e.g. the tests page)
Docs changes proposed.
Stats generating scripts should not rely on tests/tests.yml (as there can be none)
Issue #48 created to track this.
Metadata Update from @psss: - Issue status updated to: Closed (was: Open)