diff --git a/performance-metrics/build.rs b/performance-metrics/build.rs index 8b3fa0b15..9d7ed52cb 100644 --- a/performance-metrics/build.rs +++ b/performance-metrics/build.rs @@ -18,32 +18,9 @@ fn main() { } } - let mut git_revision = "".to_string(); - if let Ok(git_out) = Command::new("git").args(&["rev-parse", "HEAD"]).output() { - if git_out.status.success() { - if let Ok(git_out_str) = String::from_utf8(git_out.stdout) { - git_revision = git_out_str; - } - } - } - - let mut git_committer_date = "".to_string(); - if let Ok(git_out) = Command::new("git") - .args(&["show", "-s", "--format=%cd"]) - .output() - { - if git_out.status.success() { - if let Ok(git_out_str) = String::from_utf8(git_out.stdout) { - git_committer_date = git_out_str; - } - } - } - // This println!() has a special behavior, as it will set the environment - // variable GIT_human_readable, so that it can be reused from the binary. + // variable GIT_HUMAN_READABLE, so that it can be reused from the binary. // Particularly, this is used from the main.rs to display the exact // version information. println!("cargo:rustc-env=GIT_HUMAN_READABLE={}", git_human_readable); - println!("cargo:rustc-env=GIT_REVISION={}", git_revision); - println!("cargo:rustc-env=GIT_COMMITER_DATE={}", git_committer_date); } diff --git a/performance-metrics/src/main.rs b/performance-metrics/src/main.rs index 3847624db..6c60e26c2 100644 --- a/performance-metrics/src/main.rs +++ b/performance-metrics/src/main.rs @@ -14,6 +14,7 @@ use std::{ collections::HashSet, env, fmt, hash::{Hash, Hasher}, + process::Command, sync::mpsc::channel, thread, time::Duration, @@ -50,6 +51,48 @@ pub struct MetricsReport { pub results: Vec, } +impl Default for MetricsReport { + fn default() -> Self { + let mut git_human_readable = "".to_string(); + if let Ok(git_out) = Command::new("git").args(&["describe", "--dirty"]).output() { + if git_out.status.success() { + if let Ok(git_out_str) = String::from_utf8(git_out.stdout) { + git_human_readable = git_out_str; + } + } + } + + let mut git_revision = "".to_string(); + if let Ok(git_out) = Command::new("git").args(&["rev-parse", "HEAD"]).output() { + if git_out.status.success() { + if let Ok(git_out_str) = String::from_utf8(git_out.stdout) { + git_revision = git_out_str; + } + } + } + + let mut git_committer_date = "".to_string(); + if let Ok(git_out) = Command::new("git") + .args(&["show", "-s", "--format=%cd"]) + .output() + { + if git_out.status.success() { + if let Ok(git_out_str) = String::from_utf8(git_out.stdout) { + git_committer_date = git_out_str; + } + } + } + + MetricsReport { + git_human_readable, + git_revision, + git_committer_date, + date: date(), + results: Vec::new(), + } + } +} + pub struct PerformanceTestControl { test_time: u32, test_iterations: u32, @@ -418,13 +461,7 @@ fn main() { }; // Run performance tests sequentially and report results (in both readable/json format) - let mut metrics_report = MetricsReport { - git_human_readable: env!("GIT_HUMAN_READABLE").to_string(), - git_revision: env!("GIT_REVISION").to_string(), - git_committer_date: env!("GIT_COMMITER_DATE").to_string(), - date: date(), - results: Vec::new(), - }; + let mut metrics_report: MetricsReport = Default::default(); init_tests();