diff options
author | kungasc <kungasc@yandex-team.com> | 2023-08-24 19:46:09 +0300 |
---|---|---|
committer | kungasc <kungasc@yandex-team.com> | 2023-08-24 20:25:00 +0300 |
commit | 15c36956959084c1fefe469c2d9fda51f77fedb6 (patch) | |
tree | b1dd0d071837550145dd092814044b3f3520bea1 | |
parent | 63be09dde28467def79fff3a3d8689ad7f047073 (diff) | |
download | ydb-15c36956959084c1fefe469c2d9fda51f77fedb6.tar.gz |
KIKIMR-19119 Add ydb mixed worload test
-rw-r--r-- | ydb/public/lib/ydb_cli/commands/kv_workload.cpp | 10 | ||||
-rw-r--r-- | ydb/tests/functional/kv_workload/test_kv_workload.py | 58 | ||||
-rw-r--r-- | ydb/tests/functional/kv_workload/ya.make | 32 | ||||
-rw-r--r-- | ydb/tests/functional/ya.make | 1 |
4 files changed, 96 insertions, 5 deletions
diff --git a/ydb/public/lib/ydb_cli/commands/kv_workload.cpp b/ydb/public/lib/ydb_cli/commands/kv_workload.cpp index d1d999a1160..fa8a0127715 100644 --- a/ydb/public/lib/ydb_cli/commands/kv_workload.cpp +++ b/ydb/public/lib/ydb_cli/commands/kv_workload.cpp @@ -286,7 +286,7 @@ int TCommandKvRunReadRowsRandom::Run(TConfig& config) { } TCommandKvRunMixed::TCommandKvRunMixed() - : TWorkloadCommand("mixed", {}, "Writes and SELECT/ReadsRows rows randomly") + : TWorkloadCommand("mixed", {}, "Writes and SELECT/ReadsRows rows randomly, verifies them") {} void TCommandKvRunMixed::Config(TConfig& config) { @@ -297,17 +297,17 @@ void TCommandKvRunMixed::Config(TConfig& config) { .DefaultValue(NYdbWorkload::KvWorkloadConstants::MAX_FIRST_KEY).StoreResult(&MaxFirstKey); config.Opts->AddLongOption("len", "String len") .DefaultValue(NYdbWorkload::KvWorkloadConstants::STRING_LEN).StoreResult(&StringLen); - config.Opts->AddLongOption("cols", "Number of columns to select for a single query") + config.Opts->AddLongOption("cols", "Number of columns") .DefaultValue(NYdbWorkload::KvWorkloadConstants::COLUMNS_CNT).StoreResult(&ColumnsCnt); config.Opts->AddLongOption("int-cols", "Number of int columns") .DefaultValue(NYdbWorkload::KvWorkloadConstants::INT_COLUMNS_CNT).StoreResult(&IntColumnsCnt); config.Opts->AddLongOption("key-cols", "Number of key columns") .DefaultValue(NYdbWorkload::KvWorkloadConstants::KEY_COLUMNS_CNT).StoreResult(&KeyColumnsCnt); - config.Opts->AddLongOption("change-partitions-size", "Apply random changes of AUTO_PARTITIONING_PARTITION_SIZE_MB setting.") + config.Opts->AddLongOption("change-partitions-size", "Apply random changes of AUTO_PARTITIONING_PARTITION_SIZE_MB setting") .DefaultValue(NYdbWorkload::KvWorkloadConstants::MIXED_CHANGE_PARTITIONS_SIZE).StoreResult(&ChangePartitionsSize); - config.Opts->AddLongOption("do-select", "Do SELECT operations.") + config.Opts->AddLongOption("do-select", "Do SELECT operations") .DefaultValue(NYdbWorkload::KvWorkloadConstants::MIXED_DO_SELECT).StoreResult(&DoSelect); - config.Opts->AddLongOption("do-read-rows", "Do ReadRows operations.") + config.Opts->AddLongOption("do-read-rows", "Do ReadRows operations") .DefaultValue(NYdbWorkload::KvWorkloadConstants::MIXED_DO_READ_ROWS).StoreResult(&DoReadRows); } diff --git a/ydb/tests/functional/kv_workload/test_kv_workload.py b/ydb/tests/functional/kv_workload/test_kv_workload.py new file mode 100644 index 00000000000..bf7211daa1e --- /dev/null +++ b/ydb/tests/functional/kv_workload/test_kv_workload.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +import os + +from ydb.tests.library.common import yatest_common +from ydb.tests.library.harness.kikimr_cluster import kikimr_cluster_factory +from ydb.tests.library.harness.kikimr_config import KikimrConfigGenerator +from ydb.tests.library.common.types import Erasure + + +class TestYdbKvWorkload(object): + @classmethod + def setup_class(cls): + cls.cluster = kikimr_cluster_factory(KikimrConfigGenerator(erasure=Erasure.MIRROR_3_DC)) + cls.cluster.start() + + @classmethod + def teardown_class(cls): + cls.cluster.stop() + + def test(self): + yatest_common.execute( + [ + yatest_common.binary_path(os.getenv("YDB_CLI_BINARY")), + "--verbose", + "--endpoint", "grpc://localhost:%d" % self.cluster.nodes[1].grpc_port, + "--database=/Root", + + "workload", "kv", "init", + + "--min-partitions", "1", + "--partition-size", "10", + "--auto-partition", "0", + "--init-upserts", "0", + "--cols", "5", + "--int-cols", "2", + "--key-cols", "3" + ], + wait=True + ) + + yatest_common.execute( + [ + yatest_common.binary_path(os.getenv("YDB_CLI_BINARY")), + "--verbose", + "--endpoint", "grpc://localhost:%d" % self.cluster.nodes[1].grpc_port, + "--database=/Root", + + "workload", "kv", "run", "mixed", + "--seconds", "100", + "--threads", "10", + + "--cols", "5", + "--len", "200", + "--int-cols", "2", + "--key-cols", "3" + ], + wait=True + ) diff --git a/ydb/tests/functional/kv_workload/ya.make b/ydb/tests/functional/kv_workload/ya.make new file mode 100644 index 00000000000..f2ededeaecd --- /dev/null +++ b/ydb/tests/functional/kv_workload/ya.make @@ -0,0 +1,32 @@ +IF (NOT SANITIZER_TYPE AND NOT WITH_VALGRIND) +PY3TEST() +ENV(YDB_DRIVER_BINARY="ydb/apps/ydbd/ydbd") +ENV(YDB_CLI_BINARY="ydb/apps/ydb/ydb") +ENV(YDB_ERASURE=mirror_3_dc) +ENV(YDB_USE_IN_MEMORY_PDISKS=true) + +TEST_SRCS( + test_kv_workload.py +) + +REQUIREMENTS( + cpu:4 + ram:32 +) + +TIMEOUT(600) +SIZE(MEDIUM) + +DEPENDS( + ydb/apps/ydbd + ydb/apps/ydb +) + +PEERDIR( + ydb/tests/library +) + + +END() + +ENDIF() diff --git a/ydb/tests/functional/ya.make b/ydb/tests/functional/ya.make index 99ea5059b50..72438e3093d 100644 --- a/ydb/tests/functional/ya.make +++ b/ydb/tests/functional/ya.make @@ -12,6 +12,7 @@ RECURSE( kqp large_serializable limits + kv_workload open_source postgresql rename |