27
27
S3_PID_FILE = "s3.pid"
28
28
29
29
30
+ class TestCounter :
31
+ def __init__ (self , tests_count_limit , error_string ):
32
+ self .tests_count_limit = tests_count_limit
33
+ self .error_string = error_string
34
+ self .number_tests = 0
35
+
36
+ def on_test_start (self ):
37
+ self .number_tests += 1
38
+ assert self .number_tests <= self .tests_count_limit , \
39
+ f"{ self .error_string } exceeded limit { self .number_tests } vs { self .tests_count_limit } , " \
40
+ "this may lead timeouts on CI, please split this class"
41
+
42
+
30
43
@pytest .fixture (scope = "module" )
31
44
def mvp_external_ydb_endpoint (request ) -> str :
32
45
return request .param ["endpoint" ] if request is not None and hasattr (request , 'param' ) else None
@@ -61,12 +74,12 @@ def is_s3_ready():
61
74
recipes_common .stop_daemon (pid )
62
75
63
76
64
- @pytest .fixture (scope = "module " )
77
+ @pytest .fixture (scope = "class " )
65
78
def kikimr_settings (request : pytest .FixtureRequest ):
66
79
return getattr (request , "param" , dict ())
67
80
68
81
69
- @pytest .fixture (scope = "module " )
82
+ @pytest .fixture (scope = "class " )
70
83
def kikimr_params (request : pytest .FixtureRequest ):
71
84
return request
72
85
@@ -85,15 +98,22 @@ def get_kikimr_extensions(s3: S3, yq_version: str, kikimr_settings, mvp_external
85
98
]
86
99
87
100
88
- @pytest .fixture (scope = "module" )
89
- def kikimr_yqv1 (kikimr_params : pytest .FixtureRequest , s3 : S3 , kikimr_settings , mvp_external_ydb_endpoint ):
101
+ @pytest .fixture (scope = "class" )
102
+ def kikimr_starts_counter ():
103
+ return TestCounter (25 , "Number kikimr restarts in one class" )
104
+
105
+
106
+ @pytest .fixture (scope = "class" )
107
+ def kikimr_yqv1 (kikimr_params : pytest .FixtureRequest , s3 : S3 , kikimr_settings , mvp_external_ydb_endpoint , kikimr_starts_counter ):
108
+ kikimr_starts_counter .on_test_start ()
90
109
kikimr_extensions = get_kikimr_extensions (s3 , YQV1_VERSION_NAME , kikimr_settings , mvp_external_ydb_endpoint )
91
110
with start_kikimr (kikimr_params , kikimr_extensions ) as kikimr :
92
111
yield kikimr
93
112
94
113
95
- @pytest .fixture (scope = "module" )
96
- def kikimr_yqv2 (kikimr_params : pytest .FixtureRequest , s3 : S3 , kikimr_settings , mvp_external_ydb_endpoint ):
114
+ @pytest .fixture (scope = "class" )
115
+ def kikimr_yqv2 (kikimr_params : pytest .FixtureRequest , s3 : S3 , kikimr_settings , mvp_external_ydb_endpoint , kikimr_starts_counter ):
116
+ kikimr_starts_counter .on_test_start ()
97
117
kikimr_extensions = get_kikimr_extensions (s3 , YQV2_VERSION_NAME , kikimr_settings , mvp_external_ydb_endpoint )
98
118
with start_kikimr (kikimr_params , kikimr_extensions ) as kikimr :
99
119
yield kikimr
@@ -115,8 +135,14 @@ def kikimr(yq_version: str, kikimr_yqv1, kikimr_yqv2):
115
135
return kikimr
116
136
117
137
138
+ @pytest .fixture (scope = "class" )
139
+ def tests_counter ():
140
+ return TestCounter (200 , "Number tests in one class" )
141
+
142
+
118
143
@pytest .fixture
119
- def client (kikimr , request = None ):
144
+ def client (kikimr , tests_counter , request = None ):
145
+ tests_counter .on_test_start ()
120
146
client = FederatedQueryClient (
121
147
request .param ["folder_id" ] if request is not None else "my_folder" , streaming_over_kikimr = kikimr
122
148
)
@@ -128,8 +154,5 @@ def client(kikimr, request=None):
128
154
129
155
@pytest .fixture
130
156
def unique_prefix (request : pytest .FixtureRequest ):
131
- name_hash = hash (request .node .name )
132
- if name_hash >= 0 :
133
- return f"p{ name_hash } _"
134
- else :
135
- return f"n{ - name_hash } _"
157
+ name_hash = abs (hash (request .node .name ))
158
+ return f"h{ name_hash } _{ request .function .__name__ } "
0 commit comments