diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-12-19 09:09:25 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-12-19 09:09:25 +0000 |
commit | 9f170606eb4fc24086274b446bb77cc1195280f0 (patch) | |
tree | 241a868b1018433f6bf17f8f85fead56e96b1b54 /src/suite.rs | |
parent | e5a830248d8a5d68a701377e0935fc9a8e3785a1 (diff) | |
parent | bdf6e5306aab0a7183d36d6a45d91e307fb9a4b7 (diff) | |
download | obnam-benchmark-9f170606eb4fc24086274b446bb77cc1195280f0.tar.gz |
Merge branch 'obnam-server' into 'main'
feat: add abstraction for daemons and managing them
See merge request obnam/obnam-benchmark!2
Diffstat (limited to 'src/suite.rs')
-rw-r--r-- | src/suite.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/suite.rs b/src/suite.rs index 435c476..0f49994 100644 --- a/src/suite.rs +++ b/src/suite.rs @@ -1,5 +1,7 @@ +use crate::daemon::DaemonManager; use crate::obnam::{Obnam, ObnamError}; use crate::result::{Measurement, OpMeasurements, Operation}; +use crate::server::{ObnamServer, ObnamServerError}; use crate::specification::{Create, FileCount}; use crate::step::Step; use log::{debug, info}; @@ -13,6 +15,7 @@ use walkdir::WalkDir; /// This manages temporary data created for the benchmarks, and /// executes individual steps in the suite. pub struct Suite { + manager: DaemonManager, benchmark: Option<Benchmark>, } @@ -38,11 +41,18 @@ pub enum SuiteError { /// Error managing an Obnam system. #[error(transparent)] Obnam(#[from] ObnamError), + + /// Error managing an Obnam server. + #[error(transparent)] + Server(#[from] ObnamServerError), } impl Suite { pub fn new() -> Result<Self, SuiteError> { - Ok(Self { benchmark: None }) + Ok(Self { + manager: DaemonManager::new(), + benchmark: None, + }) } /// Execute one step in the benchmark suite. @@ -54,7 +64,7 @@ impl Suite { let mut om = match step { Step::Start(name) => { assert!(self.benchmark.is_none()); - let mut benchmark = Benchmark::new(name)?; + let mut benchmark = Benchmark::new(name, &self.manager)?; let om = benchmark.start()?; self.benchmark = Some(benchmark); om @@ -104,13 +114,15 @@ struct Benchmark { // Obnam, and thereby delete any temporary files. We want to do // that intentionally, so that it can be measured. obnam: Option<Obnam>, + server: Option<ObnamServer>, } impl Benchmark { - fn new(name: &str) -> Result<Self, SuiteError> { + fn new(name: &str, manager: &DaemonManager) -> Result<Self, SuiteError> { Ok(Self { name: name.to_string(), obnam: Some(Obnam::new()?), + server: Some(ObnamServer::new(manager)?), }) } @@ -132,6 +144,7 @@ impl Benchmark { info!("ending benchmark {}", self.name); self.obnam().stop_server()?; self.obnam.take().unwrap(); // This destroys the Obnam + self.server.as_mut().unwrap().stop(); Ok(OpMeasurements::new(self.name(), Operation::Stop)) } |