def del_user(r): # user register user_id1 = str('aaaaaaaa-aaaa-aaaa-aaaa-000000000001') user_id2 = str('zzzzzzzz-zzzz-zzzz-zzzz-000000000000') goods_ids = ['ITEM-{}'.format(str(x)) for x in xrange(1, 100)] for goods_id in goods_ids: r.register(goods_id, random.choice(tags)) r.like(user_id1, goods_ids) r.like(user_id2, goods_ids) for goods_id in goods_ids: r.update(goods_id) # remove user1 r.remove_user(user_id1) # Test removed user1 from index for x in xrange(5): goods_id = random.choice(goods_ids) tag = r.repository.get_goods_tag(goods_id) key = Repository.get_key_index_goods_user_like_history(tag, goods_id) users = r.repository.client.lrange(key, 0, -1) assert user_id1 not in users assert user_id2 in users # remove user2 r.remove_user(user_id2) # Test removed user2 from index for x in xrange(5): goods_id = random.choice(goods_ids) tag = r.repository.get_goods_tag(goods_id) key = Repository.get_key_index_goods_user_like_history(tag, goods_id) users = r.repository.client.lrange(key, 0, -1) assert user_id1 not in users assert user_id2 not in users
def get_all(r): # all registered goods ids: about 20sec r.get_all_goods_ids() # all user ids: about 20sec keys = r.repository.get_all_user_ids() if keys: Repository.get_user_and_key_from_redis_key(keys[0])
def test_lock(): settings = { 'expire': 3600 * 24 * 100, 'redis': { 'host': 'localhost', 'port': 6379, 'db': 12 }, # recommendation engine settings 'recommendation': { 'update_interval_sec': 4, }, } # register goods r = Recommender(settings=settings) goods_id = 1122 tag = random.choice(tags) r.register(goods_id, tag) # do_lock and expire test[expire 4sec] r.repository.lock(goods_id) key = Repository.get_key_goods_mutex(tag, goods_id) assert r.repository.client.ttl(key) == settings.get('recommendation').get( 'update_interval_sec') assert r.repository.is_lock(goods_id) time.sleep(1) assert r.repository.is_lock(goods_id) time.sleep(4) assert r.repository.is_lock(goods_id) is False
def test_lock(): settings = { 'expire': 3600 * 24 * 100, 'redis': { 'host': 'localhost', 'port': 6379, 'db': 12 }, # recommendation engine settings 'recommendation': { 'update_interval_sec': 4, }, } # register goods r = Recommender(settings=settings) goods_id = 1122 tag = random.choice(tags) r.register(goods_id, tag) # do_lock and expire test[expire 4sec] r.repository.lock(goods_id) key = Repository.get_key_goods_mutex(tag, goods_id) assert r.repository.client.ttl(key) == settings.get('recommendation').get('update_interval_sec') assert r.repository.is_lock(goods_id) time.sleep(1) assert r.repository.is_lock(goods_id) time.sleep(4) assert r.repository.is_lock(goods_id) is False
def test_trim(): settings = { 'expire': 3600 * 24 * 100, 'redis': { 'host': 'localhost', 'port': 6379, 'db': 12 }, 'recommendation': { 'update_interval_sec': 60, 'search_depth': 10, 'max_history': 30, }, } r = Recommender(settings=settings) key = "hogehoge:list" cli = r.repository.client l = range(1, 1001) # initial cli.delete(key) # set list for x in l: cli.rpush(key, x) # trim assert cli.llen(key) == 1000 r.repository.trim(key, 200, hardly_ever=False) assert cli.llen(key) == 200 # user register user_id = str('aaaaaaaa-aaaa-aaaa-aaaa-000000000005') goods_id = 'ITEM-{}'.format(str(215)) tag = random.choice(tags) r.register(goods_id, tag) _max = 200 for x in xrange(_max): r.like(user_id, [goods_id]) r.update(goods_id) key = Repository.get_key_user_like_history(tag, user_id) print "user hist", r.repository.client.llen(key) assert r.repository.client.llen(key) < _max key = Repository.get_key_index_goods_user_like_history(tag, goods_id) print "index", r.repository.client.llen(key) assert "index", r.repository.client.llen(key) < _max