Example #1
0
 def dataReceived(self, rcvdata):
     cmd_count = 0
     r = fakeredis.FakeStrictRedis()
     cmd_count += 1
     data = redis_protocol.decode(rcvdata)  # data类型:list
     command = " ".join(redis_protocol.decode(rcvdata))  # command类型:string
     # print str(command)
     logger = JsonLog()
     logger.get_log(command,
                    self.transport.getPeer().host,
                    self.transport.getPeer().port)
     if data[0] in self.command:
         if data[0].lower() == "quit":
             self.transport.loseConnection()
         elif data[0].lower() == "ping":
             self.transport.write("+PONG\r\n")
         elif data[0].lower() == "info":
             diff = round(time.time() - time_elapse) % 60
             self.transport.write(
                 RedisCommands.parse_info(diff, self.connectionNb,
                                          cmd_count))
         elif data[0].lower() == "save" or data[0].lower(
         ) == "flushall" or data[0].lower() == "flushdb":
             self.transport.write("+OK\r\n")
         else:
             if command.lower().startswith('config get') and len(data) == 3:
                 s = RedisCommands.parse_config(data[2])
                 self.transport.write(s)
             elif command.lower().startswith('config set') and len(
                     data) == 4:
                 flag = RedisCommands.set_config(data[2], data[3])
                 if flag:
                     self.transport.write("+OK\r\n")
                 else:
                     self.transport.write(
                         "-(error) ERR Unsupported CONFIG parameter: {0}".
                         format(data[2]))
             elif data[0].lower() == "set" and len(data) == 3:
                 if r.set(data[1], data[2]):
                     self.transport.write("+OK\r\n")
             elif data[0].lower().startswith('del') and len(data) == 2:
                 if r.delete(data[1]):
                     self.transport.write("+(integer) 1\r\n")
             elif command.lower().startswith('get') and len(data) == 2:
                 if r.get(data[1]):
                     s = r.get(data[1])
                     self.transport.write("+{0}\r\n".format(s))
             elif command.lower().startswith('keys') and len(data) == 2:
                 if r.keys() and (data[1] in r.keys() or data[1] == '*'):
                     keys = r.keys()
                     self.transport.write(RedisCommands.encode_keys(keys))
                 elif len(r.keys()) == 0:
                     self.transport.write("+(empty list or set)\r\n")
             else:
                 self.transport.write(
                     "-ERR wrong number of arguments for '{0}' command\r\n".
                     format(data[0]))
     else:
         self.transport.write("-ERR unknown command '{0}'\r\n".format(
             data[0]))
Example #2
0
 def dataReceived(self, chunk):
     log.msg("Server: %d bytes received" % len(chunk))
     command = redis_protocol.decode(chunk)[0]
     log.msg("command: %s" % command)
     if command.lower() in readOnlyCommands:
         slave_cli_queue = self.iter_slave_cli_queues.next()
         slave_cli_queue.put(chunk)
     else:
         self.master_cli_queue.put(chunk)
Example #3
0
 def dataReceived(self, chunk):
     log.msg("Server: %d bytes received" % len(chunk))
     command = redis_protocol.decode(chunk)[0]
     log.msg("command: %s" % command)
     if command.lower() in readOnlyCommands:
         slave_cli_queue = self.iter_slave_cli_queues.next()
         slave_cli_queue.put(chunk)
     else:
         self.master_cli_queue.put(chunk)
Example #4
0
    def dataReceived(self, rcvdata):
        cmd_count = 0   
        r = fakeredis.FakeStrictRedis()
        cmd_count = cmd_count + 1
        print "original data:"+str(rcvdata),
        #print "Data received:", str(redis_protocol.decode(rcvdata))
        try:
            data=redis_protocol.decode(rcvdata)
            command=" ".join(redis_protocol.decode(rcvdata))
            print str(command)
        except:
            data=rcvdata
            command=rcvdata
        if command.lower == "quit":
            self.transport.loseConnection()

        else:
            if command.lower() == "ping" or rcvdata.find('PING') == 0:
                snddata = "+PONG\r\n"  
                #redis_protocol.encode("PONG crime")    
                #print redis_protocol.encode("PONG")
                self.transport.write(snddata) 
            elif command.lower() == "config get *" or rcvdata.find('config')==0:
                self.transport.write(rediscommands.parse_config())
            elif command.lower().startswith('set') and len(data) == 3:
                if r.set(data[1],data[2]):
                    self.transport.write("+OK\r\n")
            elif command.lower().startswith('get') and (len(data) == 2 or len(data) == 1):
                if r.get(data[1]):
                    s=r.get(data[1])
                    self.transport.write('+"%s"\r\n'%(s))
            elif command.lower().startswith('info'):
                diff = round(time.time() - time_elapse) % 60
                self.transport.write(rediscommands.parse_info(diff,self.connectionNb,cmd_count))
            elif command.lower().startswith('keys') and (len(data) == 2 or len(data) == 1):
                if r.keys() and (data[1] in r.keys() or data[1] == '*') :
                    keys=r.keys()
                    self.transport.write(rediscommands.encode_keys(keys))
                elif len(r.keys()) == 0:
                    self.transport.write("+(empty list or set)\r\n")
                else:
                    self.transport.write("-ERR wrong number of arguments for 'keys' command\r\n")
            else:
                self.transport.write("-ERR unknown command '%s'\r\n"%(data[0]))
 def test_none_response(self):
     eq_(decode("*3\r\n$3\r\nfoo\r\n$-1\r\n$3\r\nbar\r\n"), ["foo", None, "bar"])
 def test_none(self):
     eq_(decode("$-1\r\n"), None)
 def test_response(self):
     eq_(decode("$6\r\nfoobar\r\n"), "foobar")
 def test_set(self):
     eq_(decode("*3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n"), ['SET', 'mykey', 'myvalue'])
 def test_ping(self):
     eq_(decode("*1\r\n$4\r\nping"), ["ping"])
     eq_(decode(encode("ping")), ["ping"])
 def test_none_response(self):
     eq_(decode("*3\r\n$3\r\nfoo\r\n$-1\r\n$3\r\nbar\r\n"),
         ["foo", None, "bar"])
 def test_none(self):
     eq_(decode("$-1\r\n"), None)
 def test_response(self):
     eq_(decode("$6\r\nfoobar\r\n"), "foobar")
 def test_set(self):
     eq_(decode("*3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n"),
         ['SET', 'mykey', 'myvalue'])
 def test_ping(self):
     eq_(decode("*1\r\n$4\r\nping"), ["ping"])
     eq_(decode(encode("ping")), ["ping"])