Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy setting expireAfterAccess does not work?
    primarykey
    data
    text
    <p>Why does the <code>timedCachetest</code> fails on the last line? Why cache is not empty after 60 seconds?</p> <pre><code>package com.test.cache; import java.util.concurrent.TimeUnit; import junit.framework.Assert; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; public class CacheTest { private static final int MAXIMUM_SIZE = 10; private static final int CONCURRENCY_LEVEL = 1; private static final long EXPIRE_AFTER_ACCESS = 60; Cache&lt;String, Thing&gt; cache; private static TimeUnit unit = TimeUnit.SECONDS; private static long sec = 1000; @Before public void setUp() throws Exception { cache = CacheBuilder.newBuilder().maximumSize(MAXIMUM_SIZE).concurrencyLevel(CONCURRENCY_LEVEL).expireAfterAccess(EXPIRE_AFTER_ACCESS, unit).build(); } @After public void tearDown() { cache = null; } @Test public void simpleCachetest() { String key = "key"; Integer hc = key.hashCode(); Thing thing = new Thing(key); cache.put(key, thing); thing = cache.getIfPresent(key); Assert.assertNotNull(thing); Assert.assertEquals(hc, thing.getValue()); Assert.assertEquals(key, thing.getName()); Assert.assertEquals(1, cache.size()); } @Test public void timedCachetest() { String key = "key"; Thing thing = new Thing(key); Assert.assertEquals(0, cache.size()); cache.put(key, thing); Assert.assertEquals(1, cache.size()); try { thing = cache.getIfPresent(key); long millis = 100 * sec; Thread.sleep(millis); // cache.invalidateAll(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } Assert.assertNotNull(thing); Assert.assertEquals(key, thing.getName()); Assert.assertEquals(0, cache.size()); } class Thing { public Thing(String key) { this.name = key; this.value = key.hashCode(); } public String getName() { return name; } public Integer getValue() { return value; } private String name; private Integer value; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload