aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/working_links.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/swarm/working_links.rs')
-rw-r--r--src/swarm/working_links.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/swarm/working_links.rs b/src/swarm/working_links.rs
index 873baf6..13337b9 100644
--- a/src/swarm/working_links.rs
+++ b/src/swarm/working_links.rs
@@ -107,9 +107,21 @@ pub(crate) struct Pending {
/// Checks done (`check`), for the benchmark to wait for one (`settled`).
#[cfg(test)]
checks: u64,
- /// Records written, for the soak (`written`).
+ /// Records written, for the soak (`written`); and of those, how many changed
+ /// `unreached`, how many `reached`.
#[cfg(test)]
written: u64,
+ #[cfg(test)]
+ written_unreached: u64,
+ #[cfg(test)]
+ written_reached: u64,
+}
+
+/// How many records we wrote that changed `unreached`, and `reached`.
+#[cfg(test)]
+pub(crate) fn written_by_set(state: &AppState) -> (u64, u64) {
+ let pending = state.working_links.lock_or_recover();
+ (pending.written_unreached, pending.written_reached)
}
/// How many times we wrote our record.
@@ -248,6 +260,11 @@ pub(crate) async fn check(state: &AppState) {
return;
}
let (unreached, reached) = (next.unreached.len(), next.reached.len());
+ #[cfg(test)]
+ let changed = (
+ next.unreached != recorded.unreached,
+ next.reached != recorded.reached,
+ );
match state
.mutate_doc(move |doc| members::set_links(doc, &me, &next))
.await
@@ -255,7 +272,10 @@ pub(crate) async fn check(state: &AppState) {
Ok(()) => {
#[cfg(test)]
{
- state.working_links.lock_or_recover().written += 1;
+ let mut pending = state.working_links.lock_or_recover();
+ pending.written += 1;
+ pending.written_unreached += u64::from(changed.0);
+ pending.written_reached += u64::from(changed.1);
}
info!(
unreached,