summaryrefslogtreecommitdiff
path: root/src/suite.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/suite.rs')
-rw-r--r--src/suite.rs25
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,