Skip to content

test(inkless:systest): run ducktape system tests against consolidated topics [KC-153]#645

Merged
giuseppelillo merged 1 commit into
mainfrom
svv/ts-unification-systest
Jun 22, 2026
Merged

test(inkless:systest): run ducktape system tests against consolidated topics [KC-153]#645
giuseppelillo merged 1 commit into
mainfrom
svv/ts-unification-systest

Conversation

@viktorsomogyi

Copy link
Copy Markdown
Contributor

This commit adds the ability to run the ducktape system tests against consolidating topics, and a few consolidation-specific variants, in the same run as the existing diskless and classic->diskless switch tests.

Per-test switch: KafkaService gains a consolidation flag (forwarded to the isolated controller) that renders a consolidation broker config in kafka.properties (diskless default + remote tiering via the Aiven tiered-storage plugin, S3/MinIO + Postgres backend). It falls back to the run-wide --globals consolidation flag when unset since theswitch tests require the classic default.

Tests and infra: three thin subclasses under tests/kafkatest/tests/inkless reuse upstream test bodies with consolidation enabled (produce-bench, compression, get-offset-shell).

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds per-test “consolidation” mode support so Inkless ducktape system tests can exercise consolidating (diskless + remote tiered storage) topics alongside existing classic→diskless switch tests in the same run.

Changes:

  • Add a per-test KafkaService.consolidation flag (with fallback to --globals consolidation) and thread it into broker config rendering.
  • Introduce consolidation-specific Inkless test subclasses (produce-bench, compression, get-offset-shell) that reuse upstream test bodies with consolidation enabled.
  • Extend the ducker system test container/workflow to include the Aiven tiered-storage plugin and broaden the workflow default test target to the whole Inkless test directory.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/kafkatest/version.py Adds clarifying comments for tool-flag support checks tied to Kafka version gates.
tests/kafkatest/tests/inkless/consolidation_produce_bench_test.py New consolidation variant of produce-bench; enables consolidation and adjusts producer settings; ignores transactional case.
tests/kafkatest/tests/inkless/consolidation_get_offset_shell_test.py New consolidation variant of GetOffsetShell tests; constructs KafkaService with consolidation=True.
tests/kafkatest/tests/inkless/consolidation_compression_test.py New consolidation variant of compression tests; flips broker/controller consolidation flags per-test.
tests/kafkatest/tests/core/produce_bench_test.py Adds an overridable producer_config() hook and uses it for both benchmark variants.
tests/kafkatest/services/kafka/templates/kafka.properties Adds a consolidation config block that enables diskless+remote-tiering settings.
tests/kafkatest/services/kafka/kafka.py Adds consolidation ctor arg and passes consolidation into template rendering (with globals fallback).
tests/docker/Dockerfile Downloads and installs the Aiven tiered-storage plugin into the ducker image.
.github/workflows/inkless-system-tests.yml Renames/broadens the Inkless system test workflow and defaults to running all Inkless tests.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/kafkatest/services/kafka/templates/kafka.properties
Comment thread tests/docker/Dockerfile Outdated
@viktorsomogyi
viktorsomogyi force-pushed the svv/ts-unification-systest branch 2 times, most recently from 2470f62 to 1f25fba Compare June 12, 2026 16:20
@viktorsomogyi
viktorsomogyi marked this pull request as ready for review June 12, 2026 16:21
@viktorsomogyi
viktorsomogyi requested a review from Copilot June 15, 2026 09:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Comment thread tests/kafkatest/services/kafka/templates/kafka.properties

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

tests/kafkatest/services/kafka/kafka.py:215

  • The KafkaService.__init__ signature now includes the consolidation parameter, but the constructor docstring doesn’t document it. This makes it harder for test authors to discover the per-test vs --globals consolidation behavior that the code implements.
        """
        :param context: test context
        :param int num_nodes: the number of nodes in the service.  There are 4 possibilities:

@viktorsomogyi
viktorsomogyi force-pushed the svv/ts-unification-systest branch from 8b105a4 to bf02116 Compare June 15, 2026 13:45
@viktorsomogyi
viktorsomogyi changed the base branch from main to svv/ts-unification-leader-epoch June 15, 2026 13:46
Base automatically changed from svv/ts-unification-leader-epoch to main June 16, 2026 14:46
… topics

This commit adds the ability to run the ducktape system tests against
consolidating topics, and a few consolidation-specific variants, in the same
run as the existing diskless and classic->diskless switch tests.

Per-test switch: KafkaService gains a `consolidation` flag (forwarded to the
isolated controller) that renders a consolidation broker config in
kafka.properties (diskless default + remote tiering via the Aiven
tiered-storage plugin, S3/MinIO + Postgres backend). It falls back to the
run-wide `--globals consolidation` flag when unset since theswitch tests
require the classic default.

Tests and infra: three thin subclasses under tests/kafkatest/tests/inkless
reuse upstream test bodies with consolidation enabled (produce-bench,
compression, get-offset-shell).

Assisted-by: Claude Opus 4.8 <noreply@anthropic.com>
@viktorsomogyi
viktorsomogyi force-pushed the svv/ts-unification-systest branch from bf02116 to fd552d5 Compare June 16, 2026 15:01

@giuseppelillo giuseppelillo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just a minor comment

Comment thread tests/docker/Dockerfile
Comment on lines +123 to +134
# Aiven Tiered Storage plugin (for consolidation/remote storage in system tests).
# Download explicitly with curl (-f fails on HTTP errors, -L follows the GitHub
# release redirect, --retry tolerates transient network hiccups).
ARG ts_plugin_version=1.1.1
ARG ts_plugin_base_url=https://github.com/Aiven-Open/tiered-storage-for-apache-kafka/releases/download/v${ts_plugin_version}
RUN mkdir -p /opt/tiered-storage-plugin/core /opt/tiered-storage-plugin/s3 && \
curl -fsSL --retry 5 --retry-delay 5 "${ts_plugin_base_url}/core-${ts_plugin_version}.tgz" -o /tmp/core.tgz && \
curl -fsSL --retry 5 --retry-delay 5 "${ts_plugin_base_url}/s3-${ts_plugin_version}.tgz" -o /tmp/s3.tgz && \
tar xzf /tmp/core.tgz -C /opt/tiered-storage-plugin/core --strip-components=1 && \
tar xzf /tmp/s3.tgz -C /opt/tiered-storage-plugin/s3 --strip-components=1 && \
rm /tmp/*.tgz

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the diskless switch tests I used the LocalTieredStorage implementation. I guess now we can refactor those tests as well to use the Aiven TS plugin.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we could if you think it makes sense. Do you mind if I did that in a follow-up to limit the scope for this one?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah sure


{% if consolidation %}
# Diskless/consolidation feature toggles
log.diskless.enable=true

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need this? Is it for allowing also the already existing tests to run?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay I see it's mainly for ConsolidationProduceBenchTest

@viktorsomogyi viktorsomogyi Jun 22, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we just use this for our tests. Classic tests won't use this, unless they construct the Kafka service this way (as ConsolidationProduceBenchTest does).

def test_produce_bench_transactions(self, metadata_quorum):
# Transactions are not supported on consolidating (diskless) topics, so
# the inherited transactional variant is intentionally ignored.
pass

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can add a log if it's possible?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But also, this method is tagged with @ignore so I'm not sure if the logging is displayed when called.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ran it, it looks like it won't log. Do you think we should still add it regardless?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not worth it

@viktorsomogyi viktorsomogyi changed the title test(inkless:systest): run ducktape system tests against consolidated topics test(inkless:systest): run ducktape system tests against consolidated topics [KC-153] Jun 22, 2026
@giuseppelillo
giuseppelillo merged commit ce0ac57 into main Jun 22, 2026
15 of 16 checks passed
@giuseppelillo
giuseppelillo deleted the svv/ts-unification-systest branch June 22, 2026 15:42
giuseppelillo pushed a commit that referenced this pull request Jun 23, 2026
… topics (#645)

This commit adds the ability to run the ducktape system tests against
consolidating topics, and a few consolidation-specific variants, in the same
run as the existing diskless and classic->diskless switch tests.

Per-test switch: KafkaService gains a `consolidation` flag (forwarded to the
isolated controller) that renders a consolidation broker config in
kafka.properties (diskless default + remote tiering via the Aiven
tiered-storage plugin, S3/MinIO + Postgres backend). It falls back to the
run-wide `--globals consolidation` flag when unset since theswitch tests
require the classic default.

Tests and infra: three thin subclasses under tests/kafkatest/tests/inkless
reuse upstream test bodies with consolidation enabled (produce-bench,
compression, get-offset-shell).

Assisted-by: Claude Opus 4.8 <noreply@anthropic.com>
giuseppelillo pushed a commit that referenced this pull request Jun 23, 2026
… topics (#645)

This commit adds the ability to run the ducktape system tests against
consolidating topics, and a few consolidation-specific variants, in the same
run as the existing diskless and classic->diskless switch tests.

Per-test switch: KafkaService gains a `consolidation` flag (forwarded to the
isolated controller) that renders a consolidation broker config in
kafka.properties (diskless default + remote tiering via the Aiven
tiered-storage plugin, S3/MinIO + Postgres backend). It falls back to the
run-wide `--globals consolidation` flag when unset since theswitch tests
require the classic default.

Tests and infra: three thin subclasses under tests/kafkatest/tests/inkless
reuse upstream test bodies with consolidation enabled (produce-bench,
compression, get-offset-shell).

Assisted-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants