In the current scenario, the nodetool status doesn’t display information regarding zero token nodes. For example, if 5 nodes are spun by the administrator, out of which, 2 nodes are zero token nodes, then nodetool status only shows information regarding the 3 non-zero token nodes. This commit intends to fix this issue by leveraging the “/storage_service/host_id ” API and adding appropriate logic in scylla-nodetool.cc to support zero token nodes. A test is also added in nodetool/test_status.py to verify this logic. This test fails without this commit’s zero token node support logic, hence verifying the behavior. This PR fixes a bug. Hence we need to backport it. Backporting needs to be done only to 6.2 version, since earlier versions don't support zero token nodes. Fixes: scylladb/scylladb#19849 Fixes: scylladb/scylladb#17857 Closes scylladb/scylladb#20909 * github.com:scylladb/scylladb: fix nodetool status to show zero-token nodes test: move `wait_for_first_completed` to pylib/util.py token_metadata: rename endpoint_to_host_id_map getter and add support for joining nodes
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.