Ejemplo n.º 1
0
    def open(self):
        self.usezlib=int(self.get_argument('usezlib',0))

        sessionid=self.get_argument('sessionid',None)
        cdata=self.get_argument('cdata',None)
        self.userdata=None
        if sessionid:
            self.userdata=DecodeCryptSession(sessionid)
            if self.userdata:
                self.userdata['uid']=str(self.userdata['uid'])
        if sessionid and self.userdata is None:
            self.close()
            return

        self.connid=uuid.uuid4().get_hex()
        print self.connid+' connected'
        connection_list[self.connid]=self
        self.last_act_time=time.time()
        self.cip=self.request.remote_ip

        if self.userdata:
            msgbody=DefJsonEncoder.encode(
                {
                    "func":"session.start2",
                    "parm":{
                        "sessionid":None,
                    },
                    "cdata":cdata
                }
            )
            msg=Message(body=msgbody,delivery_mode=2,reply_to=mqserver.back_queue)
            msg.headers={"connid":self.connid,'cip':self.cip,"uid":self.userdata['uid'],
                         'stime':time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(self.userdata.get('time'))),'suuid':self.userdata.get('uuid').hex}
            mqserver.publish(msg)
Ejemplo n.º 2
0
 def on_close(self):
     print "%s closed" % self.connid
     connection_list.pop(self.connid, '')
     msg = Message(body='{"func":"connection_lost","parm":{}}',
                   delivery_mode=2)
     msg.headers = {"connid": self.connid, 'cip': self.cip}
     mqserver.publish(msg)
Ejemplo n.º 3
0
 def on_close(self):
     print "%s closed"%self.connid
     connection_list.pop(self.connid,'')
     msg=Message(body='{"func":"connection_lost","parm":{}}',delivery_mode=2)
     msg.headers={"connid":self.connid,'cip':self.cip}
     if self.userdata:
         msg.headers['uid']=self.userdata['uid']
     mqserver.publish(msg)
Ejemplo n.º 4
0
    def test_consume(self):
        global count
        conn = Connection('localhost', io_loop=self.io_loop)
        test_msg = Message('test')
        count = 0

        def clean_up():
            assert not ch.consumers
            conn.close(self.stop)

        def consume_callback(msg):
            global ch, count, consumer
            count += 1
            assert msg.body == 'test', msg.body
            if count == 50:
                consumer.cancel(clean_up)

        def on_connect():
            global ch, consumer
            ch = conn.channel()
            ch.exchange_declare('test_exchange', durable=False)
            ch.queue_delete('test_queue')
            ch.queue_declare('test_queue', durable=False)
            ch.queue_bind('test_queue', 'test_exchange', 'test')
            for _ in xrange(50):
                ch.publish(test_msg,
                           exchange='test_exchange',
                           routing_key='test')
            consumer = Consumer(consume_callback)
            ch.consume('test_queue', consumer, no_ack=True)

        conn.connect(on_connect)
        self.wait()
Ejemplo n.º 5
0
    def test_get(self):
        conn = Connection('localhost', io_loop=self.io_loop)
        ch = None
        test_msg = Message('test')

        def on_msg(msg):
            global ch
            assert msg.body == 'test'
            msg.ack()
            ch.get('test_queue', on_missing_msg)

        def on_missing_msg(msg):
            assert msg is None
            conn.close(self.stop)

        def on_connect():
            global ch
            ch = conn.channel()
            ch.exchange_declare('test_exchange', durable=False)
            ch.queue_delete('test_queue')
            ch.queue_declare('test_queue', durable=False)
            ch.queue_bind('test_queue', 'test_exchange', 'test')
            ch.publish(test_msg, exchange='test_exchange', routing_key='test')
            ch.get('test_queue', on_msg)

        conn.connect(on_connect)
        self.wait()
Ejemplo n.º 6
0
    def test_publish(self):
        conn = Connection('localhost', io_loop=self.io_loop)
        test_msg = Message('test')

        def on_connect():
            ch = conn.channel()
            ch.exchange_declare('test_exchange', durable=False)
            ch.publish(test_msg, exchange='test_exchange', routing_key='test')
            conn.close(self.stop)

        conn.connect(on_connect)
        self.wait()
Ejemplo n.º 7
0
    def test_reliable_publishing(self):
        test_msg = Message('test')
        conn = Connection('localhost', io_loop=self.io_loop)

        def on_connect():
            ch = conn.channel()
            ch.exchange_declare('test_imm', durable=False)
            ch.on_error = lambda: None
            ch.select()
            ch.publish(test_msg, exchange='test_imm')
            ch.commit(lambda: conn.close(self.stop))

        conn.connect(on_connect)
        self.wait()
Ejemplo n.º 8
0
        def on_connect():
            self.ch = conn.channel()
            self.ch.exchange_declare('test_exchange', durable=False)
            self.ch.queue_delete('test_queue')
            self.ch.queue_declare('test_queue', durable=True)
            self.ch.qos(prefetch_count=49)
            self.ch.queue_bind('test_queue', 'test_exchange', 'test')
            for i in xrange(50):
                msg = Message('test %d' % i)
                self.ch.publish(msg,
                                exchange='test_exchange',
                                routing_key='test')

            consumer = Consumer(consume_callback)
            self.ch.consume('test_queue', consumer, no_ack=False)
Ejemplo n.º 9
0
    def test_basic_return(self):
        test_msg = Message('test')
        conn = Connection('localhost', io_loop=self.io_loop)

        def on_connect():
            ch = conn.channel()
            ch.on_return = on_return
            ch.exchange_declare('test_mand', durable=False)
            ch.publish(test_msg, exchange='test_mand', mandatory=True)

        def on_return(msg):
            rx = msg.rx_data
            assert rx.reply_code == 312, rx.reply_code  # NO_ROUTE
            assert rx.exchange == 'test_mand', rx.exchange_declare
            conn.close(self.stop)

        conn.connect(on_connect)
        self.wait()
Ejemplo n.º 10
0
class RabbitMQServer(tornado.websocket.WebSocketHandler):
    last_act_time = 0

    def open(self):
        self.usezlib = int(self.get_argument('usezlib', 0))
        self.connid = uuid.uuid4().get_hex()
        print self.connid + ' connected'
        connection_list[self.connid] = self
        self.last_act_time = time.time()
        self.cip = self.request.remote_ip

    def on_message(self, message):
        try:
            if self.usezlib:
                message = zlib.decompress(message)
        except Exception, e:
            pass
        msg = Message(body=message,
                      delivery_mode=2,
                      reply_to=mqserver.back_queue)
        msg.headers = {"connid": self.connid, 'cip': self.cip}
        mqserver.publish(msg)
        self.last_act_time = time.time()
Ejemplo n.º 11
0
    def test_purge_queue(self):
        test_msg = Message('test')
        conn = Connection('localhost', io_loop=self.io_loop)

        def on_connect():
            self.ch = conn.channel()
            self.ch.queue_delete('test_queue')
            self.ch.queue_declare('test_purge_queue', auto_delete=True)
            self.ch.exchange_declare('test_purge_exchange', durable=False)
            self.ch.queue_bind(queue='test_purge_queue',
                               exchange='test_purge_exchange')

            self.ch.queue_purge('test_purge_queue')
            for _ in xrange(3):
                self.ch.publish(test_msg, exchange='test_purge_exchange')
            self.ch.queue_purge('test_purge_queue', purged)

        def purged(msg_count):
            assert msg_count == 3, msg_count
            conn.close(self.stop)

        conn.connect(on_connect)
        self.wait()
Ejemplo n.º 12
0
    def test_publish_huge(self):
        conn = Connection('localhost', io_loop=self.io_loop)
        msg = "test message" * 151343
        test_msg = Message(msg)

        def on_connect():
            ch = conn.channel()

            def callback(msg):
                conn.close(self.stop)

            def on_creation(q):
                ch.publish(test_msg,
                           exchange='test_exchange',
                           routing_key='test')
                ch.consume(q.queue, callback)

            ch.exchange_declare('test_exchange', durable=False)
            ch.queue_delete('test_queue')
            ch.queue_declare('test_queue', durable=False, callback=on_creation)
            ch.queue_bind('test_queue', 'test_exchange', 'test')

        conn.connect(on_connect)
        self.wait(timeout=1)
Ejemplo n.º 13
0
 def on_message(self, message):
     message=DefJsonEncoder.encode(msgpack.unpackb(message))
     msg=Message(body=message,delivery_mode=2,reply_to=mqserver.back_queue)
     msg.headers={"connid":self.connid,'cip':self.cip}
     mqserver.publish(msg)
     self.last_act_time=time.time()