add unit tests for #843
parent
98a5ff882b
commit
0c4e788e00
@ -0,0 +1,174 @@
|
|||||||
|
package org.redisson.spring.cache;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.Parameterized;
|
||||||
|
import org.redisson.BaseTest;
|
||||||
|
import org.redisson.RedisRunner;
|
||||||
|
import org.redisson.RedisRunner.RedisProcess;
|
||||||
|
import org.redisson.api.RedissonClient;
|
||||||
|
import org.springframework.cache.CacheManager;
|
||||||
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
|
import org.springframework.cache.annotation.CachePut;
|
||||||
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
|
import org.springframework.context.ConfigurableApplicationContext;
|
||||||
|
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@RunWith(Parameterized.class)
|
||||||
|
public class RedissonSpringCacheShortTTLTest {
|
||||||
|
|
||||||
|
public static class SampleObject {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
private String value;
|
||||||
|
|
||||||
|
public SampleObject() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public SampleObject(String name, String value) {
|
||||||
|
super();
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Service
|
||||||
|
public static class SampleBean {
|
||||||
|
|
||||||
|
@CachePut(cacheNames = "testMap", key = "#key")
|
||||||
|
public SampleObject store(String key, SampleObject object) {
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
|
||||||
|
@CachePut(cacheNames = "testMap", key = "#key")
|
||||||
|
public SampleObject storeNull(String key) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@CacheEvict(cacheNames = "testMap", key = "#key")
|
||||||
|
public void remove(String key) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(cacheNames = "testMap", key = "#key")
|
||||||
|
public SampleObject read(String key) {
|
||||||
|
throw new IllegalStateException();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(cacheNames = "testMap", key = "#key", sync = true)
|
||||||
|
public SampleObject readNullSync(String key) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Cacheable(cacheNames = "testMap", key = "#key")
|
||||||
|
public SampleObject readNull(String key) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@ComponentScan
|
||||||
|
@EnableCaching
|
||||||
|
public static class Application {
|
||||||
|
|
||||||
|
@Bean(destroyMethod = "shutdown")
|
||||||
|
RedissonClient redisson() {
|
||||||
|
return BaseTest.createInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
CacheManager cacheManager(RedissonClient redissonClient) throws IOException {
|
||||||
|
Map<String, CacheConfig> config = new HashMap<String, CacheConfig>();
|
||||||
|
config.put("testMap", new CacheConfig(1 * 1000, 1 * 1000));
|
||||||
|
return new RedissonSpringCacheManager(redissonClient, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@ComponentScan
|
||||||
|
@EnableCaching
|
||||||
|
public static class JsonConfigApplication {
|
||||||
|
|
||||||
|
@Bean(destroyMethod = "shutdown")
|
||||||
|
RedissonClient redisson() {
|
||||||
|
return BaseTest.createInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
CacheManager cacheManager(RedissonClient redissonClient) throws IOException {
|
||||||
|
return new RedissonSpringCacheManager(redissonClient, "classpath:/org/redisson/spring/cache/cache-config-shortTTL.json");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static RedisProcess p;
|
||||||
|
|
||||||
|
@Parameterized.Parameters(name = "{index} - {0}")
|
||||||
|
public static Iterable<Object[]> data() throws IOException, InterruptedException {
|
||||||
|
if (p == null) {
|
||||||
|
p = RedisRunner.startDefaultRedisServerInstance();
|
||||||
|
}
|
||||||
|
return Arrays.asList(new Object[][]{
|
||||||
|
{new AnnotationConfigApplicationContext(Application.class)},
|
||||||
|
{new AnnotationConfigApplicationContext(JsonConfigApplication.class)},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Parameterized.Parameter(0)
|
||||||
|
public AnnotationConfigApplicationContext context;
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void after() throws InterruptedException, IOException {
|
||||||
|
RedissonSpringCacheShortTTLTest.data().forEach(e -> ((ConfigurableApplicationContext) e[0]).close());
|
||||||
|
RedisRunner.shutDownDefaultRedisServerInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalStateException.class)
|
||||||
|
public void testPutGet() throws InterruptedException {
|
||||||
|
SampleBean bean = context.getBean(SampleBean.class);
|
||||||
|
bean.store("object1", new SampleObject("name1", "value1"));
|
||||||
|
SampleObject s = bean.read("object1");
|
||||||
|
assertThat(s.getName()).isEqualTo("name1");
|
||||||
|
assertThat(s.getValue()).isEqualTo("value1");
|
||||||
|
|
||||||
|
Thread.sleep(1100);
|
||||||
|
|
||||||
|
bean.read("object1");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test(expected = IllegalStateException.class)
|
||||||
|
public void testPutGetSync() throws InterruptedException {
|
||||||
|
SampleBean bean = context.getBean(SampleBean.class);
|
||||||
|
bean.readNullSync("object1");
|
||||||
|
assertThat(bean.read("object1")).isNull();
|
||||||
|
|
||||||
|
Thread.sleep(1100);
|
||||||
|
|
||||||
|
bean.read("object1");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
{"testMap":{"ttl":1000,"maxIdleTime":1000}}
|
Loading…
Reference in New Issue