66from ydb .tests .olap .lib .ydb_cluster import YdbCluster
77from ydb .tests .olap .lib .allure_utils import allure_test_description
88from ydb .tests .olap .lib .results_processor import ResultsProcessor
9+ from ydb .tests .olap .lib .utils import get_external_param
910from ydb .tests .olap .scenario .helpers .scenario_tests_helper import ScenarioTestHelper
1011from time import time
1112from typing import Optional
1516
1617class LoadSuiteBase :
1718 class QuerySettings :
18- def __init__ (self , iterations : Optional [int ] = None , timeout : Optional [float ] = None ) -> None :
19+ def __init__ (self , iterations : Optional [int ] = None , timeout : Optional [float ] = None , query_prefix : Optional [ str ] = None ) -> None :
1920 self .iterations = iterations
2021 self .timeout = timeout
22+ self .query_prefix = query_prefix
2123
2224 iterations : int = 5
2325 workload_type : WorkloadType = None
@@ -27,6 +29,7 @@ def __init__(self, iterations: Optional[int] = None, timeout: Optional[float] =
2729 query_syntax : str = ''
2830 query_settings : dict [int , LoadSuiteBase .QuerySettings ] = {}
2931 scale : Optional [int ] = None
32+ query_prefix : str = get_external_param ('query-prefix' , '' )
3033
3134 @classmethod
3235 def suite (cls ) -> str :
@@ -36,14 +39,20 @@ def suite(cls) -> str:
3639 return result
3740
3841 @classmethod
39- def _get_iterations (cls , query_num : int ) -> int :
40- q = cls .query_settings .get (query_num , None )
41- return q .iterations if q is not None and q .iterations is not None else cls .iterations
42-
43- @classmethod
44- def _get_timeout (cls , query_num : int ) -> float :
45- q = cls .query_settings .get (query_num , None )
46- return q .timeout if q is not None and q .timeout is not None else cls .timeout
42+ def _get_query_settings (cls , query_num : int ) -> QuerySettings :
43+ result = LoadSuiteBase .QuerySettings (
44+ iterations = cls .iterations ,
45+ timeout = cls .timeout ,
46+ query_prefix = cls .query_prefix
47+ )
48+ q = cls .query_settings .get (query_num , LoadSuiteBase .QuerySettings ())
49+ if q .iterations is not None :
50+ result .iterations = q .iterations
51+ if q .timeout is not None :
52+ result .timeout = q .timeout
53+ if q .query_prefix is not None :
54+ result .query_prefix = q .query_prefix
55+ return result
4756
4857 @classmethod
4958 def _test_name (cls , query_num : int ) -> str :
@@ -204,16 +213,18 @@ def run_workload_test(self, path: str, query_num: int) -> None:
204213 for param in allure_test_result .parameters :
205214 if param .name == 'query_num' :
206215 param .mode = allure .parameter_mode .HIDDEN .value
216+ qparams = self ._get_query_settings (query_num )
207217 start_time = time ()
208218 result = YdbCliHelper .workload_run (
209219 path = path ,
210220 query_num = query_num ,
211- iterations = self . _get_iterations ( query_num ) ,
221+ iterations = qparams . iterations ,
212222 workload_type = self .workload_type ,
213- timeout = self . _get_timeout ( query_num ) ,
223+ timeout = qparams . timeout ,
214224 check_canonical = self .check_canonical ,
215225 query_syntax = self .query_syntax ,
216- scale = self .scale
226+ scale = self .scale ,
227+ query_prefix = qparams .query_prefix
217228 )
218229 allure_test_description (self .suite (), self ._test_name (query_num ), refference_set = self .refference , start_time = start_time , end_time = time ())
219- self .process_query_result (result , query_num , self . _get_iterations ( query_num ) , True )
230+ self .process_query_result (result , query_num , qparams . iterations , True )
0 commit comments