Skip to content

Commit b9b22a7

Browse files
lll-phill-llladameat
authored andcommitted
Add functional tests for spilling (ydb-platform#15358)
1 parent 4ec47eb commit b9b22a7

File tree

5 files changed

+56
-5
lines changed

5 files changed

+56
-5
lines changed

ydb/tests/functional/tpc/large/test_tpcds.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
class TestTpcdsS1(tpcds.TestTpcds1, FunctionalTestBase):
66
iterations: int = 1
77

8+
memory_controller_config = {
9+
'hard_limit_bytes': 107374182400,
10+
}
11+
812
@classmethod
913
def setup_class(cls) -> None:
10-
cls.setup_cluster()
14+
cls.setup_cluster(memory_controller_config=cls.memory_controller_config)
1115
cls.run_cli(['workload', 'tpcds', '-p', 'olap_yatests/tpcds/s1', 'init', '--store=column'])
1216
cls.run_cli(['workload', 'tpcds', '-p', 'olap_yatests/tpcds/s1', 'import', 'generator', '--scale=1'])
1317
tpcds.TestTpcds1.setup_class()
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import ydb.tests.olap.load.lib.tpch as tpch
2+
from ydb.tests.functional.tpc.lib.conftest import FunctionalTestBase
3+
4+
5+
class TestTpchSpillingS10(tpch.TestTpch10, FunctionalTestBase):
6+
iterations: int = 1
7+
query_settings = {i : tpch.TestTpch10.QuerySettings(query_prefix='pragma ydb.UseGraceJoinCoreForMap = "true";') for i in range(1, 23)}
8+
# temporary exclude q5: https://github.com/ydb-platform/ydb/issues/15359
9+
skip_tests: list = [5]
10+
11+
table_service_config = {
12+
'enable_spilling_nodes': 'All',
13+
'spilling_service_config': {
14+
'local_file_config': {
15+
'enable': True,
16+
'max_total_size': 536870912000,
17+
'max_file_size': 107374182400,
18+
}
19+
},
20+
'resource_manager': {
21+
'verbose_memory_limit_exception': True
22+
},
23+
}
24+
25+
memory_controller_config = {
26+
'activities_limit_percent': 60,
27+
'query_execution_limit_percent': 50,
28+
'hard_limit_bytes': 6 * 1073741824,
29+
}
30+
31+
@classmethod
32+
def setup_class(cls) -> None:
33+
cls.setup_cluster(table_service_config=cls.table_service_config, memory_controller_config=cls.memory_controller_config)
34+
cls.run_cli(['workload', 'tpch', '-p', 'olap_yatests/tpch/s10', 'init', '--store=column'])
35+
cls.run_cli(['workload', 'tpch', '-p', 'olap_yatests/tpch/s10', 'import', 'generator', '--scale=10'])
36+
37+
tpch.TestTpch10.setup_class()

ydb/tests/functional/tpc/large/ya.make

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
PY3TEST()
2-
ENV(YDB_HARD_MEMORY_LIMIT_BYTES="107374182400")
32

43
TEST_SRCS(
54
test_tpcds.py
5+
test_tpch_spilling.py
66
)
77

88
SIZE(LARGE)

ydb/tests/functional/tpc/lib/conftest.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,19 @@ class FunctionalTestBase:
99
cluster = None
1010

1111
@classmethod
12-
def setup_cluster(cls) -> None:
13-
cls.cluster = KiKiMR(configurator=KikimrConfigGenerator(
12+
def setup_cluster(cls, table_service_config: dict = {}, memory_controller_config: dict = {}) -> None:
13+
config_generator = KikimrConfigGenerator(
1414
domain_name='local',
1515
extra_feature_flags=["enable_resource_pools"],
1616
use_in_memory_pdisks=True,
17-
))
17+
)
18+
if table_service_config:
19+
config_generator.yaml_config["table_service_config"] = table_service_config
20+
21+
if memory_controller_config:
22+
config_generator.yaml_config["memory_controller_config"] = memory_controller_config
23+
24+
cls.cluster = KiKiMR(configurator=config_generator)
1825
cls.cluster.start()
1926
node = cls.cluster.nodes[1]
2027
YdbCluster.reset(

ydb/tests/olap/load/lib/tpch.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ class TpchSuiteBase(LoadSuiteBase):
1111
workload_type: WorkloadType = WorkloadType.TPC_H
1212
iterations: int = 3
1313
tables_size: dict[str, int] = {}
14+
skip_tests: list = []
1415

1516
@classmethod
1617
def _get_tables_size(cls) -> dict[str, int]:
@@ -42,6 +43,8 @@ def do_setup_class(cls):
4243

4344
@pytest.mark.parametrize('query_num', [i for i in range(1, 23)])
4445
def test_tpch(self, query_num: int):
46+
if query_num in self.skip_tests:
47+
return
4548
self.run_workload_test(self._get_path(), query_num)
4649

4750

0 commit comments

Comments
 (0)