when cluster repair is run for an entire keyspace, nodetool makes a repair api request for each table. if the keyspace contains colocated tables, then the api request for the colocated tables will fail, because currently scylla doesn't allow making repair requests for specific colocated tables, but only for base tables. if the request is to repair an entire keyspace then we can ignore this, because we will make a repair request for all base tables, and this in turn will repair also all the colocated tables in the keyspace. however if specific tables are requested and some of them are colocated then we should propagate the error to let the user know the request is invalid. Refs scylladb/scylladb#24816
Front-end tests for nodetool
The tests in this directory exercise the nodetool client itself, mocking the API backend. This allows for testing all combinations of all supported options, and still keeping the tests quick.
The tests can be run against both the scylla-native nodetool (default), or the inherited, C*-based nodetool.
Run all tests against the scylla-native nodetool:
pytest --nodetool=scylla .
You can specify the path to the scylla binary with the --nodetool-path option. By default the tests will pick up the ScyllaDB executable, that is appropriate for the --mode option (defaults to dev).
Run all tests against the C* nodetool:
pytest --nodetool=cassandra .
Again, you can specify the path to the nodetool binary with --nodetool-path option. By default, <scylladb.git>/tools/java/bin/nodetool will be used.
When running the test against the java-nodeotol, you can specify the path to JMX with --jmx-path option. By default, <scylladb.git>/tools/jmx/scripts/scylla-jmx will be used.
If you add new tests, make sure to run all tess against both nodetool implementations, to avoid regressions. Note that CI/promotion will only run the tests against the scylla-native nodetool.