aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkungasc <kungasc@yandex-team.com>2023-08-24 19:46:09 +0300
committerkungasc <kungasc@yandex-team.com>2023-08-24 20:25:00 +0300
commit15c36956959084c1fefe469c2d9fda51f77fedb6 (patch)
treeb1dd0d071837550145dd092814044b3f3520bea1
parent63be09dde28467def79fff3a3d8689ad7f047073 (diff)
downloadydb-15c36956959084c1fefe469c2d9fda51f77fedb6.tar.gz
KIKIMR-19119 Add ydb mixed worload test
-rw-r--r--ydb/public/lib/ydb_cli/commands/kv_workload.cpp10
-rw-r--r--ydb/tests/functional/kv_workload/test_kv_workload.py58
-rw-r--r--ydb/tests/functional/kv_workload/ya.make32
-rw-r--r--ydb/tests/functional/ya.make1
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