pub const DEFAULT_DISPATCH_THRESHOLD: u64 = 128 * 1024;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Tier {
Kv,
Large,
}
pub(crate) fn route(len: u64, threshold: u64) -> Tier {
if len > threshold {
Tier::Large
} else {
Tier::Kv
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_threshold_is_128_kib() {
assert_eq!(DEFAULT_DISPATCH_THRESHOLD, 131_072);
assert_eq!(DEFAULT_DISPATCH_THRESHOLD, 128 * 1024);
}
#[test]
fn exactly_at_threshold_routes_kv_one_over_routes_large() {
assert_eq!(route(4096, 4096), Tier::Kv);
assert_eq!(route(4095, 4096), Tier::Kv);
assert_eq!(route(4097, 4096), Tier::Large);
}
#[test]
fn boundary_values_route_deterministically() {
assert_eq!(route(0, DEFAULT_DISPATCH_THRESHOLD), Tier::Kv);
assert_eq!(route(131_071, DEFAULT_DISPATCH_THRESHOLD), Tier::Kv);
assert_eq!(route(131_072, DEFAULT_DISPATCH_THRESHOLD), Tier::Kv);
assert_eq!(route(131_073, DEFAULT_DISPATCH_THRESHOLD), Tier::Large);
assert_eq!(route(0, 0), Tier::Kv, "zero-length content always kv");
assert_eq!(
route(1, 0),
Tier::Large,
"threshold 0: everything else large"
);
assert_eq!(route(0, u64::MAX), Tier::Kv, "max threshold: nothing large");
assert_eq!(
route(u64::MAX, u64::MAX),
Tier::Kv,
"at-threshold is kv even at MAX"
);
}
#[test]
fn routing_is_a_pure_function_of_length() {
let len = 103_487;
let first = route(len, DEFAULT_DISPATCH_THRESHOLD);
for _ in 0..32 {
assert_eq!(route(len, DEFAULT_DISPATCH_THRESHOLD), first);
}
}
}