refactor: Extract a constructor for PolicyBackend using a HashMap

pull/24376/head
Carol (Nichols || Goulding) 2022-12-21 14:29:30 -05:00
parent a5c93ec907
commit f121d395cc
No known key found for this signature in database
GPG Key ID: E907EE5A736F87D4
13 changed files with 76 additions and 116 deletions

View File

@ -333,10 +333,7 @@ impl TestStateTtlAndRefresh {
// set up "RNG" that always generates the maximum, so we can test things easier
let rng_overwrite = StepRng::new(u64::MAX, 0);
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(RefreshPolicy::new_inner(
Arc::clone(&time_provider) as _,
Arc::clone(&refresh_duration_provider) as _,
@ -387,10 +384,7 @@ impl TestStateLRUAndRefresh {
// set up "RNG" that always generates the maximum, so we can test things easier
let rng_overwrite = StepRng::new(u64::MAX, 0);
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(RefreshPolicy::new_inner(
Arc::clone(&time_provider) as _,
Arc::clone(&refresh_duration_provider) as _,
@ -440,10 +434,7 @@ impl TestStateTtlAndLRU {
let metric_registry = Arc::new(metric::Registry::new());
let size_estimator = Arc::new(TestSizeEstimator::default());
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(TtlPolicy::new(
Arc::clone(&ttl_provider) as _,
"my_cache",
@ -484,10 +475,7 @@ impl TestStateLruAndRemoveIf {
let metric_registry = Arc::new(metric::Registry::new());
let size_estimator = Arc::new(TestSizeEstimator::default());
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
let pool = Arc::new(ResourcePool::new(
"my_pool",
@ -535,10 +523,7 @@ impl TestStateLruAndRefresh {
// set up "RNG" that always generates the maximum, so we can test things easier
let rng_overwrite = StepRng::new(u64::MAX, 0);
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(RefreshPolicy::new_inner(
Arc::clone(&time_provider) as _,
Arc::clone(&refresh_duration_provider) as _,

View File

@ -856,7 +856,7 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
let policy_constructor = LruPolicy::new(
Arc::clone(&pool),
"id",
@ -879,15 +879,14 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend1 =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend1 = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend1.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id",
Arc::clone(&resource_estimator) as _,
));
let mut backend2 = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend2 = PolicyBackend::hashmap_backed(time_provider);
backend2.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id",
@ -905,8 +904,7 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend1 =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend1 = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend1.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id",
@ -915,7 +913,7 @@ mod tests {
// drop the backend so re-registering the same ID ("id") MUST NOT panic
drop(backend1);
let mut backend2 = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend2 = PolicyBackend::hashmap_backed(time_provider);
backend2.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id",
@ -935,7 +933,7 @@ mod tests {
assert_eq!(pool.current().0, 0);
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
@ -955,8 +953,7 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
@ -988,7 +985,7 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
@ -1015,7 +1012,7 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
@ -1049,16 +1046,14 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend1 =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend1 = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend1.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
Arc::clone(&resource_estimator) as _,
));
let mut backend2 =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend2 = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend2.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id2",
@ -1190,8 +1185,7 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
@ -1237,7 +1231,7 @@ mod tests {
));
let resource_estimator = Arc::new(TestResourceEstimator {});
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
@ -1276,8 +1270,7 @@ mod tests {
let resource_estimator = Arc::new(Provider {});
let mut backend =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id1",
@ -1395,7 +1388,7 @@ mod tests {
&Observation::U64Gauge(0)
);
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id",
@ -1522,7 +1515,7 @@ mod tests {
));
let resource_estimator = Arc::new(ZeroSizeProvider {});
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(LruPolicy::new(
Arc::clone(&pool),
"id",

View File

@ -2,7 +2,7 @@
use std::{
cell::RefCell,
collections::VecDeque,
collections::{HashMap, VecDeque},
fmt::Debug,
hash::Hash,
marker::PhantomData,
@ -288,6 +288,11 @@ where
}
}
/// Create a new backend with a HashMap as the [`CacheBackend`].
pub fn hashmap_backed(time_provider: Arc<dyn TimeProvider>) -> Self {
Self::new(Box::new(HashMap::new()), Arc::clone(&time_provider))
}
/// Adds new policy.
///
/// See documentation of [`PolicyBackend`] for more information.
@ -729,7 +734,7 @@ mod tests {
fn test_generic() {
crate::backend::test_util::test_generic(|| {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
PolicyBackend::new(Box::new(HashMap::new()), time_provider)
PolicyBackend::hashmap_backed(time_provider)
})
}
@ -737,7 +742,7 @@ mod tests {
#[should_panic(expected = "test steps left")]
fn test_meta_panic_steps_left() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Set {
k: String::from("a"),
@ -751,7 +756,7 @@ mod tests {
#[should_panic(expected = "step left for get operation")]
fn test_meta_panic_requires_condition_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![]));
backend.get(&String::from("a"));
@ -761,7 +766,7 @@ mod tests {
#[should_panic(expected = "step left for set operation")]
fn test_meta_panic_requires_condition_set() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![]));
backend.set(String::from("a"), 2);
@ -771,8 +776,7 @@ mod tests {
#[should_panic(expected = "step left for remove operation")]
fn test_meta_panic_requires_condition_remove() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend =
PolicyBackend::<String, usize>::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![]));
backend.remove(&String::from("a"));
@ -782,7 +786,7 @@ mod tests {
#[should_panic(expected = "Condition mismatch")]
fn test_meta_panic_checks_condition_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Get {
k: String::from("a"),
@ -797,7 +801,7 @@ mod tests {
#[should_panic(expected = "Condition mismatch")]
fn test_meta_panic_checks_condition_set() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Set {
k: String::from("a"),
@ -813,7 +817,7 @@ mod tests {
#[should_panic(expected = "Condition mismatch")]
fn test_meta_panic_checks_condition_remove() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Remove {
k: String::from("a"),
@ -827,7 +831,7 @@ mod tests {
#[test]
fn test_basic_propagation() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -875,7 +879,7 @@ mod tests {
#[should_panic(expected = "illegal recursive access")]
fn test_panic_recursion_detection_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Remove {
k: String::from("a"),
@ -892,7 +896,7 @@ mod tests {
#[should_panic(expected = "illegal recursive access")]
fn test_panic_recursion_detection_set() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Remove {
k: String::from("a"),
@ -910,7 +914,7 @@ mod tests {
#[should_panic(expected = "illegal recursive access")]
fn test_panic_recursion_detection_remove() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Remove {
k: String::from("a"),
@ -926,7 +930,7 @@ mod tests {
#[test]
fn test_get_untracked() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -948,7 +952,7 @@ mod tests {
#[test]
fn test_basic_get_set() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Get {
@ -974,7 +978,7 @@ mod tests {
#[test]
fn test_basic_get_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Get {
@ -998,7 +1002,7 @@ mod tests {
#[test]
fn test_basic_set_set_get_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -1040,7 +1044,7 @@ mod tests {
#[test]
fn test_basic_set_remove_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -1073,7 +1077,7 @@ mod tests {
#[test]
fn test_basic_remove_set_get_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Remove {
@ -1114,7 +1118,7 @@ mod tests {
#[test]
fn test_basic_remove_remove_get_get() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Remove {
@ -1153,7 +1157,7 @@ mod tests {
#[test]
fn test_ordering_within_requests_vector() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -1195,7 +1199,7 @@ mod tests {
#[test]
fn test_ordering_across_policies() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -1269,7 +1273,7 @@ mod tests {
#[test]
fn test_ping_pong() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -1364,7 +1368,7 @@ mod tests {
let barrier_post = Arc::new(Barrier::new(1));
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![TestStep {
condition: TestBackendInteraction::Set {
k: String::from("a"),
@ -1391,7 +1395,7 @@ mod tests {
let barrier_post = Arc::new(Barrier::new(2));
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -1460,7 +1464,7 @@ mod tests {
let barrier_post = Arc::new(Barrier::new(2));
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {
@ -1531,7 +1535,7 @@ mod tests {
#[test]
fn test_ordering_within_compound_requests() {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(create_test_policy(vec![
TestStep {
condition: TestBackendInteraction::Set {

View File

@ -857,10 +857,7 @@ mod tests {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let loader = Arc::new(TestLoader::default());
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
let policy_constructor = RefreshPolicy::new(
time_provider,
refresh_duration_provider,
@ -890,10 +887,7 @@ mod tests {
let metric_registry = metric::Registry::new();
let time_provider = Arc::new(MockProvider::new(Time::MAX - Duration::from_secs(1)));
let loader = Arc::new(TestLoader::default());
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(RefreshPolicy::new(
Arc::clone(&time_provider) as _,
refresh_duration_provider,
@ -1105,10 +1099,7 @@ mod tests {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let metric_registry = metric::Registry::new();
let loader = Arc::new(TestLoader::default());
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(RefreshPolicy::new(
time_provider,
@ -1142,10 +1133,7 @@ mod tests {
// set up "RNG" that always generates the maximum, so we can test things easier
let rng_overwrite = StepRng::new(u64::MAX, 0);
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(RefreshPolicy::new_inner(
Arc::clone(&time_provider) as _,
Arc::clone(&refresh_duration_provider) as _,

View File

@ -186,8 +186,6 @@ where
#[cfg(test)]
mod tests {
use std::collections::HashMap;
use iox_time::{MockProvider, Time};
use metric::{Observation, RawReporter};
@ -202,8 +200,7 @@ mod tests {
test_generic(|| {
let metric_registry = metric::Registry::new();
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend =
PolicyBackend::new(Box::new(HashMap::<u8, String>::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
let (policy_constructor, _handle) =
RemoveIfPolicy::create_constructor_and_handle("my_cache", &metric_registry);
backend.add_policy(policy_constructor);
@ -215,7 +212,7 @@ mod tests {
fn test_remove_if() {
let metric_registry = metric::Registry::new();
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::<u8, String>::new()), time_provider);
let mut backend: PolicyBackend<u8, String> = PolicyBackend::hashmap_backed(time_provider);
let (policy_constructor, handle) =
RemoveIfPolicy::create_constructor_and_handle("my_cache", &metric_registry);
backend.add_policy(policy_constructor);

View File

@ -328,7 +328,7 @@ mod tests {
let metric_registry = metric::Registry::new();
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let mut backend = PolicyBackend::new(Box::new(HashMap::<u8, String>::new()), time_provider);
let mut backend: PolicyBackend<u8, String> = PolicyBackend::hashmap_backed(time_provider);
let policy_constructor =
TtlPolicy::new(Arc::clone(&ttl_provider) as _, "my_cache", &metric_registry);
backend.add_policy(|mut handle| {
@ -367,7 +367,7 @@ mod tests {
// init time provider at MAX!
let time_provider = Arc::new(MockProvider::new(Time::MAX));
let mut backend = PolicyBackend::new(Box::new(HashMap::<u8, String>::new()), time_provider);
let mut backend: PolicyBackend<u8, String> = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(TtlPolicy::new(
Arc::clone(&ttl_provider) as _,
"my_cache",
@ -481,10 +481,8 @@ mod tests {
// init time provider at nearly MAX!
let time_provider = Arc::new(MockProvider::new(Time::MAX - Duration::from_secs(2)));
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend: PolicyBackend<u8, String> =
PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(TtlPolicy::new(
Arc::clone(&ttl_provider) as _,
"my_cache",
@ -648,8 +646,7 @@ mod tests {
let ttl_provider = Arc::new(NeverTtlProvider::default());
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let metric_registry = metric::Registry::new();
let mut backend =
PolicyBackend::new(Box::new(HashMap::<u8, String>::new()), time_provider);
let mut backend = PolicyBackend::hashmap_backed(time_provider);
backend.add_policy(TtlPolicy::new(
Arc::clone(&ttl_provider) as _,
"my_cache",
@ -672,10 +669,7 @@ mod tests {
let time_provider = Arc::new(MockProvider::new(Time::MIN));
let metric_registry = metric::Registry::new();
let mut backend = PolicyBackend::new(
Box::new(HashMap::<u8, String>::new()),
Arc::clone(&time_provider) as _,
);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
backend.add_policy(TtlPolicy::new(
Arc::clone(&ttl_provider) as _,
"my_cache",

View File

@ -113,7 +113,7 @@ impl NamespaceCache {
testing,
));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider));
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider));
backend.add_policy(TtlPolicy::new(
Arc::new(OptionalValueTtlProvider::new(
Some(TTL_NON_EXISTING),

View File

@ -1,5 +1,5 @@
//! Cache for immutable object store entires.
use std::{collections::HashMap, mem::size_of_val, ops::Range, sync::Arc};
use std::{mem::size_of_val, ops::Range, sync::Arc};
use async_trait::async_trait;
use backoff::{Backoff, BackoffConfig};
@ -105,7 +105,7 @@ impl ObjectStoreCache {
));
// add to memory pool
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider));
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider));
backend.add_policy(LruPolicy::new(
Arc::clone(&ram_pool),
CACHE_ID,

View File

@ -156,7 +156,7 @@ impl ParquetFileCache {
testing,
));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider));
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider));
let (policy_constructor, remove_if_handle) =
RemoveIfPolicy::create_constructor_and_handle(CACHE_ID, metric_registry);
backend.add_policy(policy_constructor);

View File

@ -89,7 +89,7 @@ impl PartitionCache {
testing,
));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider));
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider));
let (policy_constructor, remove_if_handle) =
RemoveIfPolicy::create_constructor_and_handle(CACHE_ID, metric_registry);
backend.add_policy(policy_constructor);

View File

@ -14,7 +14,7 @@ use cache_system::{
use data_types::{ParquetFileId, TombstoneId};
use iox_catalog::interface::Catalog;
use iox_time::TimeProvider;
use std::{collections::HashMap, mem::size_of_val, sync::Arc, time::Duration};
use std::{mem::size_of_val, sync::Arc, time::Duration};
use trace::span::Span;
use super::ram::RamSize;
@ -78,7 +78,7 @@ impl ProcessedTombstonesCache {
testing,
));
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider));
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider));
backend.add_policy(TtlPolicy::new(
Arc::new(KeepExistsForever {}),
CACHE_ID,

View File

@ -3,7 +3,6 @@
//! While this is technically NOT caching catalog requests (i.e. CPU and IO work), it heavily reduced memory when
//! creating [`QuerierParquetChunk`](crate::parquet::QuerierParquetChunk)s.
use std::{
collections::HashMap,
mem::{size_of, size_of_val},
sync::Arc,
};
@ -114,7 +113,7 @@ impl ProjectedSchemaCache {
));
// add to memory pool
let mut backend = PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider));
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider));
backend.add_policy(LruPolicy::new(
Arc::clone(&ram_pool),
CACHE_ID,
@ -160,6 +159,7 @@ impl ProjectedSchemaCache {
mod tests {
use iox_time::SystemProvider;
use schema::{builder::SchemaBuilder, TIME_COLUMN_NAME};
use std::collections::HashMap;
use crate::cache::ram::test_util::test_ram_pool;

View File

@ -15,7 +15,7 @@ use data_types::{SequenceNumber, TableId, Tombstone};
use iox_catalog::interface::Catalog;
use iox_time::TimeProvider;
use snafu::{ResultExt, Snafu};
use std::{collections::HashMap, mem, sync::Arc};
use std::{mem, sync::Arc};
use trace::span::Span;
use super::ram::RamSize;
@ -125,8 +125,7 @@ impl TombstoneCache {
testing,
));
let mut backend =
PolicyBackend::new(Box::new(HashMap::new()), Arc::clone(&time_provider) as _);
let mut backend = PolicyBackend::hashmap_backed(Arc::clone(&time_provider) as _);
let (policy_constructor, remove_if_handle) =
RemoveIfPolicy::create_constructor_and_handle(CACHE_ID, metric_registry);
backend.add_policy(policy_constructor);