Usage ===== Make sure to have followed the :ref:`configuration` steps first, and to source or ensure the correct environment variables are set. .. _running_tests: Running tests ------------- `rookcheck` uses `tox `_ to make managing the test environment easier. If you just ran `tox`, it would execute all of the available environments. You can see how these are configured in `tox.ini`. Unless you are developing tests, then running the linting or other checks that `tox` helps provide may not be necessary. Thus we can limit `tox` with the `-e` env flag. Running all tests: .. code-block:: bash tox -e py37 Running an individual test or set of tests: .. code-block:: bash tox -e py37 -- tests/test_basic.py # Or specific test tox -e py37 -- tests/test_basic.py::test_file_creation Debugging --------- You can leave the built environment available by `setting _tear_down_cluster` to False. .. code-block:: bash export ROOKCHECK__TEAR_DOWN_CLUSTER="FALSE" In that case, you need to cleanup the resources (used hardware, eg. OpenStack or EC2 nodes) manually. Another option is to keep `setting _tear_down_cluster` to True and set instead `setting tear_down_cluster_confirm` to True. In that case, the tear down steps for the different layers (workspace, hardware, kubernetes, rook) must be manually confirmed. .. code-block:: bash export ROOKCHECK__TEAR_DOWN_CLUSTER="TRUE" # This is anyway the default export ROOKCHECK__TEAR_DOWN_CLUSTER_CONFIRM="TRUE" You can then access the kubeconfig and ansible inventory files among other resources in the workspace (defined by `workspace_dir`). This is usually something like `/tmp/rookcheck*`. If Kubernetes was set up, you can access the binaries used from there too. For example: .. code-block:: bash cd /tmp/rookcheck/rookcheck-josh-75f5 # (substitute with your build name) ./bin/kubectl --kubeconfig kubeconfig get all --all-namespaces # Or if you're building SES, use ./bin/kubectl --kubeconfig cluster/admin.conf get all --all-namespaces Dropping to `PDB (Python Debugger) `_ on failure: .. code-block:: bash tox -e py37 -- --pdb Dropping to `PDB` at the start of a test: .. code-block:: bash tox -e py37 -- --trace If you want to use the prepared environment from `tox`, you can activate the created virtual env: .. code-block:: bash source .tox/py37/bin/activate This will now let you run `pytest` directly and have all the dependencies correctly set up. Similarly you can run `python` and start importing `rookcheck`'s library. See :ref:`development_notes` for more. Notes/Common Problems --------------------- * rookcheck will remove and manage known host keys on the test runner, which may include removing legitimate entries.