diff --git a/lib/bencher_comment/src/lib.rs b/lib/bencher_comment/src/lib.rs index be2aba099..a45692923 100644 --- a/lib/bencher_comment/src/lib.rs +++ b/lib/bencher_comment/src/lib.rs @@ -30,11 +30,22 @@ pub struct ReportComment { benchmark_count: usize, missing_threshold: HashSet, json_report: JsonReport, + sub_adapter: SubAdapter, source: String, } +pub struct SubAdapter { + pub build_time: bool, + pub file_size: bool, +} + impl ReportComment { - pub fn new(console_url: Url, json_report: JsonReport, source: String) -> Self { + pub fn new( + console_url: Url, + json_report: JsonReport, + sub_adapter: SubAdapter, + source: String, + ) -> Self { Self { console_url, project_slug: json_report.project.slug.clone(), @@ -43,6 +54,7 @@ impl ReportComment { benchmark_count: json_report.results.iter().map(Vec::len).sum(), missing_threshold: Measure::missing_threshold(&json_report), json_report, + sub_adapter, source, } } @@ -543,10 +555,20 @@ impl ReportComment { let id = id.map_or_else( || { format!( - "{branch}/{testbed}/{adapter}", + "{branch}/{testbed}/{adapter}{build_time}{file_size}", branch = self.json_report.branch.slug, testbed = self.json_report.testbed.slug, - adapter = self.json_report.adapter + adapter = self.json_report.adapter, + build_time = if self.sub_adapter.build_time { + "-build_time" + } else { + "" + }, + file_size = if self.sub_adapter.file_size { + "-file_size" + } else { + "" + }, ) }, ToString::to_string, diff --git a/services/cli/src/bencher/sub/project/run/mod.rs b/services/cli/src/bencher/sub/project/run/mod.rs index c9fe833cc..bc4fb7cbb 100644 --- a/services/cli/src/bencher/sub/project/run/mod.rs +++ b/services/cli/src/bencher/sub/project/run/mod.rs @@ -19,6 +19,7 @@ mod error; mod fold; mod format; pub mod runner; +mod sub_adapter; pub mod thresholds; use branch::Branch; @@ -26,6 +27,7 @@ use ci::Ci; pub use error::RunError; use format::Format; use runner::Runner; +use sub_adapter::SubAdapter; use thresholds::Thresholds; use crate::bencher::SubCmd; @@ -37,6 +39,7 @@ pub struct Run { branch: Branch, testbed: NameId, adapter: Adapter, + sub_adapter: SubAdapter, average: Option, iter: usize, fold: Option, @@ -80,6 +83,7 @@ impl TryFrom for Run { branch: branch.try_into().map_err(RunError::Branch)?, testbed, adapter: adapter.into(), + sub_adapter: (&cmd).into(), average: average.map(Into::into), iter, fold: fold.map(Into::into), @@ -206,13 +210,12 @@ impl Run { .get_console_url() .await .map_err(RunError::ConsoleUrl)?; - let report_comment = ReportComment::new( - console_url, - json_report, - self.ci - .as_ref() - .map_or_else(|| "cli".to_owned(), Ci::source), - ); + let source = self + .ci + .as_ref() + .map_or_else(|| "cli".to_owned(), Ci::source); + let report_comment = + ReportComment::new(console_url, json_report, self.sub_adapter.into(), source); let report_str = match self.format { Format::Human => report_comment.human(), diff --git a/services/cli/src/bencher/sub/project/run/sub_adapter.rs b/services/cli/src/bencher/sub/project/run/sub_adapter.rs new file mode 100644 index 000000000..f8480c88d --- /dev/null +++ b/services/cli/src/bencher/sub/project/run/sub_adapter.rs @@ -0,0 +1,32 @@ +use crate::parser::project::run::CliRunCommand; + +#[derive(Debug, Clone, Copy)] +pub struct SubAdapter { + build_time: bool, + file_size: bool, +} + +impl From<&CliRunCommand> for SubAdapter { + fn from(cmd: &CliRunCommand) -> Self { + Self { + build_time: cmd.build_time, + file_size: cmd + .file_size + .as_ref() + .is_some_and(|paths| !paths.is_empty()), + } + } +} + +impl From for bencher_comment::SubAdapter { + fn from(sub_adapter: SubAdapter) -> Self { + let SubAdapter { + build_time, + file_size, + } = sub_adapter; + Self { + build_time, + file_size, + } + } +}