package org.redisson; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.Assert; import org.junit.Test; import org.redisson.api.RBucket; import org.redisson.api.RMap; import org.redisson.api.RedissonClient; import org.redisson.client.codec.Codec; import org.redisson.client.codec.JsonJacksonMapValueCodec; import org.redisson.codec.AvroJacksonCodec; import org.redisson.codec.CborJacksonCodec; import org.redisson.codec.FstCodec; import org.redisson.codec.JsonJacksonCodec; import org.redisson.codec.KryoCodec; import org.redisson.codec.LZ4Codec; import org.redisson.codec.MsgPackJacksonCodec; import org.redisson.codec.SerializationCodec; import org.redisson.codec.SmileJacksonCodec; import org.redisson.codec.SnappyCodec; import org.redisson.config.Config; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.dataformat.avro.AvroMapper; import com.fasterxml.jackson.dataformat.avro.AvroSchema; public class RedissonCodecTest extends BaseTest { private Codec smileCodec = new SmileJacksonCodec(); private Codec codec = new SerializationCodec(); private Codec kryoCodec = new KryoCodec(); private Codec jsonCodec = new JsonJacksonCodec(); private Codec cborCodec = new CborJacksonCodec(); private Codec fstCodec = new FstCodec(); private Codec snappyCodec = new SnappyCodec(); private Codec msgPackCodec = new MsgPackJacksonCodec(); private Codec lz4Codec = new LZ4Codec(); private Codec jsonListOfStringCodec = new JsonJacksonMapValueCodec<List<String>>(new TypeReference<List<String>>() { }); @Test public void testLZ4() { Config config = createConfig(); config.setCodec(lz4Codec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testJdk() { Config config = createConfig(); config.setCodec(codec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testMsgPack() { Config config = createConfig(); config.setCodec(msgPackCodec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testSmile() { Config config = createConfig(); config.setCodec(smileCodec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testAvro() throws IOException { AvroMapper am = new AvroMapper(); AvroSchema schema = am.schemaFor(TestObject.class); Codec avroCodec = new AvroJacksonCodec(TestObject.class, schema); Config config = createConfig(); config.setCodec(avroCodec); RedissonClient redisson = Redisson.create(config); RBucket<TestObject> b = redisson.getBucket("bucket"); b.set(new TestObject("1", "2")); assertThat(b.get()).isEqualTo(new TestObject("1", "2")); } @Test public void testFst() { Config config = createConfig(); config.setCodec(fstCodec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testSnappy() { Config config = createConfig(); config.setCodec(snappyCodec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testJson() { Config config = createConfig(); config.setCodec(jsonCodec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testKryo() { Config config = createConfig(); config.setCodec(kryoCodec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testCbor() { Config config = createConfig(); config.setCodec(cborCodec); RedissonClient redisson = Redisson.create(config); test(redisson); } @Test public void testListOfStrings() { Config config = createConfig(); config.setCodec(new JsonJacksonCodec()); RedissonClient redisson = Redisson.create(config); RMap<String, List<String>> map = redisson.getMap("list of strings", jsonListOfStringCodec); map.put("foo", new ArrayList<String>(Arrays.asList("bar"))); RMap<String, List<String>> map2 = redisson.getMap("list of strings", jsonListOfStringCodec); assertThat(map2).isEqualTo(map); redisson.shutdown(); } public void test(RedissonClient redisson) { RMap<Integer, Map<String, Object>> map = redisson.getMap("getAll"); Map<String, Object> a = new HashMap<String, Object>(); a.put("double", new Double(100000.0)); a.put("float", 100.0f); a.put("int", 100); a.put("long", 10000000000L); a.put("boolt", true); a.put("boolf", false); a.put("string", "testString"); a.put("array", new ArrayList<Object>(Arrays.asList(1, 2.0, "adsfasdfsdf"))); map.fastPut(1, a); Map<String, Object> resa = map.get(1); Assert.assertEquals(a, resa); Set<TestObject> set = redisson.getSet("set"); set.add(new TestObject("1", "2")); set.add(new TestObject("1", "2")); set.add(new TestObject("2", "3")); set.add(new TestObject("3", "4")); set.add(new TestObject("5", "6")); Assert.assertTrue(set.contains(new TestObject("2", "3"))); Assert.assertTrue(set.contains(new TestObject("1", "2"))); Assert.assertFalse(set.contains(new TestObject("1", "9"))); redisson.shutdown(); } }