Merge branch 'mrniko/master'

pull/400/head
jackygurui 9 years ago
commit bd16e4bb6c

@ -230,7 +230,10 @@ public class RedissonSetCache<V> extends RedissonExpirable implements RSetCache<
public Future<Set<V>> readAllAsync() { public Future<Set<V>> readAllAsync() {
return commandExecutor.evalReadAsync(getName(), codec, RedisCommands.EVAL_SET, return commandExecutor.evalReadAsync(getName(), codec, RedisCommands.EVAL_SET,
"local expireHead = redis.call('zrange', KEYS[2], 0, 0, 'withscores');" + "local expireHead = redis.call('zrange', KEYS[2], 0, 0, 'withscores');" +
"local keys = redis.call('hkeys', KEYS[1]);" + "local keys = redis.call('hkeys', KEYS[1]); "
+ "if #keys == 0 then "
+ "return {}; "
+ "end; " +
"local maxDate = ARGV[1]; " + "local maxDate = ARGV[1]; " +
"local minExpireDate = 92233720368547758;" + "local minExpireDate = 92233720368547758;" +
"if #expireHead == 2 and tonumber(expireHead[2]) <= tonumber(maxDate) then " + "if #expireHead == 2 and tonumber(expireHead[2]) <= tonumber(maxDate) then " +
@ -250,7 +253,10 @@ public class RedissonSetCache<V> extends RedissonExpirable implements RSetCache<
private Future<List<Object>> readAllasListAsync() { private Future<List<Object>> readAllasListAsync() {
return commandExecutor.evalReadAsync(getName(), codec, RedisCommands.EVAL_LIST, return commandExecutor.evalReadAsync(getName(), codec, RedisCommands.EVAL_LIST,
"local expireHead = redis.call('zrange', KEYS[2], 0, 0, 'withscores');" + "local expireHead = redis.call('zrange', KEYS[2], 0, 0, 'withscores');" +
"local keys = redis.call('hkeys', KEYS[1]);" + "local keys = redis.call('hkeys', KEYS[1]); " +
"if #keys == 0 then "
+ "return {}; " +
"end; " +
"local maxDate = ARGV[1]; " + "local maxDate = ARGV[1]; " +
"local minExpireDate = 92233720368547758;" + "local minExpireDate = 92233720368547758;" +
"if #expireHead == 2 and tonumber(expireHead[2]) <= tonumber(maxDate) then " + "if #expireHead == 2 and tonumber(expireHead[2]) <= tonumber(maxDate) then " +
@ -310,8 +316,8 @@ public class RedissonSetCache<V> extends RedissonExpirable implements RSetCache<
return commandExecutor.evalWriteAsync(getName(), codec, RedisCommands.EVAL_BOOLEAN, return commandExecutor.evalWriteAsync(getName(), codec, RedisCommands.EVAL_BOOLEAN,
"redis.call('zadd', KEYS[2], ARGV[1], ARGV[3]); " + "redis.call('zadd', KEYS[2], ARGV[1], ARGV[3]); " +
"if redis.call('hexists', KEYS[1], ARGV[3]) == 0 then " + "if redis.call('hexists', KEYS[1], ARGV[3]) == 0 then " +
"redis.call('hset', KEYS[1], ARGV[3], ARGV[2]); " + "redis.call('hset', KEYS[1], ARGV[3], ARGV[2]); " +
"return 1; " + "return 1; " +
"end;" + "end;" +
"return 0; ", "return 0; ",
Arrays.<Object>asList(getName(), getTimeoutSetName()), timeoutDate, objectState, key); Arrays.<Object>asList(getName(), getTimeoutSetName()), timeoutDate, objectState, key);

@ -24,10 +24,12 @@ import io.netty.util.concurrent.Future;
/** /**
* Interface for using pipeline feature. * Interface for using pipeline feature.
* * <p/>
* All method invocations on objects * All method invocations on objects
* from this interface are batched to separate queue and could be executed later * from this interface are batched to separate queue and could be executed later
* with <code>execute()</code> or <code>executeAsync()</code> methods. * with <code>execute()</code> or <code>executeAsync()</code> methods.
* <p/>
* Please be ware, atomicity <b>is not</b> guaranteed.
* *
* *
* @author Nikita Koksharov * @author Nikita Koksharov

@ -1,5 +1,7 @@
package org.redisson; package org.redisson;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.Serializable; import java.io.Serializable;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@ -9,9 +11,6 @@ import java.util.Set;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static org.assertj.core.api.Assertions.*;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.redisson.codec.MsgPackJacksonCodec; import org.redisson.codec.MsgPackJacksonCodec;
@ -33,6 +32,12 @@ public class RedissonSetCacheTest extends BaseTest {
} }
@Test
public void testEmptyReadAll() {
RSetCache<Integer> set = redisson.getSetCache("set");
assertThat(set.readAll()).isEmpty();
}
@Test @Test
public void testAddBean() throws InterruptedException, ExecutionException { public void testAddBean() throws InterruptedException, ExecutionException {
SimpleBean sb = new SimpleBean(); SimpleBean sb = new SimpleBean();
@ -46,11 +51,11 @@ public class RedissonSetCacheTest extends BaseTest {
public void testAddExpire() throws InterruptedException, ExecutionException { public void testAddExpire() throws InterruptedException, ExecutionException {
RSetCache<String> set = redisson.getSetCache("simple3"); RSetCache<String> set = redisson.getSetCache("simple3");
set.add("123", 1, TimeUnit.SECONDS); set.add("123", 1, TimeUnit.SECONDS);
Assert.assertThat(set, Matchers.contains("123")); assertThat(set).contains("123");
Thread.sleep(1000); Thread.sleep(1000);
Assert.assertFalse(set.contains("123")); assertThat(set).doesNotContain("123");
} }
@Test @Test
@ -93,14 +98,14 @@ public class RedissonSetCacheTest extends BaseTest {
Assert.assertTrue(set.remove(1)); Assert.assertTrue(set.remove(1));
Assert.assertFalse(set.contains(1)); Assert.assertFalse(set.contains(1));
Assert.assertThat(set, Matchers.containsInAnyOrder(3, 7)); assertThat(set).containsOnly(3, 7);
Assert.assertFalse(set.remove(1)); Assert.assertFalse(set.remove(1));
Assert.assertThat(set, Matchers.containsInAnyOrder(3, 7)); assertThat(set).containsOnly(3, 7);
Assert.assertTrue(set.remove(3)); Assert.assertTrue(set.remove(3));
Assert.assertFalse(set.contains(3)); Assert.assertFalse(set.contains(3));
Assert.assertThat(set, Matchers.contains(7)); assertThat(set).containsOnly(7);
Assert.assertEquals(1, set.size()); Assert.assertEquals(1, set.size());
} }
@ -122,7 +127,7 @@ public class RedissonSetCacheTest extends BaseTest {
} }
} }
Assert.assertThat(set, Matchers.containsInAnyOrder("1", "3")); assertThat(set).contains("1", "3");
int iteration = 0; int iteration = 0;
for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) { for (Iterator<String> iterator = set.iterator(); iterator.hasNext();) {
@ -172,7 +177,7 @@ public class RedissonSetCacheTest extends BaseTest {
} }
Assert.assertTrue(set.retainAll(Arrays.asList(1, 2))); Assert.assertTrue(set.retainAll(Arrays.asList(1, 2)));
Assert.assertThat(set, Matchers.containsInAnyOrder(1, 2)); assertThat(set).containsOnly(1, 2);
Assert.assertEquals(2, set.size()); Assert.assertEquals(2, set.size());
} }
@ -218,10 +223,10 @@ public class RedissonSetCacheTest extends BaseTest {
Thread.sleep(1000); Thread.sleep(1000);
MatcherAssert.assertThat(Arrays.asList(set.toArray()), Matchers.<Object>containsInAnyOrder("1", "4", "5", "3")); assertThat(set.toArray()).containsOnly("1", "4", "5", "3");
String[] strs = set.toArray(new String[0]); String[] strs = set.toArray(new String[0]);
MatcherAssert.assertThat(Arrays.asList(strs), Matchers.containsInAnyOrder("1", "4", "5", "3")); assertThat(strs).containsOnly("1", "4", "5", "3");
} }
@Test @Test
@ -300,7 +305,7 @@ public class RedissonSetCacheTest extends BaseTest {
set.add(2); set.add(2);
Assert.assertFalse(set.retainAll(Arrays.asList(1, 2))); // nothing changed Assert.assertFalse(set.retainAll(Arrays.asList(1, 2))); // nothing changed
Assert.assertThat(set, Matchers.containsInAnyOrder(1, 2)); assertThat(set).containsOnly(1, 2);
} }
@Test @Test
@ -314,7 +319,7 @@ public class RedissonSetCacheTest extends BaseTest {
Thread.sleep(1000); Thread.sleep(1000);
MatcherAssert.assertThat(cache, Matchers.contains("0", "2", "3")); assertThat(cache).contains("0", "2", "3");
} }
@Test @Test

@ -1,5 +1,7 @@
package org.redisson; package org.redisson;
import static org.assertj.core.api.Assertions.assertThat;
import java.io.Serializable; import java.io.Serializable;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@ -8,8 +10,6 @@ import java.util.Iterator;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.redisson.core.RSet; import org.redisson.core.RSet;
@ -39,10 +39,10 @@ public class RedissonSetTest extends BaseTest {
set.add(2); set.add(2);
set.add(3); set.add(3);
MatcherAssert.assertThat(set.removeRandom(), Matchers.isOneOf(1, 2, 3)); assertThat(set.removeRandom()).isIn(1, 2, 3);
MatcherAssert.assertThat(set.removeRandom(), Matchers.isOneOf(1, 2, 3)); assertThat(set.removeRandom()).isIn(1, 2, 3);
MatcherAssert.assertThat(set.removeRandom(), Matchers.isOneOf(1, 2, 3)); assertThat(set.removeRandom()).isIn(1, 2, 3);
Assert.assertNull(set.removeRandom()); assertThat(set.removeRandom()).isNull();
} }
@Test @Test
@ -90,14 +90,14 @@ public class RedissonSetTest extends BaseTest {
Assert.assertTrue(set.removeAsync(1).get()); Assert.assertTrue(set.removeAsync(1).get());
Assert.assertFalse(set.contains(1)); Assert.assertFalse(set.contains(1));
Assert.assertThat(set, Matchers.containsInAnyOrder(3, 7)); assertThat(set).containsOnly(3, 7);
Assert.assertFalse(set.removeAsync(1).get()); Assert.assertFalse(set.removeAsync(1).get());
Assert.assertThat(set, Matchers.containsInAnyOrder(3, 7)); assertThat(set).containsOnly(3, 7);
set.removeAsync(3).get(); set.removeAsync(3).get();
Assert.assertFalse(set.contains(3)); Assert.assertFalse(set.contains(3));
Assert.assertThat(set, Matchers.contains(7)); assertThat(set).contains(7);
} }
@Test @Test
@ -116,7 +116,7 @@ public class RedissonSetTest extends BaseTest {
} }
} }
Assert.assertThat(list, Matchers.containsInAnyOrder("1", "4", "5", "3")); assertThat(list).containsOnly("1", "4", "5", "3");
int iteration = 0; int iteration = 0;
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) { for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
@ -163,7 +163,7 @@ public class RedissonSetTest extends BaseTest {
set.add(1L); set.add(1L);
set.add(2L); set.add(2L);
Assert.assertThat(set, Matchers.containsInAnyOrder(1L, 2L)); assertThat(set).containsOnly(1L, 2L);
} }
@Test @Test
@ -174,7 +174,7 @@ public class RedissonSetTest extends BaseTest {
} }
Assert.assertTrue(set.retainAll(Arrays.asList(1, 2))); Assert.assertTrue(set.retainAll(Arrays.asList(1, 2)));
Assert.assertThat(set, Matchers.containsInAnyOrder(1, 2)); assertThat(set).containsOnly(1, 2);
Assert.assertEquals(2, set.size()); Assert.assertEquals(2, set.size());
} }
@ -217,10 +217,10 @@ public class RedissonSetTest extends BaseTest {
set.add("5"); set.add("5");
set.add("3"); set.add("3");
MatcherAssert.assertThat(Arrays.asList(set.toArray()), Matchers.<Object>containsInAnyOrder("1", "2", "4", "5", "3")); assertThat(set.toArray()).containsOnly("1", "2", "4", "5", "3");
String[] strs = set.toArray(new String[0]); String[] strs = set.toArray(new String[0]);
MatcherAssert.assertThat(Arrays.asList(strs), Matchers.containsInAnyOrder("1", "4", "2", "5", "3")); assertThat(strs).containsOnly("1", "2", "4", "5", "3");
} }
@Test @Test
@ -286,7 +286,7 @@ public class RedissonSetTest extends BaseTest {
set.add(2); set.add(2);
Assert.assertFalse(set.retainAll(Arrays.asList(1, 2))); // nothing changed Assert.assertFalse(set.retainAll(Arrays.asList(1, 2))); // nothing changed
Assert.assertThat(set, Matchers.containsInAnyOrder(1, 2)); assertThat(set).containsOnly(1, 2);
} }
@Test @Test
@ -300,10 +300,10 @@ public class RedissonSetTest extends BaseTest {
Assert.assertTrue(set.move("otherSet", 1)); Assert.assertTrue(set.move("otherSet", 1));
Assert.assertEquals(1, set.size()); Assert.assertEquals(1, set.size());
Assert.assertThat(set, Matchers.contains(2)); assertThat(set).contains(2);
Assert.assertEquals(1, otherSet.size()); Assert.assertEquals(1, otherSet.size());
Assert.assertThat(otherSet, Matchers.contains(1)); assertThat(otherSet).contains(1);
} }
@Test @Test

Loading…
Cancel
Save