Package org.springside.modules.nosql.redis

Source Code of org.springside.modules.nosql.redis.JedisShardedTemplateTest

/*******************************************************************************
* Copyright (c) 2005, 2014 springside.github.io
*
* Licensed under the Apache License, Version 2.0 (the "License");
*******************************************************************************/
package org.springside.modules.nosql.redis;

import static org.assertj.core.api.Assertions.*;

import java.util.HashMap;
import java.util.Map;

import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Test;
import org.mockito.Mockito;
import org.springside.modules.nosql.redis.JedisTemplate.JedisAction;
import org.springside.modules.nosql.redis.JedisTemplate.JedisActionNoResult;
import org.springside.modules.nosql.redis.pool.JedisPool;

import redis.clients.jedis.Jedis;

import com.lordofthejars.nosqlunit.redis.EmbeddedRedis;
import com.lordofthejars.nosqlunit.redis.EmbeddedRedis.EmbeddedRedisRuleBuilder;
import com.lordofthejars.nosqlunit.redis.EmbeddedRedisInstances;

public class JedisShardedTemplateTest {

  private JedisShardedTemplate jedisTemplate;

  @ClassRule
  public static EmbeddedRedis embeddedRedisRule = EmbeddedRedisRuleBuilder.newEmbeddedRedisRule().build();

  @Before
  public void setup() {
    Jedis embeddedRedis = EmbeddedRedisInstances.getInstance().getDefaultJedis();
    JedisPool jedisPool1 = Mockito.mock(JedisPool.class);
    Mockito.when(jedisPool1.getResource()).thenReturn(embeddedRedis);

    JedisPool jedisPool2 = Mockito.mock(JedisPool.class);
    Mockito.when(jedisPool2.getResource()).thenReturn(embeddedRedis);

    jedisTemplate = new JedisShardedTemplate(new JedisPool[] { jedisPool1, jedisPool2 });
  }

  @Test
  public void stringActions() {
    String key = "test.string.key";
    String notExistKey = key + "not.exist";
    String value = "123";

    // get/set
    jedisTemplate.set(key, value);
    assertThat(jedisTemplate.get(key)).isEqualTo(value);
    assertThat(jedisTemplate.get(notExistKey)).isNull();

    // setnx
    assertThat(jedisTemplate.setnx(key, value)).isFalse();
    assertThat(jedisTemplate.setnx(key + "nx", value)).isTrue();

    // incr/decr
    jedisTemplate.incr(key);
    assertThat(jedisTemplate.get(key)).isEqualTo("124");
    jedisTemplate.decr(key);
    assertThat(jedisTemplate.get(key)).isEqualTo("123");
  }

  @Test
  public void hashActions() {
    String key = "test.hash.key";
    String field1 = "aa";
    String field2 = "bb";
    String notExistField = field1 + "not.exist";
    String value1 = "123";
    String value2 = "456";

    // hget/hset
    jedisTemplate.hset(key, field1, value1);
    assertThat(jedisTemplate.hget(key, field1)).isEqualTo(value1);
    assertThat(jedisTemplate.hget(key, notExistField)).isNull();

    // hmget/hmset
    Map<String, String> map = new HashMap<String, String>();
    map.put(field1, value1);
    map.put(field2, value2);
    jedisTemplate.hmset(key, map);

    assertThat(jedisTemplate.hmget(key, new String[] { field1, field2 })).containsExactly(value1, value2);

    // hkeys
    assertThat(jedisTemplate.hkeys(key)).contains(field1, field2);

    // hdel
    assertThat(jedisTemplate.hdel(key, field1));
    assertThat(jedisTemplate.hget(key, field1)).isNull();
  }

  @Test
  public void listActions() {
    String key = "test.list.key";
    String value = "123";
    String value2 = "456";

    // push/pop single element
    jedisTemplate.lpush(key, value);
    assertThat(jedisTemplate.llen(key)).isEqualTo(1);
    assertThat(jedisTemplate.rpop(key)).isEqualTo(value);
    assertThat(jedisTemplate.rpop(key)).isNull();

    // push/pop two elements
    jedisTemplate.lpush(key, value);
    jedisTemplate.lpush(key, value2);
    assertThat(jedisTemplate.llen(key)).isEqualTo(2);
    assertThat(jedisTemplate.rpop(key)).isEqualTo(value);
    assertThat(jedisTemplate.rpop(key)).isEqualTo(value2);

    // remove elements
    jedisTemplate.lpush(key, value);
    jedisTemplate.lpush(key, value);
    jedisTemplate.lpush(key, value);
    assertThat(jedisTemplate.llen(key)).isEqualTo(3);
    assertThat(jedisTemplate.lremFirst(key, value)).isTrue();
    assertThat(jedisTemplate.llen(key)).isEqualTo(2);
    assertThat(jedisTemplate.lremAll(key, value)).isTrue();
    assertThat(jedisTemplate.llen(key)).isEqualTo(0);
    assertThat(jedisTemplate.lremAll(key, value)).isFalse();
  }

  @Test
  public void orderedSetActions() {
    String key = "test.orderedSet.key";
    String member = "abc";
    String member2 = "def";
    double score1 = 1;
    double score11 = 11;
    double score2 = 2;

    // zadd
    assertThat(jedisTemplate.zadd(key, score1, member)).isTrue();
    assertThat(jedisTemplate.zadd(key, score2, member2)).isTrue();

    // zcard
    assertThat(jedisTemplate.zcard(key)).isEqualTo(2);
    assertThat(jedisTemplate.zcard(key + "not.exist")).isEqualTo(0);

    // zrem
    assertThat(jedisTemplate.zrem(key, member2)).isTrue();
    assertThat(jedisTemplate.zcard(key)).isEqualTo(1);
    assertThat(jedisTemplate.zrem(key, member2 + "not.exist")).isFalse();

    // unique & zscore
    assertThat(jedisTemplate.zadd(key, score11, member)).isFalse();
    assertThat(jedisTemplate.zcard(key)).isEqualTo(1);
    assertThat(jedisTemplate.zscore(key, member)).isEqualTo(score11);
    assertThat(jedisTemplate.zscore(key, member + "not.exist")).isNull();
  }

  @Test
  public void execute() {

    final String key = "test.string.key";

    final String value = "123";

    jedisTemplate.execute(key, new JedisActionNoResult() {

      @Override
      public void action(Jedis jedis) {
        jedis.set(key, value);
      }
    });

    assertThat(jedisTemplate.get(key)).isEqualTo(value);

    String result = jedisTemplate.execute(key, new JedisAction<String>() {

      @Override
      public String action(Jedis jedis) {
        return jedis.get(key);
      }

    });

    assertThat(result).isEqualTo(value);
  }
}
TOP

Related Classes of org.springside.modules.nosql.redis.JedisShardedTemplateTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.