RMapCacheTest fixed

pull/1043/head
Nikita 8 years ago
parent 097eb32cd6
commit cf1a190594

@ -16,6 +16,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import org.junit.Assert;
@ -218,16 +219,17 @@ public class RedissonMapCacheTest extends BaseMapTest {
@Test
public void testMaxSize() {
final int maxSize = 2;
final AtomicInteger maxSize = new AtomicInteger(2);
Map<String, String> store = new LinkedHashMap<String, String>() {
@Override
protected boolean removeEldestEntry(Entry<String, String> eldest) {
return size() > maxSize;
return size() > maxSize.get();
}
};
MapOptions<String, String> options = MapOptions.<String, String>defaults().writer(createMapWriter(store));
RMapCache<String, String> map = redisson.getMapCache("test", options);
map.trySetMaxSize(maxSize);
assertThat(map.trySetMaxSize(maxSize.get())).isTrue();
assertThat(map.trySetMaxSize(1)).isFalse();
assertThat(map.fastPutIfAbsent("01", "00")).isTrue();
assertThat(map.fastPutIfAbsent("02", "00")).isTrue();
@ -237,7 +239,7 @@ public class RedissonMapCacheTest extends BaseMapTest {
assertThat(map.fastPut("2", "22", 10, TimeUnit.SECONDS)).isTrue();
assertThat(map.fastPut("3", "33", 10, TimeUnit.SECONDS)).isTrue();
assertThat(map.size()).isEqualTo(maxSize);
assertThat(map.size()).isEqualTo(maxSize.get());
Map<String, String> expected = new HashMap<>();
expected.put("2", "22");
@ -257,7 +259,111 @@ public class RedissonMapCacheTest extends BaseMapTest {
assertThat(map.remove("2", "22")).isTrue();
assertThat(map.remove("0")).isNull();
assertThat(map.remove("3")).isEqualTo("33");
}
maxSize.set(6);
map.setMaxSize(maxSize.get());
assertThat(map.fastPut("01", "00")).isTrue();
assertThat(map.fastPut("02", "00")).isTrue();
assertThat(map.fastPut("03", "00")).isTrue();
assertThat(map.fastPut("04", "00")).isTrue();
assertThat(map.fastPut("05", "00")).isTrue();
assertThat(map.fastPut("06", "00")).isTrue();
assertThat(map.fastPut("07", "00")).isTrue();
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("02", "03", "04", "05", "06", "07");
map.put("08", "00");
map.put("09", "00");
map.put("10", "00");
map.put("11", "00");
map.put("12", "00");
map.put("13", "00");
map.put("14", "00");
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("09", "10", "11", "12", "13", "14");
map.putIfAbsent("15", "00", 1, TimeUnit.SECONDS);
map.putIfAbsent("16", "00", 1, TimeUnit.SECONDS);
map.putIfAbsent("17", "00", 1, TimeUnit.SECONDS);
map.putIfAbsent("18", "00", 1, TimeUnit.SECONDS);
map.putIfAbsent("19", "00", 1, TimeUnit.SECONDS);
map.putIfAbsent("20", "00", 1, TimeUnit.SECONDS);
map.putIfAbsent("21", "00", 1, TimeUnit.SECONDS);
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("16", "17", "18", "19", "20", "21");
map.putIfAbsent("22", "00");
map.putIfAbsent("23", "00");
map.putIfAbsent("24", "00");
map.putIfAbsent("25", "00");
map.putIfAbsent("26", "00");
map.putIfAbsent("27", "00");
map.putIfAbsent("28", "00");
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("23", "24", "25", "26", "27", "28");
map.fastPut("29", "00", 1, TimeUnit.SECONDS);
map.fastPut("30", "00", 1, TimeUnit.SECONDS);
map.fastPut("31", "00", 1, TimeUnit.SECONDS);
map.fastPut("32", "00", 1, TimeUnit.SECONDS);
map.fastPut("33", "00", 1, TimeUnit.SECONDS);
map.fastPut("34", "00", 1, TimeUnit.SECONDS);
map.fastPut("35", "00", 1, TimeUnit.SECONDS);
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("30", "31", "32", "33", "34", "35");
map.put("36", "00", 1, TimeUnit.SECONDS);
map.put("37", "00", 1, TimeUnit.SECONDS);
map.put("38", "00", 1, TimeUnit.SECONDS);
map.put("39", "00", 1, TimeUnit.SECONDS);
map.put("40", "00", 1, TimeUnit.SECONDS);
map.put("41", "00", 1, TimeUnit.SECONDS);
map.put("42", "00", 1, TimeUnit.SECONDS);
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("37", "38", "39", "40", "41", "42");
map.fastPutIfAbsent("43", "00");
map.fastPutIfAbsent("44", "00");
map.fastPutIfAbsent("45", "00");
map.fastPutIfAbsent("46", "00");
map.fastPutIfAbsent("47", "00");
map.fastPutIfAbsent("48", "00");
map.fastPutIfAbsent("49", "00");
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("44", "45", "46", "47", "48", "49");
map.fastPutIfAbsent("50", "00", 1, TimeUnit.SECONDS);
map.fastPutIfAbsent("51", "00", 1, TimeUnit.SECONDS);
map.fastPutIfAbsent("52", "00", 1, TimeUnit.SECONDS);
map.fastPutIfAbsent("53", "00", 1, TimeUnit.SECONDS);
map.fastPutIfAbsent("54", "00", 1, TimeUnit.SECONDS);
map.fastPutIfAbsent("55", "00", 1, TimeUnit.SECONDS);
map.fastPutIfAbsent("56", "00", 1, TimeUnit.SECONDS);
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("51", "52", "53", "54", "55", "56");
Map<String, String> newMap = new LinkedHashMap<>();
newMap.put("57", "00");
newMap.put("58", "00");
newMap.put("59", "00");
newMap.put("60", "00");
newMap.put("61", "00");
newMap.put("62", "00");
newMap.put("63", "00");
map.putAll(newMap);
assertThat(map.size()).isEqualTo(maxSize.get());
assertThat(map.keySet()).containsExactly("58", "59", "60", "61", "62", "63");
}
@Test
public void testOrdering() {

Loading…
Cancel
Save