Listing tests (--collect-only and --dtest-print-tests-only) only lists tests that...
authorjacek-lewandowski <jacek.lewandowski@datastax.com>
Fri, 22 Jan 2021 07:55:28 +0000 (08:55 +0100)
committerMick Semb Wever <mck@apache.org>
Thu, 28 Jan 2021 11:00:52 +0000 (12:00 +0100)
commitec84618b7450ef9357a3a88fc93e39d74a34b02e
tree60c27bed8e5dd3847ce74ce790bde03f31966878
parent550c4ed1584428645b096efd224cc0af81214493
Listing tests (--collect-only and --dtest-print-tests-only) only lists tests that will run according to other arguments specified

This patch fixes behaviour for both `run_dtests.py` and `pytest`.
- Error handling for invalid parameter values / combinations is in a single place (`dtest_config.py`) and is executed before we actually traverse through the tests
- We exit with just a clean error message instead of tons of spam
- `run_dtests.sh` will not loose the exit code of `pytest` any more so we can clearly detect when test cases collection fails
- removed a bit of boilerplate code from `run_dtests.py`, e.g. what it did with xml processing is simply provided with `-q` argument of `pytest`
- tests filtering has been refactored to be cleaner
- fixed filtering of resource intensive tests and other tests (note that except for upgrade tests, we took care only about test method annotations - module level annotations were ignored for vnodes, no_vnodes, no_offheap_memtables and resource_intensive, ...)
- added meta_tests for the filtering and parsing exception handling
- added special parameter --metatests which is enough to run all the meta tests
- fixed Travis configuration so that it runs meta tests

Note that now `run_dtests.py` seems to be redundant. If we need it only for listing dtests, we can simply achieve exactly the same effect using `--collect-only -q --ignore=meta_tests` arguments for `pytest` instead of `--dtest-print-tests-only`, plus  we need to filter output with `grep '.py::'` (in order to not include the summary line) and pipe stdout to the target file. It is now simplified so `run_dtests.sh` just uses `pytest` with those arguments.

patch by Jacek Lewandowski; reviewed by Tomek Ĺasica and Mick Semb Wever for CASSANDRA-16399
.travis.yml
conftest.py
dtest_config.py
dtest_setup.py
meta_tests/cassandra-dir-3.2/0.version.txt [new file with mode: 0644]
meta_tests/cassandra-dir-4.0-beta/0.version.txt [new file with mode: 0644]
meta_tests/cassandra-dir-4.0-beta/bin/.do-not-delete [new file with mode: 0644]
meta_tests/cassandra-dir-4.0-beta/conf/cassandra.yaml [new file with mode: 0644]
meta_tests/conftest_test.py [new file with mode: 0644]
meta_tests/dtest_config_test.py [new file with mode: 0644]
run_dtests.py