def test_key_pexpireat_pttl(): import time operation.handle_req(["SET", "KEY_PTTL_AT", "123"]) ret = operation.handle_req(["PEXPIREAT", "KEY_PTTL_AT", "%s" % (time.time()*1000 + 999)]) assert(ret == [":1\r\n"]) ret = operation.handle_req(["PTTL", "KEY_PTTL_AT"]) assert(ret and (int(ret[0][1:].strip()) < 1010 ))
def test_key_get(): operation.handle_req(["SET", "KEY", "123"]) ret = operation.handle_req(["GET", "KEY"]) assert(ret == ["$3\r\n123\r\n"]) operation.handle_req(["SET", "KEY", "1234"]) ret = operation.handle_req(["GET", "KEY"]) assert(ret == ["$4\r\n1234\r\n"])
def test_key_expire_ttl(): operation.handle_req(["SET", "KEY_TTL", "123"]) ret = operation.handle_req(["TTL", "KEY_NIL"]) assert(ret == [":-2\r\n"]) ret = operation.handle_req(["TTL", "KEY_TTL"]) assert(ret == [":-1\r\n"]) ret = operation.handle_req(["EXPIRE", "KEY_TTL_NIL", "1000"]) assert(ret == [":0\r\n"]) ret = operation.handle_req(["EXPIRE", "KEY_TTL", "1000"]) assert(ret == [":1\r\n"]) ret = operation.handle_req(["TTL", "KEY_TTL"]) assert(ret == [":999\r\n"]) import time ret = operation.handle_req(["EXPIREAT", "KEY_TTL", "%s" % (time.time() + 999)]) assert(ret == [":1\r\n"]) ret = operation.handle_req(["TTL", "KEY_TTL"]) assert(ret == [":999\r\n"] or ret == [":998\r\n"])
def test_key_pexpire_pttl(): operation.handle_req(["SET", "KEY_PTTL", "123"]) ret = operation.handle_req(["TTL", "KEY_NIL"]) assert(ret == [":-2\r\n"]) ret = operation.handle_req(["TTL", "KEY_PTTL"]) assert(ret == [":-1\r\n"]) ret = operation.handle_req(["PEXPIRE", "KEY_PTTL", "1000"]) assert(ret == [":1\r\n"]) ret = operation.handle_req(["PTTL", "KEY_PTTL"]) assert(ret == [":999\r\n"])
def handle(self): s = self.request try: while True: paras = [] f = s.makefile() count = f.readline() # resp = operation.encode_para(["-ERR unknown error"]) if count.startswith("*"): count = int(count[1:].strip()) logging.debug(count) for x in range(count): length = f.readline().strip() logging.debug(length) if length.startswith("$"): length = int(length[1:]) value = f.read(length) f.read(2) # skip CR LF logging.debug("%s, %s", length, value) paras.append(value) else: # resp = operation.encode_para(["-ERR parameters error"]) pass ret = operation.handle_req(paras) if len(ret) > 1: resp = "*%s\r\n%s" % (len(ret), "".join(ret)) else: resp = "".join(ret) else: resp = operation.encode_para(["-ERR parameters error"]) f.write(resp) logging.debug("%s => %s" % (str(paras), repr(resp))) except Exception, e: logging.warn("%s: %s", s.getpeername(), str(e))
def test_key_set(): ret = operation.handle_req(["SET", "KEY", "123"]) assert(ret == ["$2\r\nOK\r\n"])
def test_key_get_none(): ret = operation.handle_req(["GET", "KEY_NIL"]) assert(ret == ["$-1\r\n"])