use super::*;
use crate::config::workflow::{CompactionConfig, compaction::IntermediateCompaction};
mod derive;
fn cfg(trigger: CompactionTrigger, n: Option<u32>) -> CompactionConfig {
CompactionConfig {
intermediate: IntermediateCompaction {
trigger,
n,
keep_recent: None,
keep_recent_tokens: None,
extract_bytes: None,
},
}
}
fn st(commits: u32, seconds: u64, flush: bool) -> CheckpointState {
CheckpointState {
commits_since_checkpoint: commits,
seconds_since_checkpoint: seconds,
flush_requested: flush,
is_checkpoint_child: false,
compaction_in_flight: false,
last_usage: None,
}
}
#[test]
fn no_config_never_compacts() {
assert!(!due(None, &st(1000, 1000, true)).unwrap());
}
#[test]
fn every_n_commits_fires_at_or_past_the_threshold() {
let c = cfg(CompactionTrigger::EveryNCommits, Some(3));
assert!(!due(Some(&c), &st(2, 0, false)).unwrap());
assert!(due(Some(&c), &st(3, 0, false)).unwrap());
assert!(due(Some(&c), &st(4, 0, false)).unwrap());
}
#[test]
fn every_t_seconds_fires_at_or_past_the_threshold() {
let c = cfg(CompactionTrigger::EveryTSeconds, Some(10));
assert!(!due(Some(&c), &st(0, 9, false)).unwrap());
assert!(due(Some(&c), &st(0, 10, false)).unwrap());
}
#[test]
fn on_flush_fires_only_when_the_agent_elects_it() {
let c = cfg(CompactionTrigger::OnFlush, None);
assert!(!due(Some(&c), &st(9999, 9999, false)).unwrap());
assert!(due(Some(&c), &st(0, 0, true)).unwrap());
}
#[test]
fn a_malformed_threshold_fails_closed() {
assert!(
!due(
Some(&cfg(CompactionTrigger::EveryNCommits, None)),
&st(100, 0, false)
)
.unwrap()
);
assert!(
!due(
Some(&cfg(CompactionTrigger::EveryTSeconds, Some(0))),
&st(0, 100, false)
)
.unwrap()
);
}
#[test]
fn a_checkpoint_child_is_never_compaction_eligible() {
let compactor = CheckpointState {
is_checkpoint_child: true,
..st(9999, 9999, true)
};
for c in [
cfg(CompactionTrigger::EveryNCommits, Some(1)),
cfg(CompactionTrigger::EveryTSeconds, Some(1)),
cfg(CompactionTrigger::OnFlush, None),
] {
assert!(
!due(Some(&c), &compactor).unwrap(),
"{:?}",
c.intermediate.trigger
);
assert!(due(Some(&c), &st(9999, 9999, true)).unwrap());
}
}
#[test]
fn a_branch_with_a_compaction_in_flight_is_never_due() {
let waiting = CheckpointState {
compaction_in_flight: true,
..st(9999, 9999, true)
};
for c in [
cfg(CompactionTrigger::EveryNCommits, Some(1)),
cfg(CompactionTrigger::EveryTSeconds, Some(1)),
cfg(CompactionTrigger::OnFlush, None),
] {
assert!(
!due(Some(&c), &waiting).unwrap(),
"{:?}",
c.intermediate.trigger
);
assert!(due(Some(&c), &st(9999, 9999, true)).unwrap());
}
}
#[test]
fn window_percent_routes_through_the_last_usage() {
let c = cfg(CompactionTrigger::WindowPercent, Some(50));
let filled = |prompt| CheckpointState {
last_usage: Some(LastUsage {
prompt_tokens: prompt,
context_window: Some(200),
model: "m".into(),
}),
..st(9999, 9999, false)
};
assert!(!due(Some(&c), &filled(99)).unwrap());
assert!(due(Some(&c), &filled(100)).unwrap());
assert!(!due(Some(&c), &st(9999, 9999, false)).unwrap());
}
#[test]
fn the_two_suppressors_answer_ahead_of_the_windows_decline() {
let c = cfg(CompactionTrigger::WindowPercent, Some(50));
let blind = LastUsage {
prompt_tokens: 9999,
context_window: None,
model: "m".into(),
};
for excluded in [
CheckpointState {
is_checkpoint_child: true,
last_usage: Some(blind.clone()),
..st(0, 0, false)
},
CheckpointState {
compaction_in_flight: true,
last_usage: Some(blind.clone()),
..st(0, 0, false)
},
] {
assert!(!due(Some(&c), &excluded).unwrap());
}
let reached = CheckpointState {
last_usage: Some(blind),
..st(0, 0, false)
};
assert!(due(Some(&c), &reached).is_err());
}