-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
System test: New design research #2440
Comments
Current designDeploymentCurrently, to run the system tests we deploy docker containers with ansible connection. You can deploy and destroy a few of environment types. Deployment sampleNavigating to the desired environment path, you can deploy and provision it by running:
For
Destroy sampleTo destroy the environment, you must be in the desired environment path and run:
ProvisioningWith ansible(playbook, inventory) we can deploy a few types of environments(both deployment and provisioning are performed together):
|
11/04/202Design 1DeploymentIf we want to allow local and Jenkins execution of the system tests we must separate deployment/provisioning from the tests themselves. I propose to create a YAML file that specifies the number of hosts, as well as their configuration of a testing system environment.
Likewise, this structure could be extended to incorporate E2E tests into its logic
This file will be located in the corresponding suite of each environment and will be used by QACTL/Jenkins for the deployment of these instances. With this structure the modules will change from being separated by functionalities without hierarchical order to the following:
Interaction with this environment will be through ansible inventory. Jenkins/QACTL will be in charge of generating this inventory once the environment is deployed. Using this new deployment it will be necessary to:
ProvisionThe following basic provisioning playbooks will be created, which will allow eliminating most of the custom playbooks for each of the modules.
These will be located in the system test tools. The necessary configurations to be made for the module will be made in the test itself. There will be two different kinds of execution in the local environment:
If an inventory is passed, it will be considered that the specified environment has the necessary conditions to launch the test. Those provisioning tasks specific to each module will be performed by pytest and should leave the environment clean after execution.
Provisioning step only will include first of:
TestingThe Hostmonitor tool will be maintained, improving the tool if it is necessary. Diagram in Jenkins environmentCons mitigated using this design:Deployment
Provisioning
|
Proposal 2"System tool" that uses inventory data and parsed documentation from the test.
Deployment/ProvisioningUsing a documentation schema and
Testing framework
Flowdeploy -> provision -> run test -> collect logs(logging, artifacts?) -> cleaning(teardown) |
After a meeting with @wazuh/qa, we have decided to follow #2440 (comment) as a sketch. This will be used as a global vision of the main objectives of the design and it will be changed according to the current developed tools. The creation of a global tool should be taking into account in the distant future |
Description
This issue aims to report on the current status of system testing and discuss the new design. Some approaches will be proposed.
TODO
The text was updated successfully, but these errors were encountered: