/*
* Copyright (c) 2016. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
* Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan.
* Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna.
* Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus.
* Vestibulum commodo. Ut rhoncus gravida arcu.
*/
package org.hibernate.cache.redis.client;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.api.Assertions;
import org.hibernate.cache.redis.AbstractHibernateRedisTest;
import org.junit.After;
import org.junit.Test;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
@Slf4j
public class RedisClientTest extends AbstractHibernateRedisTest {
private static final String REGION_NAME = "test.hibernate.region";
private RedisClient client = new RedisClient(createRedisson());
@After
public void cleanup() {
client.deleteRegion(REGION_NAME);
}
@Test
public void testDbSize() {
assertThat(client.dbSize()).isGreaterThanOrEqualTo(0);
}
@Test
public void simpleValueGetSet() throws Exception {
client.set(REGION_NAME, "simpleValue", 123);
Thread.sleep(10);
Assertions.assertThat(client.<Integer>get(REGION_NAME, "simpleValue")).isEqualTo(123);
}
@Test
public void objectReferenceGetSet() throws Exception {
TestData origin = TestData.of("name", 123);
client.set(REGION_NAME, "objectRef", origin);
TestData loaded = client.get(REGION_NAME, "objectRef");
assertThat(loaded)
.isNotNull()
.isEqualTo(origin);
}
@Data
static class TestData implements Serializable {
private static final long serialVersionUID = -736949543087326836L;
public static TestData of(String name, int age) {
TestData instance = new TestData();
instance.setName(name);
instance.setAge(age);
return instance;
}
private String name;
private Integer age;
}
@Test
public void flushDb() {
client.set(REGION_NAME, "flushDbKey", "value");
assertThat(client.dbSize()).isGreaterThan(0);
client.flushDb();
assertThat(client.dbSize()).isEqualTo(0);
}
@Test
public void deleteCacheItem() {
client.set(REGION_NAME, "deleteKey", "value");
assertThat(client.exists(REGION_NAME, "deleteKey")).isTrue();
assertThat(client.<String>get(REGION_NAME, "deleteKey")).isEqualTo("value");
client.del(REGION_NAME, "deleteKey");
assertThat(client.exists(REGION_NAME, "deleteKey")).isFalse();
}
@Test
public void multiDelete() {
client.deleteRegion(REGION_NAME);
int count = 100;
List<String> keys = new ArrayList<String>();
for (int i = 0; i < count; i++) {
String key = "multiDelete-Key-" + i;
client.set(REGION_NAME, key, i);
keys.add(key);
}
assertThat(client.keySizeInRegion(REGION_NAME)).isEqualTo(count);
client.mdel(REGION_NAME, keys);
assertThat(client.keySizeInRegion(REGION_NAME)).isEqualTo(0);
}
@Test
public void keysInRegion() {
client.deleteRegion(REGION_NAME);
assertThat(client.keysInRegion(REGION_NAME)).isEmpty();
int count = 100;
List<String> keys = new ArrayList<String>();
for (int i = 0; i < count; i++) {
String key = "multiDelete-Key-" + i;
client.set(REGION_NAME, key, i);
keys.add(key);
}
Set<Object> loadedKeys = client.keysInRegion(REGION_NAME);
assertThat(loadedKeys).isNotEmpty().hasSize(keys.size());
client.deleteRegion(REGION_NAME);
assertThat(client.keysInRegion(REGION_NAME)).isEmpty();
assertThat(client.keySizeInRegion(REGION_NAME)).isEqualTo(0);
}
}