summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Zatelepin <[email protected]>2026-07-20 15:04:14 +0300
committerGitHub <[email protected]>2026-07-20 12:04:14 +0000
commitd3b0ad28dc21de4fdbfc78670e78fdd4a3ceb0dc (patch)
treeaec81d9559de95b53c254e69bf922ebe586473d5
parentb92b4bf768c6e39fae76cdd05097e1a00a0fc248 (diff)
Fix TPC-C test node checks (#46662)
-rw-r--r--ydb/tests/olap/load/lib/conftest.py11
-rw-r--r--ydb/tests/olap/load/lib/tpcc.py8
2 files changed, 14 insertions, 5 deletions
diff --git a/ydb/tests/olap/load/lib/conftest.py b/ydb/tests/olap/load/lib/conftest.py
index 09a8fb78658..6b7244dc1ab 100644
--- a/ydb/tests/olap/load/lib/conftest.py
+++ b/ydb/tests/olap/load/lib/conftest.py
@@ -465,7 +465,9 @@ class LoadSuiteBase:
return node_errors
@classmethod
- def process_query_result(cls, result: YdbCliHelper.WorkloadRunResult, query_name: str, upload: bool, allure_table_strings: Optional[dict[str, Any]] = None):
+ def process_query_result(cls, result: YdbCliHelper.WorkloadRunResult, query_name: str, upload: bool,
+ allure_table_strings: Optional[dict[str, Any]] = None,
+ node_errors: Optional[list] = None, verify_errors: Optional[dict] = None):
def _get_duraton(stats, field):
r = stats.get(field)
return float(r) / 1e3 if r is not None else None
@@ -527,9 +529,12 @@ class LoadSuiteBase:
if result.stderr is not None:
allure.attach(cls.__hide_query_text(result.stderr, query_text), 'Stderr', attachment_type=allure.attachment_type.TEXT)
end_time = time()
+ if node_errors is None:
+ node_errors = cls.check_nodes(result, end_time)
allure_test_description(
cls.suite(), query_name,
- start_time=result.start_time, end_time=end_time, node_errors=cls.check_nodes(result, end_time),
+ start_time=result.start_time, end_time=end_time, node_errors=node_errors,
+ verify_errors=verify_errors,
workload_result=result, workload_params=None,
addition_blocks=[
cls.__get_key_measurements_block(result, query_name)
@@ -716,7 +721,7 @@ class LoadSuiteBase:
}
"""
if cls.__nodes_state is None:
- return []
+ return {}
all_hosts = {node.host for node in cls.__nodes_state.values()}
return cls.__get_verify_fails(all_hosts, start_time, end_time)
diff --git a/ydb/tests/olap/load/lib/tpcc.py b/ydb/tests/olap/load/lib/tpcc.py
index c7d07761a03..273424f946f 100644
--- a/ydb/tests/olap/load/lib/tpcc.py
+++ b/ydb/tests/olap/load/lib/tpcc.py
@@ -122,6 +122,7 @@ class TpccSuiteBase(LoadSuiteBase):
def test(self):
assert len(self.get_users()) == 1, 'multiuser TPC-C not supported'
+ self.save_nodes_state()
result = YdbCliHelper.run_tpcc(
remote_cli_path=self._remote_cli_path,
users=self.get_users(),
@@ -131,13 +132,16 @@ class TpccSuiteBase(LoadSuiteBase):
threads=self.threads,
tx_mode=self.tx_mode
)[self.get_users()[0]]
+ end_time = time()
+ verify_errors = type(self).check_nodes_verifies_with_timing(result.start_time, end_time)
+ node_errors = type(self).check_nodes_diagnostics_with_timing(result, result.start_time, end_time)
stats = result.get_stats('test')
measure_start_time = stats.get('tpcc_json', {}).get('summary', {}).get('measure_start_ts', result.start_time)
allure_table_strings = {
'time_warmup': time_interval_str(result.start_time, measure_start_time),
- 'time_measure': time_interval_str(measure_start_time, time())
+ 'time_measure': time_interval_str(measure_start_time, end_time)
}
- self.process_query_result(result, 'test', True, allure_table_strings=allure_table_strings)
+ self.process_query_result(result, 'test', True, allure_table_strings=allure_table_strings, node_errors=node_errors, verify_errors=verify_errors)
if result.success and 'tpcc_json' in stats:
run_type = f'ydb_cli_{str(self.tx_mode).replace("-rw", "")}_{getenv("TPCC_RUN_TYPE", "default")}'
ResultsProcessor.upload_tpcc_results(stats['tpcc_json'], run_type, result.start_time)