def count_ip(ipaddr, max_count, expire_time): redis = get_redis() key = get_iplimitation_key(ipaddr) ret = redis.get(key) if ret is not None and int(ret) >= max_count: return False get_redis().incr(key) if ret is None: redis.expire(key, expire_time) return True
def test__not_enough_stuffs(self): redis = get_redis() redis.zadd(KARMA_KEY_NAME, 10000, 'darkprettycure') redis.zadd(KARMA_KEY_NAME, 9999, 'regine') redis.zadd(KARMA_KEY_NAME, -100, 'akao-ni') actual = self._callFUT() self.assertEqual(['akao-ni', 'regine', 'darkprettycure'], actual)
def test__not_enough_stuffs(self): redis = get_redis() redis.zadd(KARMA_KEY_NAME, 10000, 'cureblack') redis.zadd(KARMA_KEY_NAME, 9999, 'curesunny') redis.zadd(KARMA_KEY_NAME, 1, 'curemarine') actual = self._callFUT() self.assertEqual(['cureblack', 'curesunny', 'curemarine'], actual)
def test__enough_stuffs(self): redis = get_redis() redis.zadd(KARMA_KEY_NAME, 6, 'ritsu') redis.zadd(KARMA_KEY_NAME, 5, 'jun') redis.zadd(KARMA_KEY_NAME, 4, 'ui') redis.zadd(KARMA_KEY_NAME, 3, 'nodoka') redis.zadd(KARMA_KEY_NAME, 2, 'ichigo') redis.zadd(KARMA_KEY_NAME, 1, 'sawa-chan') redis.zadd(KARMA_KEY_NAME, 0, 'ton-chan') redis.zadd(KARMA_KEY_NAME, -1, 'azunyan') redis.zadd(KARMA_KEY_NAME, -2, 'mugi') redis.zadd(KARMA_KEY_NAME, -3, 'mio') redis.zadd(KARMA_KEY_NAME, -4, 'yui') actual = self._callFUT() self.assertEqual(['ritsu', 'jun', 'ui', 'nodoka', 'ichigo', 'sawa-chan', 'ton-chan', 'azunyan', 'mugi', 'mio'], actual)
def test__enough_stuffs(self): redis = get_redis() redis.zadd(KARMA_KEY_NAME, 100, 'beer') redis.zadd(KARMA_KEY_NAME, 99, 'sake') redis.zadd(KARMA_KEY_NAME, 98, 'chu-hai') redis.zadd(KARMA_KEY_NAME, 97, 'shochu') redis.zadd(KARMA_KEY_NAME, 96, 'whiskey') redis.zadd(KARMA_KEY_NAME, 95, 'gin') redis.zadd(KARMA_KEY_NAME, 94, 'rum') redis.zadd(KARMA_KEY_NAME, 93, 'tequila') redis.zadd(KARMA_KEY_NAME, 92, 'brandy') redis.zadd(KARMA_KEY_NAME, 91, 'wine') redis.zadd(KARMA_KEY_NAME, 90, 'grappa') actual = self._callFUT() self.assertEqual(['grappa', 'wine', 'brandy', 'tequila', 'rum', 'gin', 'whiskey', 'shochu', 'chu-hai', 'sake'], actual)
def test__spam(self): get_redis().set('iplimitation__192.168.1.1', 100) actual = self._callFUT('192.168.1.1', 100, -1) self.assertFalse(actual) self.assertEqual(b'100', get_redis().get('iplimitation__192.168.1.1'))
def test__regular_visitor(self): get_redis().set('iplimitation__192.168.1.1', 99) actual = self._callFUT('192.168.1.1', 100, -1) self.assertTrue(actual) self.assertEqual(b'100', get_redis().get('iplimitation__192.168.1.1'))
def test__first_visitor(self): actual = self._callFUT('192.168.1.1', 100, -1) self.assertTrue(actual) self.assertIsNone(get_redis().get('iplimitation__192.168.1.1'))
def tearDown(self): get_redis().flushall()
def get_karma(stuff): karma = get_redis().zscore(KARMA_KEY_NAME, stuff) return int(karma) if karma else 0
def get_worst_stuffs(): return [r.decode() for r in reversed(get_redis().zrevrange(KARMA_KEY_NAME, -10, -1))]
def get_best_stuffs(): return [r.decode() for r in get_redis().zrevrange(KARMA_KEY_NAME, 0, 9)]
def dec_karma(stuff): return int(get_redis().zincrby(KARMA_KEY_NAME, stuff, amount=-1))
def inc_karma(stuff): return int(get_redis().zincrby(KARMA_KEY_NAME, stuff))
def tearDown(self): from karmaid.redisio import get_redis get_redis().flushall()
def test__karma_existed(self): get_redis().zadd(KARMA_KEY_NAME, 3, 'RitsuTainaka') actual = self._callFUT('RitsuTainaka') self.assertEqual(2, actual)