The ./smoketest folder in the distribution package contains robotframework based test scripts to test the main behaviour of Ozone.
The tests have two layers:
1. robot test definitions to execute commands and assert the results (on a given host machine)
2. ./smoketest/test.sh which starts/stops the docker-compose based environments AND execute the selected robot tests inside the right hosts
The second one (test.sh) has some serious limitations:
1. all the tests are executed inside the same container (om):
Some of the tests (ozonesecure-mr, ozonefs) may require the flexibility to execute different robot tests in different containers.
2. The definition of the global test set is complex and hard to understood.
The current code is:
For example for ozonesecure the TESTS is not used. And the usage of bash lists require additional complexity in the execute_tests function.
I propose here a very lightweight refactor. Instead of including both the test definitions AND the helper methods in test.sh I would separate them.
Let's put a test.sh to each of the compose directories. The separated test.sh can include common methods from a main shell script. For example:
This is a more clean and more flexible definition. It's easy to execute just this test (as it's saved to the compose/ozones3 directory. And it's more flexible.
Other example, where multiple containers are used to execute tests:
With this separation the definition of the helper methods (eg. execute_robot_test or stop_docker_env) would also be simplified.