Exemplo n.º 1
0
    def test_tuple_channel(self):

        c = redisutil.RedisChannel((self.ip, redis_port), '/foo/a', 'client')
        s = redisutil.RedisChannel((self.ip, redis_port), ('foo', 'a'),
                                   'server')

        c.send_msg(1)
        rst = s.recv_msg()
        dd('server recv:', rst)

        self.assertEqual(1, rst)
Exemplo n.º 2
0
    def test_brecv_message(self):

        c = redisutil.RedisChannel((self.ip, redis_port), '/foo', 'client')
        s = redisutil.RedisChannel((self.ip, redis_port), '/foo', 'server')

        c.send_msg('aa')
        self.assertEqual('aa', s.brecv_msg(timeout=1))
        self.assertEqual(None, s.brecv_msg(timeout=1))

        def _send_msg():
            time.sleep(0.5)
            c.send_msg('bar')

        threadutil.start_daemon_thread(target=_send_msg)
        self.assertEqual('bar', s.brecv_msg(timeout=1))
Exemplo n.º 3
0
    def test_channel_timeout(self):

        ca = redisutil.RedisChannel((self.ip, redis_port), '/foo/a', 'client', timeout=1)
        ca.send_msg(1)
        self.assertEqual(['/foo/a'], ca.list_channel('/foo/'))
        time.sleep(1.5)
        self.assertEqual([], ca.list_channel('/foo/'))
Exemplo n.º 4
0
    def test_rpeek_message(self):

        c = redisutil.RedisChannel((self.ip, redis_port), '/foo', 'client')
        s = redisutil.RedisChannel((self.ip, redis_port), '/foo', 'server')

        self.assertEqual(None, c.rpeek_msg())
        self.assertEqual(None, s.rpeek_msg())

        c.send_msg('c2s1')
        c.send_msg('c2s2')
        s.send_msg('s2c1')
        s.send_msg('s2c2')

        # rpeek does not remove message
        for ii in range(2):
            self.assertEqual('c2s2', s.rpeek_msg())
            self.assertEqual('s2c2', c.rpeek_msg())
Exemplo n.º 5
0
    def test_redis_channel(self):

        c = redisutil.RedisChannel((self.ip, redis_port), '/foo', 'client')
        s = redisutil.RedisChannel((self.ip, redis_port), '/foo', 'server')

        rst = s.peek_msg()
        dd('server peek: ', rst)
        self.assertEqual(None, rst)

        c.send_msg('c2s')
        s.send_msg('s2c')

        # peek does not remove message

        for ii in range(2):
            rst = s.peek_msg()
            dd('server peek: ', rst)
            self.assertEqual('c2s', rst)

            rst = c.peek_msg()
            dd('client peek: ', rst)
            self.assertEqual('s2c', rst)

        rst = s.recv_msg()
        dd('server recv: ', rst)
        self.assertEqual('c2s', rst, 'server pop message from client')

        rst = s.peek_msg()
        dd('server peek: ', rst)
        self.assertEqual(None, rst, 'no more message in channel')

        # recv_last_msg

        for ii in range(10):
            s.send_msg('s2c' + str(ii))

        rst = c.recv_last_msg()
        dd('client recv last:', rst)
        self.assertEqual('s2c9', rst)

        rst = c.peek_msg()
        self.assertEqual(
            None, rst,
            'all messages should have been read, after recv_last_msg()')
Exemplo n.º 6
0
    def test_list_redis_channel(self):

        ca = redisutil.RedisChannel((self.ip, redis_port), '/foo/a', 'client')
        sb = redisutil.RedisChannel((self.ip, redis_port), '/foo/b', 'server')

        rst = ca.list_channel('/foo/')
        dd('before write, list_channel:', rst)
        self.assertEqual([], rst, 'can not list list before any message sent')

        ca.send_msg(1)
        sb.send_msg(2)

        rst = ca.list_channel('/foo/')
        dd('after write, list_channel:', rst)
        self.assertEqual(['/foo/a', '/foo/b'], rst)

        # empty channel then channel can not be seen.
        redisutil.RedisChannel((self.ip, redis_port), '/foo/a',
                               'server').recv_msg()
        redisutil.RedisChannel((self.ip, redis_port), '/foo/b',
                               'client').recv_msg()

        rst = ca.list_channel('/foo/')
        self.assertEqual([], rst)