Caffeine - Caches - Testing

Caffeine - Caches - Testing

测试

FakeTicker ticker = new FakeTicker(); // Guava's testlib
Cache<Key, Graph> cache = Caffeine.newBuilder()
    .expireAfterWrite(10, TimeUnit.MINUTES)
    .executor(Runnable::run)
    .ticker(ticker::read)
    .maximumSize(10)
    .build();

cache.put(key, graph);
ticker.advance(30, TimeUnit.MINUTES)
assertThat(cache.getIfPresent(key), is(nullValue()));

测试过期剔除不需要在挂钟的时间消逝中等待。使用Ticker接口和Caffeine.ticker(Ticker)方法在缓存构建器中指定一个时间源,而不必等待系统时钟。为此,Guava的testlib提供了一个方便的实现FakeTicker。由于过期条目的移除是在维护周期内执行的,因此当测试依赖于已发生的剔除时,请使用Cache.cleanUp()立即触发移除操作。

Caffeine将定期维护、移除通知和异步计算委托给Executor。这种方式不占用调用者的时间,更加提高了响应时间的可预测性,Executor默认使用ForkJoinPool.commonPool()。使用Caffeine.executor(Executor)在缓存构建时指定一个直接(相同线程)执行器,而不必等待异步任务完成。

多线程测试时我们建议使用Awaitility。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值