refactor: Extract a constructor for PolicyBackend using a HashMap
parent
a5c93ec907
commit
f121d395cc
|
@ -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 _,
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 _,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue