def test_sinterstore(self): l.sadd('a', '1', '2', '3') assert l.sinterstore('c', 'a', 'b') == 0 assert l.smembers('c') == set() l.sadd('b', '2', '3') assert l.sinterstore('c', 'a', 'b') == 2 assert l.smembers('c') == set([b('2'), b('3')])
def test_spersist(self): members = set([b('1'), b('2'), b('3')]) l.sadd('a', *members) l.sexpire('a', 100) assert l.sttl('a') <= 100 assert l.spersist('a') assert l.sttl('a') == -1
def test_decrby(self): assert l.delete('a') == 1 assert l.decrby('a') == -1 assert l['a'] == b('-1') assert l.decrby('a') == -2 assert l['a'] == b('-2') assert l.decrby('a', amount=5) == -7 assert l['a'] == b('-7')
def test_zrangebyscore(self): l.zadd("a", a1=1, a2=2, a3=3, a4=4, a5=5) assert l.zrangebyscore("a", 2, 4) == [b("a2"), b("a3"), b("a4")] # slicing with start/num assert l.zrangebyscore("a", 2, 4, start=1, num=2) == [b("a3"), b("a4")] # withscores assert l.zrangebyscore("a", 2, 4, withscores=True) == [("a2", 2), ("a3", 3), ("a4", 4)]
def test_sdiffstore(self): l.sadd('a', '1', '2', '3') assert l.sdiffstore('c', 'a', 'b') == 3 assert l.smembers('c') == set([b('1'), b('2'), b('3')]) l.sadd('b', '2', '3') print l.smembers('c') print "before" assert l.sdiffstore('c', 'a', 'b') == 1 print l.smembers('c') assert l.smembers('c') == set([b('1')])
def pack_command(self, *args): "Pack a series of arguments into a value Ledis command" output = SYM_STAR + b(str(len(args))) + SYM_CRLF for enc_value in imap(self.encode, args): output += SYM_DOLLAR output += b(str(len(enc_value))) output += SYM_CRLF output += enc_value output += SYM_CRLF return output
def test_zrangebyscore(self): l.zadd('a', a1=1, a2=2, a3=3, a4=4, a5=5) assert l.zrangebyscore('a', 2, 4) == [b('a2'), b('a3'), b('a4')] # slicing with start/num assert l.zrangebyscore('a', 2, 4, start=1, num=2) == \ [b('a3'), b('a4')] # withscores assert l.zrangebyscore('a', 2, 4, withscores=True) == \ [('a2', 2), ('a3', 3), ('a4', 4)]
def test_zrem(self): l.zadd('a', a1=1, a2=2, a3=3) assert l.zrem('a', 'a2') == 1 assert l.zrange('a', 0, -1) == [b('a1'), b('a3')] assert l.zrem('a', 'b') == 0 assert l.zrange('a', 0, -1) == [b('a1'), b('a3')] # multiple keys l.zadd('a', a1=1, a2=2, a3=3) assert l.zrem('a', 'a1', 'a2') == 2 assert l.zrange('a', 0, -1) == [b('a3')]
def test_zrem(self): l.zadd("a", a1=1, a2=2, a3=3) assert l.zrem("a", "a2") == 1 assert l.zrange("a", 0, -1) == [b("a1"), b("a3")] assert l.zrem("a", "b") == 0 assert l.zrange("a", 0, -1) == [b("a1"), b("a3")] # multiple keys l.zadd("a", a1=1, a2=2, a3=3) assert l.zrem("a", "a1", "a2") == 2 assert l.zrange("a", 0, -1) == [b("a3")]
def test_flushall(self): l.select(1) l.set("a", 1) assert l.get("a") == b("1") l.select(10) l.set("a", 1) assert l.get("a") == b("1") assert l.flushall() == "OK" assert l.get("a") is None l.select(1) assert l.get("a") is None
def test_zrange(self): l.zadd("a", a1=1, a2=2, a3=3) assert l.zrange("a", 0, 1) == [b("a1"), b("a2")] assert l.zrange("a", 2, 3) == [b("a3")] # withscores assert l.zrange("a", 0, 1, withscores=True) == [(b("a1"), 1), (b("a2"), 2)] assert l.zrange("a", 2, 3, withscores=True) == [(b("a3"), 3)]
def test_zrange(self): l.zadd('a', a1=1, a2=2, a3=3) assert l.zrange('a', 0, 1) == [b('a1'), b('a2')] assert l.zrange('a', 2, 3) == [b('a3')] #withscores assert l.zrange('a', 0, 1, withscores=True) == \ [(b('a1'), 1), (b('a2'), 2)] assert l.zrange('a', 2, 3, withscores=True) == \ [(b('a3'), 3)]
def check_keys(self, scan_type): d = { "scan": l.scan, "sscan": l.sscan, "lscan": l.lscan, "hscan": l.hscan, "zscan": l.zscan, "bscan": l.bscan } key, keys = d[scan_type]() assert key == "" assert set(keys) == set([b("a"), b("b"), b("c")]) _, keys = d[scan_type](match="a") assert set(keys) == set([b("a")]) _, keys = d[scan_type](key="a") assert set(keys) == set([b("b"), b("c")])
def check_keys(self, scan_type): d = { "xscan": l.xscan, "sxscan": l.sxscan, "lxscan": l.lxscan, "hxscan": l.hxscan, "zxscan": l.zxscan, "bxscan": l.bxscan } key, keys = d[scan_type]() assert key == "" assert set(keys) == set([b("a"), b("b"), b("c")]) _, keys = d[scan_type](match="a") assert set(keys) == set([b("a")]) _, keys = d[scan_type](key="a") assert set(keys) == set([b("b"), b("c")])
from __future__ import with_statement import datetime import time as mod_time from itertools import chain, starmap from ledis._compat import (b, izip, imap, iteritems, basestring, long, nativestr, bytes) from ledis.connection import ConnectionPool, UnixDomainSocketConnection, Token from ledis.exceptions import (ConnectionError, DataError, LedisError, ResponseError, TxNotBeginError) SYM_EMPTY = b('') def list_or_args(keys, args): # returns a single list combining keys and args try: iter(keys) # a string or bytes instance can be iterated, but indicates # keys wasn't passed as a list if isinstance(keys, (basestring, bytes)): keys = [keys] except TypeError: keys = [keys] if args: keys.extend(args) return keys def string_keys_to_dict(key_string, callback): return dict.fromkeys(key_string.split(), callback)
from __future__ import with_statement import datetime import time as mod_time from ledis._compat import (b, izip, imap, iteritems, iterkeys, itervalues, basestring, long, nativestr, urlparse, bytes) from ledis.connection import ConnectionPool, UnixDomainSocketConnection from ledis.exceptions import ( ConnectionError, DataError, LedisError, ResponseError, ExecAbortError, ) SYM_EMPTY = b('') def list_or_args(keys, args): # returns a single list combining keys and args try: iter(keys) # a string or bytes instance can be iterated, but indicates # keys wasn't passed as a list if isinstance(keys, (basestring, bytes)): keys = [keys] except TypeError: keys = [keys] if args: keys.extend(args) return keys
def test_invalid_value(self): members = set([b('1'), b('2'), b('3')]) l.sadd('a', *members) self.assertRaises(ResponseError, lambda: l.sexpire('a', 'a'))
def test_bget(self): "bget is the same as get in K/V commands" l.bmsetbit('a', 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 0) assert l.bget('a') == b('\x7f')
def test_sadd(self): members = set([b('1'), b('2'), b('3')]) l.sadd('a', *members) assert l.smembers('a') == members
def test_sdiff(self): l.sadd('a', '1', '2', '3') assert l.sdiff('a', 'b') == set([b('1'), b('2'), b('3')]) l.sadd('b', '2', '3') assert l.sdiff('a', 'b') == set([b('1')])
def test_zremrangebyscore(self): l.zadd('a', a1=1, a2=2, a3=3, a4=4, a5=5) assert l.zremrangebyscore('a', 2, 4) == 3 assert l.zrange('a', 0, -1) == [b('a1'), b('a5')] assert l.zremrangebyscore('a', 2, 4) == 0 assert l.zrange('a', 0, -1) == [b('a1'), b('a5')]
def test_smclear(self): members = set([b('1'), b('2'), b('3')]) l.sadd('a', *members) l.sadd('b', *members) assert l.smclear('a', 'b') == 2
def test_sunionstore(self): l.sadd('a', '1', '2') l.sadd('b', '2', '3') assert l.sunionstore('c', 'a', 'b') == 3 assert l.smembers('c') == set([b('1'), b('2'), b('3')])
def test_sexpireat(self): assert l.sexpireat('a', 1577808000) == 0 members = set([b('1'), b('2'), b('3')]) l.sadd('a', *members) assert l.sexpireat('a', 1577808000) == 1
def test_sexpireat_unixtime(self): members = set([b('1'), b('2'), b('3')]) l.sadd('a', *members) assert l.sexpireat('a', expire_at_seconds()) assert 0 < l.sttl('a') <= 61
def test_sexpire(self): members = set([b('1'), b('2'), b('3')]) assert l.sexpire('a', 100) == 0 l.sadd('a', *members) assert l.sexpire('a', 100) == 1 assert l.sttl('a') <= 100
def test_sclear(self): members = set([b('1'), b('2'), b('3')]) l.sadd('a', *members) assert l.sclear('a') == 3 assert l.sclear('a') == 0
def test_zadd(self): l.zadd('a', a1=1, a2=2, a3=3) assert l.zrange('a', 0, -1) == [b('a1'), b('a2'), b('a3')]
def test_sunion(self): l.sadd('a', '1', '2') l.sadd('b', '2', '3') assert l.sunion('a', 'b') == set([b('1'), b('2'), b('3')])
def test_sinter(self): l.sadd('a', '1', '2', '3') assert l.sinter('a', 'b') == set() l.sadd('b', '2', '3') assert l.sinter('a', 'b') == set([b('2'), b('3')])
def test_zremrangebyrank(self): l.zadd('a', a1=1, a2=2, a3=3, a4=4, a5=5) assert l.zremrangebyrank('a', 1, 3) == 3 assert l.zrange('a', 0, -1) == [b('a1'), b('a5')]
def test_srem(self): l.sadd('a', '1', '2', '3', '4') assert l.srem('a', '5') == 0 assert l.srem('a', '2', '4') == 2 assert l.smembers('a') == set([b('1'), b('3')])
def test_zrevrange(self): l.zadd('a', a1=1, a2=2, a3=3) assert l.zrevrange('a', 0, 1) == [b('a3'), b('a2')] assert l.zrevrange('a', 1, 2) == [b('a2'), b('a1')]
def test_smembers(self): l.sadd('a', '1', '2', '3') assert l.smembers('a') == set([b('1'), b('2'), b('3')])
import socket import sys from ledis._compat import (b, xrange, imap, byte_to_chr, unicode, bytes, long, BytesIO, nativestr, basestring, iteritems, LifoQueue, Empty, Full, urlparse, parse_qs) from ledis.exceptions import ( LedisError, ConnectionError, BusyLoadingError, ResponseError, InvalidResponse, ExecAbortError, ) SYM_STAR = b('*') SYM_DOLLAR = b('$') SYM_CRLF = b('\r\n') SYM_LF = b('\n') class PythonParser(object): "Plain Python parsing class" MAX_READ_LENGTH = 1000000 encoding = None EXCEPTION_CLASSES = { 'ERR': ResponseError, 'EXECABORT': ExecAbortError, 'LOADING': BusyLoadingError, }
def test_echo(self): assert l.echo('foo bar') == b('foo bar')
def test_setnx(self): l.delete('a') assert l.setnx('a', '1') assert l['a'] == b('1') assert not l.setnx('a', '2') assert l['a'] == b('1')
def test_mset(self): d = {'a': b('1'), 'b': b('2'), 'c': b('3')} assert l.mset(**d) for k, v in iteritems(d): assert l[k] == v