PeriodicStaleCheckingCacheStrategy extends BasicCacheStrategy { @Override public void onCacheRead(String experimentName, CachingContext context) { invalidateAllIfStale(context); } PeriodicStaleCheckingCacheStrategy(Duration period); @Override void onCacheRead(String experimentName, CachingContext context); @Override void onCacheRead(CachingContext context);  }
@Test public void testNotStale() { strategy.onCacheRead(context); verify(context).checkIfAnyStale(); verify(context, never()).invalidate(anyString(), anyBoolean()); verify(context, never()).invalidateAll(anyBoolean()); verify(cache).checkIfAnyStale(); verify(cache, never()).invalidate(anyString(), any(Experiment.Builder.class)); verify(cache, never()).invalidateAll(any(Experiment.BuilderFactory.class)); }
@Test public void testStale() { doReturn(true).when(cache).checkIfAnyStale(); strategy.onCacheRead(context); verify(context).invalidateAll(eq(true)); }
@Test public void testDurationNotElapsed() { doReturn(true).when(cache).checkIfAnyStale(); strategy = new PeriodicStaleCheckingCacheStrategy(Duration.standardDays(1)); strategy.onCacheRead(context); verifyZeroInteractions(context); verifyZeroInteractions(cache); }