|
1 | 1 | use crate::agent::Capabilities; |
2 | 2 | use crate::experiments::{Assignee, Experiment}; |
3 | 3 | use crate::prelude::*; |
4 | | -use crate::results::{DatabaseDB, EncodingType, ProgressData}; |
| 4 | +use crate::results::{DatabaseDB, EncodingType, FailureReason, ProgressData, TestResult}; |
5 | 5 | use crate::server::agents::WorkerInfo; |
6 | 6 | use crate::server::api_types::{AgentConfig, ApiResponse}; |
7 | 7 | use crate::server::auth::{auth_filter, AuthDetails}; |
@@ -238,11 +238,41 @@ impl RecordProgressThread { |
238 | 238 | .with_label_values(&["record_progress_worker"]) |
239 | 239 | .observe(start.elapsed().as_secs_f64()); |
240 | 240 |
|
| 241 | + let to_metric = |f: &FailureReason| match f { |
| 242 | + FailureReason::Unknown => "unknown", |
| 243 | + FailureReason::OOM => "oom", |
| 244 | + FailureReason::NoSpace => "no-space", |
| 245 | + FailureReason::Timeout => "timeout", |
| 246 | + FailureReason::ICE => "ice", |
| 247 | + FailureReason::NetworkAccess => "network-access", |
| 248 | + FailureReason::Docker => "docker", |
| 249 | + FailureReason::CompilerDiagnosticChange => "compiler-diagnostic-change", |
| 250 | + FailureReason::CompilerError(_) => "compiler-error", |
| 251 | + FailureReason::DependsOn(_) => "dependency", |
| 252 | + }; |
| 253 | + |
241 | 254 | metrics |
242 | 255 | .crater_progress_report |
243 | 256 | .with_label_values(&[ |
244 | 257 | ex.name.as_str(), |
245 | | - &result.data.result.result.to_string(), |
| 258 | + // Reduce cardinality on the error kind to reduce # of distinct |
| 259 | + // metrics created. |
| 260 | + &match &result.data.result.result { |
| 261 | + TestResult::BrokenCrate(r) => format!("broken-crate:{}", r), |
| 262 | + TestResult::PrepareFail(r) => { |
| 263 | + format!("prepare-fail:{}", to_metric(r)) |
| 264 | + } |
| 265 | + TestResult::BuildFail(r) => { |
| 266 | + format!("build-fail:{}", to_metric(r)) |
| 267 | + } |
| 268 | + TestResult::TestFail(r) => { |
| 269 | + format!("test-fail:{}", to_metric(r)) |
| 270 | + } |
| 271 | + TestResult::TestSkipped => "test-skipped".to_owned(), |
| 272 | + TestResult::TestPass => "test-pass".to_owned(), |
| 273 | + TestResult::Skipped => "skipped".to_owned(), |
| 274 | + TestResult::Error => "error".to_owned(), |
| 275 | + }, |
246 | 276 | ]) |
247 | 277 | .inc(); |
248 | 278 | } |
|
0 commit comments