#[cfg(feature = "workload-batch-gen")]
pub mod batch_gen;
#[cfg(feature = "workload-batch-gen")]
mod batch_reader;
mod error;
#[cfg(feature = "workload-runner")]
mod runner;
#[cfg(feature = "workload-batch-gen")]
mod transaction_reader;
use crate::error::InvalidStateError;
use crate::protocol::batch::BatchPair;
use crate::protocol::transaction::TransactionPair;
#[cfg(feature = "workload-runner")]
pub use crate::workload::runner::{HttpRequestCounter, WorkloadRunner};
pub trait TransactionWorkload: Send {
fn next_transaction(
&mut self,
) -> Result<(TransactionPair, Option<ExpectedBatchResult>), InvalidStateError>;
}
pub trait BatchWorkload: Send {
fn next_batch(&mut self)
-> Result<(BatchPair, Option<ExpectedBatchResult>), InvalidStateError>;
}
#[derive(Clone)]
pub enum ExpectedBatchResult {
Invalid,
Valid,
}
#[cfg(test)]
pub mod tests {
use super::*;
pub fn test_transaction_workload(workload: &mut dyn TransactionWorkload) {
workload.next_transaction().unwrap();
workload.next_transaction().unwrap();
}
pub fn test_batch_workload(workload: &mut dyn BatchWorkload) {
workload.next_batch().unwrap();
workload.next_batch().unwrap();
}
}