package com.navercorp.pinpoint.plugin.redis; import static org.junit.Assert.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.List; import org.junit.Test; import redis.clients.jedis.Client; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; import com.navercorp.pinpoint.common.server.bo.SpanEventBo; import com.navercorp.pinpoint.test.junit4.BasePinpointTest; public class RedisPluginTest extends BasePinpointTest { private static final String HOST = "localhost"; private static final int PORT = 6379; @Test public void jedis() { JedisMock jedis = new JedisMock("localhost", 6379); try { jedis.get("foo"); } finally { if(jedis != null) { jedis.close(); } } final List<SpanEventBo> events = getCurrentSpanEvents(); assertEquals(1, events.size()); final SpanEventBo eventBo = events.get(0); assertEquals(HOST + ":" + PORT, eventBo.getEndPoint()); assertEquals("REDIS", eventBo.getDestinationId()); } @Test public void binaryJedis() { JedisMock jedis = new JedisMock("localhost", 6379); try { jedis.get("foo".getBytes()); } finally { if(jedis != null) { jedis.close(); } } final List<SpanEventBo> events = getCurrentSpanEvents(); assertEquals(1, events.size()); final SpanEventBo eventBo = events.get(0); assertEquals(HOST + ":" + PORT, eventBo.getEndPoint()); assertEquals("REDIS", eventBo.getDestinationId()); } @Test public void pipeline() { JedisMock jedis = new JedisMock("localhost", 6379); try { Pipeline pipeline = jedis.pipelined(); pipeline.get("foo"); } finally { if(jedis != null) { jedis.close(); } } final List<SpanEventBo> events = getCurrentSpanEvents(); assertEquals(1, events.size()); } public class JedisMock extends Jedis { public JedisMock(String host, int port) { super(host, port); client = mock(Client.class); // for 'get' command when(client.isInMulti()).thenReturn(false); when(client.getBulkReply()).thenReturn("bar"); when(client.getBinaryBulkReply()).thenReturn("bar".getBytes()); } } }