@@ -144,7 +144,8 @@ def _init_iter(self, iter_num: int) -> None:
144144 if iter_num not in self .result .iterations :
145145 self .result .iterations [iter_num ] = YdbCliHelper .Iteration ()
146146
147- def _process_returncode (self , returncode ) -> None :
147+ def _parse_stderr (self , stderr : str ) -> None :
148+ self .result .stderr = stderr
148149 begin_str = f'{ self .query_num } :'
149150 end_str = 'Query text:'
150151 iter_str = 'iteration '
@@ -167,6 +168,8 @@ def _process_returncode(self, returncode) -> None:
167168 self ._init_iter (iter )
168169 self .result .iterations [iter ].error_message = msg
169170 self ._add_error (f'Iteration { iter } : { msg } ' )
171+
172+ def _process_returncode (self , returncode ) -> None :
170173 if returncode != 0 and len ([x for x in filter (lambda x : x .error_message or x .warning_message , self .result .iterations .values ())]) == 0 :
171174 self ._add_error (f'Invalid return code: { returncode } instead 0. stderr: { self .result .stderr } ' )
172175
@@ -239,7 +242,8 @@ def _check_nodes(self):
239242 node_errors .append (f'Node { node } is down' )
240243 self ._add_error ('\n ' .join (node_errors ))
241244
242- def _parse_stdout (self ):
245+ def _parse_stdout (self , stdout : str ) -> None :
246+ self .result .stdout = stdout
243247 for line in self .result .stdout .splitlines ():
244248 m = re .search (r'iteration ([0-9]*):\s*ok\s*([\.0-9]*)s' , line )
245249 if m is not None :
@@ -269,25 +273,21 @@ def _get_cmd(self) -> list[str]:
269273 cmd += ['--scale' , str (self .scale )]
270274 return cmd
271275
272- def _exec_cli (self ) -> None :
273- process = yatest .common .process .execute (self ._get_cmd (), check_exit_code = False )
274- self .result .stdout = process .stdout .decode ('utf-8' , 'replace' )
275- self .result .stderr = process .stderr .decode ('utf-8' , 'replace' )
276- self ._process_returncode (process .returncode )
277- self ._parse_stdout ()
278-
279276 def process (self ) -> YdbCliHelper .WorkloadRunResult :
280277 try :
281278 wait_error = YdbCluster .wait_ydb_alive (int (os .getenv ('WAIT_CLUSTER_ALIVE_TIMEOUT' , 20 * 60 )), self .db_path )
282279 if wait_error is not None :
283280 self .result .error_message = wait_error
284281 else :
285282 self ._nodes_info = self ._get_nodes_info ()
286- self ._exec_cli ()
283+ process = yatest .common .process .execute (self ._get_cmd (), check_exit_code = False )
284+ self ._parse_stderr (process .stderr .decode ('utf-8' , 'replace' ))
285+ self ._parse_stdout (process .stdout .decode ('utf-8' , 'replace' ))
287286 self ._check_nodes ()
288287 self ._load_stats ()
289288 self ._load_query_out ()
290289 self ._load_plans ()
290+ self ._process_returncode (process .returncode )
291291 except BaseException as e :
292292 self ._add_error (str (e ))
293293 self .result .traceback = e .__traceback__
0 commit comments