This series updates the storage abstraction and extends the compaction tests to support object‑storage backends (S3 and GCS), while tightening several parts of the test environment. The changes include: - New exists/object_exists helpers across storage backends and clock fixes in the S3 client to make signature generation stable under test conditions. - A new get_storage_for_tests accessor and adjustments to the test environment to avoid premature teardown of the sstable registry. - Refactoring of compaction tests to remove direct sstable access, ensure proper schema setup, and avoid use of moved‑from objects. - Extraction of test_env‑based logic into reusable functions and addition of S3/GCS variants of the compaction tests. Not all tests were converted to be backend‑agnostic yet, and a few require further investigation before they can run cleanly against S3/GCS backends. These will be addressed in follow‑up work. Fixes: https://scylladb.atlassian.net/browse/SCYLLADB-704 however, followup is needed No backport needed since this change targeting future feature Closes scylladb/scylladb#28790 * github.com:scylladb/scylladb: compaction_test: fix formatting after previous patches compaction_test: add S3/GCS variations to tests compaction_test: extract test_env-based tests into functions compaction_test: replace file_exists with storage::exists compaction_test: initialize tables with schema via make_table_for_tests compaction_test: use sstable APIs to manipulate component files compaction_test: fix use-after-move issue sstable_utils: add `get_storage` and `open_file` helpers test_env: delay unplugging sstable registry storage: add `exists` method to storage abstraction s3_client: use lowres_system_clock for aws_sigv4 s3_client: add `object_exists` helper gcs_client: add `object_exists` helper
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++ cqlpy - 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.