The new MX-native validator, which validates the index in tandem with the data file, was discovered to print false-positive errors, related to range-tombstones and promoted-index positions. This series fixes that. But first, it refactors the scrub-related tests. These are currently dominated by boiler-plate code. They are hard to read and hard to write. In the first half of the series, a new `scrub_test` is introduced, which moves all the boiler-plate to a central place, allowing the tests to focus on just the aspect of scrub that is tested. Then, all the found bugs in validate are fixed and finally a new test, checking validate with valid sstable is introduced. Fixes: #16326 Closes scylladb/scylladb#16327 * github.com:scylladb/scylladb: test/boost/sstable_compaction_test: add validation test with valid sstable sstablex/mx/reader: validate(): print trace message when finishing the PI block sstablex/mx/reader: validate(): make index-data PI position check message consistent sstablex/mx/reader: validate(): only load the next PI block if current is exhausted sstablex/mx/reader: validate(): reset the current PI block on partition-start sstablex/mx/reader: validate(): consume_range_tombstone(): check for finished clustering blocked sstablex/mx/reader: validate(): fix validator for range tombstone end bounds test/boost/sstable_compaction_test: drop write_corrupt_sstable() helper test/boost/sstable_compaction_test: fix indentation test/boost/sstable_compaction_test: use test_scrub_framework in test_scrub_quarantine_mode_test test/boost/sstable_compaction_test: use scrub_test_framework in sstable_scrub_segregate_mode_test test/boost/sstable_compaction_test: use scrub_test_framework in sstable_scrub_skip_mode_test test/boost/sstable_compaction_test: use scrub_test_framework in sstable_scrub_validate_mode_test test/boost/sstable_compaction_test: introduce scrub_test_framework test/lib/random_schema: add uncompatible_timestamp_generator()
Scylla in-source tests.
For details on how to run the tests, see docs/dev/testing.md
Shared C++ utils, libraries are in lib/, for Python - pylib/
alternator - Python tests which connect to a single server and use the DynamoDB API unit, boost, raft - unit tests in C++ cql-pytest - Python tests which connect to a single server and use CQL topology* - tests that set up clusters and add/remove nodes cql - approval tests that use CQL and pre-recorded output rest_api - tests for Scylla REST API Port 9000 scylla-gdb - tests for scylla-gdb.py helper script nodetool - tests for C++ implementation of nodetool
If you can use an existing folder, consider adding your test to it. New folders should be used for new large categories/subsystems, or when the test environment is significantly different from some existing suite, e.g. you plan to start scylladb with different configuration, and you intend to add many tests and would like them to reuse an existing Scylla cluster (clusters can be reused for tests within the same folder).
To add a new folder, create a new directory, and then
copy & edit its suite.ini.