From fe0b26a0b1ea3a3708eb8fab75503878d60b8ba0 Mon Sep 17 00:00:00 2001 From: Brandon Allard Date: Thu, 7 Sep 2023 22:08:25 -0400 Subject: [PATCH] rptest: add perf regression test for TS reads --- .../rptest/perf/ts_read_openmessaging_test.py | 51 +++++++++++++++++++ .../openmessaging_benchmark_configs.py | 17 ++++++- 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 tests/rptest/perf/ts_read_openmessaging_test.py diff --git a/tests/rptest/perf/ts_read_openmessaging_test.py b/tests/rptest/perf/ts_read_openmessaging_test.py new file mode 100644 index 0000000000000..e3a8b8e7c3bb9 --- /dev/null +++ b/tests/rptest/perf/ts_read_openmessaging_test.py @@ -0,0 +1,51 @@ +# Copyright 2023 Redpanda Data, Inc. +# +# Use of this software is governed by the Business Source License +# included in the file licenses/BSL.md +# +# As of the Change Date specified in that file, in accordance with +# the Business Source License, use of this software will be governed +# by the Apache License, Version 2.0 + +from rptest.tests.redpanda_test import RedpandaTest +from rptest.services.cluster import cluster +from rptest.services.openmessaging_benchmark import OpenMessagingBenchmark +from ducktape.mark import parametrize +from rptest.services.redpanda import SISettings + + +class TSReadOpenmessagingTest(RedpandaTest): + BENCHMARK_WAIT_TIME_MIN = 15 + + def __init__(self, ctx): + extra_rp_conf = { + "retention_local_target_bytes_default": 16 * 1_000_000 # 128 MB + } + si_settings = SISettings( + test_context=ctx, + log_segment_size=16 * 1_000_000 # 16MB + ) + self._ctx = ctx + super(TSReadOpenmessagingTest, + self).__init__(test_context=ctx, + num_brokers=3, + si_settings=si_settings, + extra_rp_conf=extra_rp_conf) + + @cluster(num_nodes=6) + @parametrize(driver_idx="ACK_ALL_GROUP_LINGER_1MS_IDEM_MAX_IN_FLIGHT", + workload_idx="RELEASE_CERT_SMOKE_LOAD_625k_BACKLOG") + def test_perf(self, driver_idx, workload_idx): + """ + This adds TS reads to the OMB perf regression tests + """ + + assert self.redpanda.dedicated_nodes + + benchmark = OpenMessagingBenchmark(self._ctx, self.redpanda, + driver_idx, workload_idx) + benchmark.start() + benchmark_time_min = benchmark.benchmark_time( + ) + TSReadOpenmessagingTest.BENCHMARK_WAIT_TIME_MIN + benchmark.wait(timeout_sec=benchmark_time_min * 60) + benchmark.check_succeed() diff --git a/tests/rptest/services/openmessaging_benchmark_configs.py b/tests/rptest/services/openmessaging_benchmark_configs.py index 4f6155cadd80c..5383c1da42ddd 100644 --- a/tests/rptest/services/openmessaging_benchmark_configs.py +++ b/tests/rptest/services/openmessaging_benchmark_configs.py @@ -247,6 +247,19 @@ def validate_metrics(metrics, validator): "warmup_duration_minutes": 5, } + RELEASE_CERT_SMOKE_LOAD_625k_BACKLOG= { + "name": "SmokeLoad625kReleaseCert", + "topics": 1, + "partitions_per_topic": 100, + "subscriptions_per_topic": 1, + "consumer_per_subscription": 8, + "producers_per_topic": 16, + "producer_rate": 625000, + "consumer_backlog_size_GB": 10, + "test_duration_minutes": 5, + "warmup_duration_minutes": 5, + } + # ------- Workload configurations end-------- # We have another level of indirection from name -> driver/workload @@ -280,5 +293,7 @@ def validate_metrics(metrics, validator): "TOPIC1_PART100_1KB_4PROD_1250K_RATE": (TOPIC1_PART100_1KB_4PROD_1250K_RATE, PROD_ENV_VALIDATOR), "RELEASE_CERT_SMOKE_LOAD_625k": - (RELEASE_CERT_SMOKE_LOAD_625k, RELEASE_SMOKE_TEST_VALIDATOR) + (RELEASE_CERT_SMOKE_LOAD_625k, RELEASE_SMOKE_TEST_VALIDATOR), + "RELEASE_CERT_SMOKE_LOAD_625k_BACKLOG": + (RELEASE_CERT_SMOKE_LOAD_625k_BACKLOG, RELEASE_SMOKE_TEST_VALIDATOR) }