diff options
| author | Kirill Rysin <[email protected]> | 2025-10-02 12:37:24 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-10-02 10:37:24 +0000 |
| commit | 8ba1afcee952ab9b484ce656b42e6c78e08696ea (patch) | |
| tree | 058a3b564db99a70de26bec0aa1a04bc2e986cee /.github/scripts/analytics | |
| parent | 0bf38aa928934c9db08c6a173cbe6e80954d2f8f (diff) | |
Nemesis: send build and sanitizer to db (#26193)
Diffstat (limited to '.github/scripts/analytics')
| -rw-r--r-- | .github/scripts/analytics/data_mart_queries/stability_aggregate_mart.sql | 29 | ||||
| -rw-r--r-- | .github/scripts/analytics/data_mart_queries/stability_per_run_mart.sql | 27 |
2 files changed, 49 insertions, 7 deletions
diff --git a/.github/scripts/analytics/data_mart_queries/stability_aggregate_mart.sql b/.github/scripts/analytics/data_mart_queries/stability_aggregate_mart.sql index ea277053772..5298915448b 100644 --- a/.github/scripts/analytics/data_mart_queries/stability_aggregate_mart.sql +++ b/.github/scripts/analytics/data_mart_queries/stability_aggregate_mart.sql @@ -93,9 +93,9 @@ $all_possible_tests = SELECT CAST(JSON_VALUE(s.Stats, '$.nodes_with_issues') AS Int32) AS NodesWithIssues, -- Ошибки и диагностика - JSON_VALUE(s.Stats, '$.node_error_messages') AS NodeErrorMessages, -- JSON массив с подробностями ошибок нод - JSON_VALUE(s.Stats, '$.workload_error_messages') AS WorkloadErrorMessages, -- JSON массив с ошибками workload - JSON_VALUE(s.Stats, '$.workload_warning_messages') AS WorkloadWarningMessages, -- JSON массив с предупреждениями workload + JSON_QUERY(s.Stats, '$.node_error_messages') AS NodeErrorMessages, -- JSON массив с подробностями ошибок нод + JSON_QUERY(s.Stats, '$.workload_error_messages') AS WorkloadErrorMessages, -- JSON массив с ошибками workload + JSON_QUERY(s.Stats, '$.workload_warning_messages') AS WorkloadWarningMessages, -- JSON массив с предупреждениями workload -- Настройки теста CASE WHEN JSON_VALUE(s.Stats, '$.use_iterations') = 'true' THEN 1U ELSE 0U END AS UseIterations, @@ -133,7 +133,7 @@ $all_possible_tests = SELECT ELSE NULL END AS ClusterMonitoring, CAST(JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.cluster.nodes_count') AS Int32) AS NodesCount, - JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.cluster.nodes_info') AS NodesInfo, -- JSON массив с информацией о нодах + JSON_QUERY(COALESCE(s.Info, v.VerificationInfo), '$.cluster.nodes_info') AS NodesInfo, -- JSON массив с информацией о нодах JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.ci_version') AS CiVersion, JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.test_tools_version') AS TestToolsVersion, JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.report_url') AS ReportUrl, @@ -143,6 +143,8 @@ $all_possible_tests = SELECT JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.ci_job_title') AS CiJobTitle, JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.ci_cluster_name') AS CiClusterName, JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.ci_nemesis') AS CiNemesis, + JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.ci_build_type') AS CiBuildType, + JSON_VALUE(COALESCE(s.Info, v.VerificationInfo), '$.ci_sanitizer') AS CiSanitizer, -- Флаг того, что тест имел успешную верификацию v.VerificationSuccess AS HadVerification, @@ -228,6 +230,8 @@ SELECT agg.CiJobTitle, agg.CiClusterName, agg.CiNemesis, + agg.CiBuildType, + agg.CiSanitizer, agg.HadVerification, agg.OrderInRun, @@ -252,6 +256,23 @@ SELECT ELSE NULL END AS DurationRatio, + -- Типы найденных ошибок нод (анализ node_error_messages) + CASE + WHEN agg.NodeErrorMessages IS NULL OR CAST(agg.NodeErrorMessages AS String) = '[]' OR CAST(agg.NodeErrorMessages AS String) = '' THEN NULL + ELSE + ListConcat( + ListUniq( + ListNotNull(AsList( + CASE WHEN CAST(agg.NodeErrorMessages AS String) LIKE '%coredump%' THEN 'Coredump' ELSE NULL END, + CASE WHEN CAST(agg.NodeErrorMessages AS String) LIKE '%OOM%' OR CAST(agg.NodeErrorMessages AS String) LIKE '%experienced OOM%' THEN 'OOM' ELSE NULL END, + CASE WHEN CAST(agg.NodeErrorMessages AS String) LIKE '%VERIFY%' OR CAST(agg.NodeErrorMessages AS String) LIKE '%verify%' THEN 'Verify' ELSE NULL END, + CASE WHEN CAST(agg.NodeErrorMessages AS String) LIKE '%SAN%' OR CAST(agg.NodeErrorMessages AS String) LIKE '%sanitizer%' THEN 'SAN' ELSE NULL END + )) + ), + ', ' + ) + END AS FacedNodeErrors, + -- Общий статус выполнения CASE WHEN agg.IsCrashed = 1U AND agg.HadVerification = 0U THEN 'cluster_down_on_start' -- _Verification есть, но Success != 1 diff --git a/.github/scripts/analytics/data_mart_queries/stability_per_run_mart.sql b/.github/scripts/analytics/data_mart_queries/stability_per_run_mart.sql index db9a615d5ed..43fd8e9613f 100644 --- a/.github/scripts/analytics/data_mart_queries/stability_per_run_mart.sql +++ b/.github/scripts/analytics/data_mart_queries/stability_per_run_mart.sql @@ -19,9 +19,8 @@ $per_run_data = SELECT CASE WHEN JSON_VALUE(Stats, '$.nemesis_enabled') = 'true' THEN 1U ELSE 0U END AS NemesisEnabled, JSON_VALUE(Stats, '$.error_message') AS ErrorMessage, JSON_VALUE(Stats, '$.warning_message') AS WarningMessage, + JSON_QUERY(Stats, '$.node_error_messages') AS NodeErrorMessages, -- JSON массив с ошибками нод (если доступен) CAST(JSON_VALUE(Stats, '$.run_id') AS Uint64) AS StatsRunId, - -- NOTE: Информация об ошибках нод доступна только в агрегированных данных - -- чтобы избежать неточной временной привязки ошибок к конкретным запускам -- Извлекаем информацию о кластере из Info JSON JSON_VALUE(Info, '$.cluster.version') AS ClusterVersion, @@ -40,7 +39,7 @@ $per_run_data = SELECT ELSE NULL END AS ClusterMonitoring, CAST(JSON_VALUE(Info, '$.cluster.nodes_count') AS Int32) AS NodesCount, - JSON_VALUE(Info, '$.cluster.nodes_info') AS NodesInfo, -- JSON массив с информацией о нодах + JSON_QUERY(Info, '$.cluster.nodes_info') AS NodesInfo, -- JSON массив с информацией о нодах JSON_VALUE(Info, '$.ci_version') AS CiVersion, JSON_VALUE(Info, '$.test_tools_version') AS TestToolsVersion, JSON_VALUE(Info, '$.report_url') AS ReportUrl, @@ -50,6 +49,8 @@ $per_run_data = SELECT JSON_VALUE(Info, '$.ci_job_title') AS CiJobTitle, JSON_VALUE(Info, '$.ci_cluster_name') AS CiClusterName, JSON_VALUE(Info, '$.ci_nemesis') AS CiNemesis, + JSON_VALUE(Info, '$.ci_build_type') AS CiBuildType, + JSON_VALUE(Info, '$.ci_sanitizer') AS CiSanitizer, -- Порядок выполнения теста в рамках RunId (на основе Timestamp) ROW_NUMBER() OVER (PARTITION BY RunId ORDER BY Timestamp) AS OrderInRun @@ -74,6 +75,7 @@ SELECT NemesisEnabled, ErrorMessage, WarningMessage, + NodeErrorMessages, StatsRunId, ClusterVersion, ClusterVersionLink, @@ -88,6 +90,8 @@ SELECT CiJobTitle, CiClusterName, CiNemesis, + CiBuildType, + CiSanitizer, TestToolsVersion, ReportUrl, CiLaunchId, @@ -98,6 +102,23 @@ SELECT COALESCE(SubString(CAST(CiVersion AS String), 0U, FIND(CAST(CiVersion AS String), '.')), 'unknown') AS CiBranch, COALESCE(SubString(CAST(TestToolsVersion AS String), 0U, FIND(CAST(TestToolsVersion AS String), '.')), 'unknown') AS TestToolsBranch, + -- Типы найденных ошибок нод (анализ node_error_messages) + CASE + WHEN NodeErrorMessages IS NULL OR CAST(NodeErrorMessages AS String) = '[]' OR CAST(NodeErrorMessages AS String) = '' THEN NULL + ELSE + ListConcat( + ListUniq( + ListNotNull(AsList( + CASE WHEN CAST(NodeErrorMessages AS String) LIKE '%coredump%' THEN 'Coredump' ELSE NULL END, + CASE WHEN CAST(NodeErrorMessages AS String) LIKE '%OOM%' OR CAST(NodeErrorMessages AS String) LIKE '%experienced OOM%' THEN 'OOM' ELSE NULL END, + CASE WHEN CAST(NodeErrorMessages AS String) LIKE '%VERIFY%' OR CAST(NodeErrorMessages AS String) LIKE '%verify%' THEN 'Verify' ELSE NULL END, + CASE WHEN CAST(NodeErrorMessages AS String) LIKE '%SAN%' OR CAST(NodeErrorMessages AS String) LIKE '%sanitizer%' THEN 'SAN' ELSE NULL END + )) + ), + ', ' + ) + END AS FacedNodeErrors, + -- Статус выполнения CASE WHEN Resolution = 'ok' THEN 'success' |
