/* * Seldon -- open source prediction engine * ======================================= * Copyright 2011-2015 Seldon Technologies Ltd and Rummble Ltd (http://www.seldon.io/) * ********************************************************************************************** * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ********************************************************************************************** */ package io.seldon.cache.redis; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import io.seldon.api.caching.redis.RedisActionHistory; import io.seldon.db.redis.RedisPoolManager; import io.seldon.general.Action; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import junit.framework.Assert; import org.easymock.EasyMock; import org.junit.Before; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; public class RedisActionHistoryTest { private RedisPoolManager mockRedisPoolManager; private JedisPool mockJedisPool; private Jedis mockJedis; @Before public void createMocks() { this.mockRedisPoolManager = createMock(RedisPoolManager.class); this.mockJedisPool = createMock(JedisPool.class); this.mockJedis = createMock(Jedis.class); } @Test public void test_get_full_action() { mockRedisPoolManager.get((String) EasyMock.anyObject()); EasyMock.expectLastCall().andReturn(mockJedisPool).once(); replay(mockRedisPoolManager); String client = "client1"; String redisActionEntry = "{\"client\":\"testclient\",\"rectag\":\"default\",\"userid\":1,\"itemid\":3,\"type\":1,\"value\":\"0.0\",\"client_userid\":\"test_user1\",\"client_itemid\":\"item2\"}"; Set<String> res = new LinkedHashSet<String>(); res.add(redisActionEntry); mockJedisPool.getResource(); EasyMock.expectLastCall().andReturn(mockJedis).once(); replay(mockJedisPool); mockJedis.zrange((String) EasyMock.anyObject(),EasyMock.anyInt(),EasyMock.anyInt()); EasyMock.expectLastCall().andReturn(res).once(); mockJedis.close(); EasyMock.expectLastCall().once(); replay(mockJedis); RedisActionHistory rah = new RedisActionHistory(mockRedisPoolManager); List<Action> actions = rah.getRecentFullActions(client, 1L, 10); Assert.assertEquals(1, actions.size()); Action a = actions.get(0); Assert.assertEquals(1L, a.getUserId()); Assert.assertEquals(3L, a.getItemId()); verify(mockJedis); } @Test public void test_get_actions() { mockRedisPoolManager.get((String) EasyMock.anyObject()); EasyMock.expectLastCall().andReturn(mockJedisPool).once(); replay(mockRedisPoolManager); mockJedisPool.getResource(); EasyMock.expectLastCall().andReturn(mockJedis).once(); replay(mockJedisPool); Set<String> res = new LinkedHashSet<String>(); res.add("1"); res.add("2"); mockJedis.zrange((String) EasyMock.anyObject(),EasyMock.anyInt(),EasyMock.anyInt()); EasyMock.expectLastCall().andReturn(res).once(); mockJedis.close(); EasyMock.expectLastCall().once(); replay(mockJedis); RedisActionHistory rah = new RedisActionHistory(mockRedisPoolManager); List<Long> actions = rah.getRecentActions("client", 1L, 1); Assert.assertTrue(actions.size() == 1); Assert.assertEquals(2L, (long)actions.get(0)); //Assert.assertEquals(1L, (long)actions.get(1)); verify(mockJedis); } }