diff options
Diffstat (limited to 'src/suite.rs')
-rw-r--r-- | src/suite.rs | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/suite.rs b/src/suite.rs index 43fca8f..86c4c6d 100644 --- a/src/suite.rs +++ b/src/suite.rs @@ -1,3 +1,4 @@ +use crate::builder::{ObnamBuilder, ObnamBuilderError}; use crate::client::{ObnamClient, ObnamClientError}; use crate::daemon::DaemonManager; use crate::junk::junk; @@ -19,6 +20,8 @@ use walkdir::WalkDir; /// This manages temporary data created for the benchmarks, and /// executes individual steps in the suite. pub struct Suite { + client: PathBuf, + server: PathBuf, manager: DaemonManager, benchmark: Option<Benchmark>, } @@ -26,6 +29,10 @@ pub struct Suite { /// Possible errors from running a benchmark suite. #[derive(Debug, thiserror::Error)] pub enum SuiteError { + /// Error building Obnam. + #[error(transparent)] + Build(ObnamBuilderError), + /// Error creating a temporary directory. #[error(transparent)] TempDir(#[from] std::io::Error), @@ -72,8 +79,10 @@ pub enum SuiteError { } impl Suite { - pub fn new() -> Result<Self, SuiteError> { + pub fn new(builder: &ObnamBuilder) -> Result<Self, SuiteError> { Ok(Self { + client: builder.client_binary().to_path_buf(), + server: builder.server_binary().to_path_buf(), manager: DaemonManager::new(), benchmark: None, }) @@ -88,7 +97,8 @@ impl Suite { let mut om = match step { Step::Start(name) => { assert!(self.benchmark.is_none()); - let mut benchmark = Benchmark::new(name, &self.manager)?; + let mut benchmark = + Benchmark::new(&self.client, &self.server, name, &self.manager)?; let om = benchmark.start()?; self.benchmark = Some(benchmark); om @@ -158,11 +168,16 @@ struct Benchmark { } impl Benchmark { - fn new(name: &str, manager: &DaemonManager) -> Result<Self, SuiteError> { - let server = ObnamServer::new(manager)?; + fn new( + client: &Path, + server: &Path, + name: &str, + manager: &DaemonManager, + ) -> Result<Self, SuiteError> { + let server = ObnamServer::new(server, manager)?; let live = tempdir().map_err(SuiteError::TempDir)?; let restored = tempdir().map_err(SuiteError::TempDir)?; - let client = ObnamClient::new(server.url(), live.path().to_path_buf())?; + let client = ObnamClient::new(client, server.url(), live.path().to_path_buf())?; Ok(Self { name: name.to_string(), client, |