package org.redisson;
import java.util.List;
import static org.junit.Assert.*;
import org.junit.Test;
import org.redisson.api.RBatch;
import org.redisson.api.RBatchReactive;
import org.redisson.api.RBucket;
import org.redisson.api.RBucketReactive;
import org.redisson.api.RedissonClient;
import org.redisson.reactive.RedissonBucketReactive;
import org.redisson.reactive.RedissonMapCacheReactive;
/**
*
* @author Rui Gu (https://github.com/jackygurui)
*/
public class RedissonReferenceReactiveTest extends BaseReactiveTest {
@Test
public void test() throws InterruptedException {
RBucketReactive<Object> b1 = redisson.getBucket("b1");
RBucketReactive<Object> b2 = redisson.getBucket("b2");
RBucketReactive<Object> b3 = redisson.getBucket("b3");
sync(b2.set(b3));
sync(b1.set(redisson.getBucket("b2")));
assertTrue(sync(b1.get()).getClass().equals(RedissonBucketReactive.class));
assertEquals("b3", ((RBucketReactive) sync(((RBucketReactive) sync(b1.get())).get())).getName());
RBucketReactive<Object> b4 = redisson.getBucket("b4");
sync(b4.set(redisson.getMapCache("testCache")));
assertTrue(sync(b4.get()) instanceof RedissonMapCacheReactive);
sync(((RedissonMapCacheReactive) sync(b4.get())).fastPut(b1, b2));
assertEquals("b2", ((RBucketReactive) sync(((RedissonMapCacheReactive) sync(b4.get())).get(b1))).getName());
}
@Test
public void testBatch() throws InterruptedException {
RBatchReactive batch = redisson.createBatch();
RBucketReactive<Object> b1 = batch.getBucket("b1");
RBucketReactive<Object> b2 = batch.getBucket("b2");
RBucketReactive<Object> b3 = batch.getBucket("b3");
b2.set(b3);
b1.set(b2);
b3.set(b1);
sync(batch.execute());
batch = redisson.createBatch();
batch.getBucket("b1").get();
batch.getBucket("b2").get();
batch.getBucket("b3").get();
List<RBucketReactive> result = (List<RBucketReactive>) sync(batch.execute());
assertEquals("b2", result.get(0).getName());
assertEquals("b3", result.get(1).getName());
assertEquals("b1", result.get(2).getName());
}
@Test
public void testReactiveToNormal() throws InterruptedException {
RBatchReactive batch = redisson.createBatch();
RBucketReactive<Object> b1 = batch.getBucket("b1");
RBucketReactive<Object> b2 = batch.getBucket("b2");
RBucketReactive<Object> b3 = batch.getBucket("b3");
b2.set(b3);
b1.set(b2);
b3.set(b1);
sync(batch.execute());
RedissonClient lredisson = Redisson.create(redisson.getConfig());
RBatch b = lredisson.createBatch();
b.getBucket("b1").getAsync();
b.getBucket("b2").getAsync();
b.getBucket("b3").getAsync();
List<RBucket> result = (List<RBucket>)b.execute();
assertEquals("b2", result.get(0).getName());
assertEquals("b3", result.get(1).getName());
assertEquals("b1", result.get(2).getName());
lredisson.shutdown();
}
}