summaryrefslogtreecommitdiff
path: root/src/bin/obnam-benchmark.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/obnam-benchmark.rs')
-rw-r--r--src/bin/obnam-benchmark.rs18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/bin/obnam-benchmark.rs b/src/bin/obnam-benchmark.rs
index 8b75229..37972f5 100644
--- a/src/bin/obnam-benchmark.rs
+++ b/src/bin/obnam-benchmark.rs
@@ -90,8 +90,9 @@ impl Run {
let spec = Specification::from_file(&self.spec)?;
let builder = ObnamBuilder::new(&self.obnam)?;
let obnam_version = builder.version()?;
+ let obnam_commit = builder.commit();
let mut suite = Suite::new(&builder)?;
- let mut result = SuiteMeasurements::new(obnam_version)?;
+ let mut result = SuiteMeasurements::new(obnam_version, obnam_commit)?;
for step in spec.steps().iter() {
result.push(suite.execute(step)?);
}
@@ -182,6 +183,10 @@ impl Steps {
#[derive(Debug, StructOpt)]
struct Report {
+ /// File where to write the report. Stdout by default.
+ #[structopt(short, long, parse(from_os_str))]
+ output: Option<PathBuf>,
+
/// Names of the results file for which to produce a report.
#[structopt(parse(from_os_str))]
filenames: Vec<PathBuf>,
@@ -190,11 +195,16 @@ struct Report {
impl Report {
fn run(&self) -> anyhow::Result<()> {
info!("Reporting results");
- let mut report = Reporter::default();
+ let mut reporter = Reporter::default();
for filename in self.filenames.iter() {
- report.push(SuiteMeasurements::from_file(filename)?);
+ reporter.push(SuiteMeasurements::from_file(filename)?);
+ }
+ if let Some(output) = &self.output {
+ let mut file = File::create(output)?;
+ reporter.write(&mut file)?;
+ } else {
+ reporter.write(&mut std::io::stdout())?;
}
- report.write(&mut std::io::stdout())?;
Ok(())
}
}