Files
scylladb/test/cql-pytest/cassandra_tests
Nadav Har'El 7d2df8a9bc test/alternator,cql-pytest: fix resource leak on failure
In the alternator and cql-pytest test frameworks, we have some convenient
contextmanager-based functions that allows us to create a temporary
resource (e.g., a table) that will be automatically deleted, for
example:

    with create_stream_test_table(...) as table:
        test_something(table)

However, our implementation of these functions wasn't safe. We had
code looking like:

    table = ...
    yield table
    table.delete()

The thinking was that the cleanup part (the table.delete()) will be
called after the user's code. However, if the user's code threw
(i.e., a failed assertion), the cleanup wasn't called... When the user's
code throws, it looks as if the "yield" throws. So the correct code
should look like:

    table = ...
    try:
        yield table
    finally:
        table.delete()

Python's contextmanager documentation indeed gives this idiom in its
example.

This patch fixes all contextmanager implementations in our tests to do
the cleanup even if the user's "with" block throws.

Signed-off-by: Nadav Har'El <nyh@scylladb.com>
Message-Id: <20210428083748.552203-1-nyh@scylladb.com>
2021-04-28 10:51:02 +02:00
..

All tests in this directory and its subdirectories were translated from
Apache Cassandra's unit tests - the test/unit/org/apache/cassandra/cql3
directory in the Apache Cassandra source code repository.

The organization of this directory mirrors that of the Cassandra directory,
with test files renamed from SomeThingTest.java to some_thing_test.py.

Individual files were translated in their entirety, and each individual
file includes a comment on which version of the file was translated
(Cassandra's tests continue to evolve, so we may later want to catch up
with the differences).

Please avoid adding new tests, not translated from Cassandra, in this
directory. Instead, place new tests written from scratch for Scylla,
or improved tests, in the directory above.