diff options
| author | Alexey Zatelepin <[email protected]> | 2026-07-20 15:04:14 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-07-20 12:04:14 +0000 |
| commit | d3b0ad28dc21de4fdbfc78670e78fdd4a3ceb0dc (patch) | |
| tree | aec81d9559de95b53c254e69bf922ebe586473d5 | |
| parent | b92b4bf768c6e39fae76cdd05097e1a00a0fc248 (diff) | |
Fix TPC-C test node checks (#46662)
| -rw-r--r-- | ydb/tests/olap/load/lib/conftest.py | 11 | ||||
| -rw-r--r-- | ydb/tests/olap/load/lib/tpcc.py | 8 |
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) |
