Exemplo n.º 1
0
    def test_init(self):
        expect(ProtocolClass.__init__).args('foo', a='b')

        klass = QueueClass.__new__(QueueClass)
        klass.__init__('foo', a='b')

        assert_equals(
            {
                11: klass._recv_declare_ok,
                21: klass._recv_bind_ok,
                31: klass._recv_purge_ok,
                41: klass._recv_delete_ok,
                51: klass._recv_unbind_ok,
            }, klass.dispatch_map)
        assert_equals(deque(), self.klass._declare_cb)
        assert_equals(deque(), self.klass._bind_cb)
        assert_equals(deque(), self.klass._unbind_cb)
        assert_equals(deque(), self.klass._delete_cb)
        assert_equals(deque(), self.klass._purge_cb)
Exemplo n.º 2
0
    def test_init(self):
        expect(ProtocolClass.__init__).args('foo', a='b')

        klass = QueueClass.__new__(QueueClass)
        klass.__init__('foo', a='b')

        assert_equals(
            {
                11: klass._recv_declare_ok,
                21: klass._recv_bind_ok,
                31: klass._recv_purge_ok,
                41: klass._recv_delete_ok,
                51: klass._recv_unbind_ok,

            }, klass.dispatch_map)
        assert_equals(deque(), self.klass._declare_cb)
        assert_equals(deque(), self.klass._bind_cb)
        assert_equals(deque(), self.klass._unbind_cb)
        assert_equals(deque(), self.klass._delete_cb)
        assert_equals(deque(), self.klass._purge_cb)
Exemplo n.º 3
0
 def setUp(self):
     super(QueueClassTest, self).setUp()
     ch = mock()
     ch.channel_id = 42
     ch.logger = mock()
     self.klass = QueueClass(ch)
Exemplo n.º 4
0
class QueueClassTest(Chai):

    def setUp(self):
        super(QueueClassTest, self).setUp()
        ch = mock()
        ch.channel_id = 42
        ch.logger = mock()
        self.klass = QueueClass(ch)

    def test_init(self):
        expect(ProtocolClass.__init__).args('foo', a='b')

        klass = QueueClass.__new__(QueueClass)
        klass.__init__('foo', a='b')

        assert_equals(
            {
                11: klass._recv_declare_ok,
                21: klass._recv_bind_ok,
                31: klass._recv_purge_ok,
                41: klass._recv_delete_ok,
                51: klass._recv_unbind_ok,

            }, klass.dispatch_map)
        assert_equals(deque(), self.klass._declare_cb)
        assert_equals(deque(), self.klass._bind_cb)
        assert_equals(deque(), self.klass._unbind_cb)
        assert_equals(deque(), self.klass._delete_cb)
        assert_equals(deque(), self.klass._purge_cb)

    def test_cleanup(self):
        self.klass._cleanup()
        assert_equals(None, self.klass._declare_cb)
        assert_equals(None, self.klass._bind_cb)
        assert_equals(None, self.klass._unbind_cb)
        assert_equals(None, self.klass._delete_cb)
        assert_equals(None, self.klass._purge_cb)
        assert_equals(None, self.klass._channel)
        assert_equals(None, self.klass.dispatch_map)

    def test_declare_default_args(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args(self.klass.default_ticket).returns(w)
        expect(w.write_shortstr).args('').returns(w)
        expect(w.write_bits).args(False, False, False, True, True).returns(w)
        expect(w.write_table).args({})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 10, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        stub(self.klass.channel.add_synchronous_cb)

        assert_equals(deque(), self.klass._declare_cb)
        self.klass.declare()
        assert_equals(deque(), self.klass._declare_cb)

    def test_declare_with_args_and_no_cb(self):
        w = mock()
        stub(self.klass.allow_nowait)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bits).args('p', 'd', 'e', 'a', False).returns(w)
        expect(w.write_table).args({'foo': 'bar'})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 10, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect( self.klass.channel.add_synchronous_cb ).args( self.klass._recv_declare_ok ).\
            returns('stuffs')

        assert_equals(deque(), self.klass._declare_cb)
        assert_equals('stuffs', self.klass.declare('queue', passive='p', durable='d', exclusive='e',
                                                   auto_delete='a', nowait=False, arguments={'foo': 'bar'}, ticket='ticket'))
        assert_equals(deque([None]), self.klass._declare_cb)

    def test_declare_with_args_and_cb(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bits).args('p', 'd', 'e', 'a', False).returns(w)
        expect(w.write_table).args({'foo': 'bar'})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 10, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect( self.klass.channel.add_synchronous_cb ).args( self.klass._recv_declare_ok ).\
            returns('stuffs')

        # assert it's put in the right spot too
        self.klass._declare_cb = deque(['blargh'])
        assert_equals('stuffs', self.klass.declare('queue', passive='p', durable='d', exclusive='e',
                                                   auto_delete='a', nowait=True, arguments={'foo': 'bar'}, ticket='ticket',
                                                   cb='callback'))
        assert_equals(deque(['blargh', 'callback']), self.klass._declare_cb)

    def test_recv_declare_ok_with_callback(self):
        rframe = mock()
        cb = mock()
        self.klass._declare_cb.append(cb)
        self.klass._declare_cb.append(mock())  # assert not called

        expect(rframe.args.read_shortstr).returns('queue')
        expect(rframe.args.read_long).returns(32)
        expect(rframe.args.read_long).returns(5)
        expect(cb).args('queue', 32, 5)

        assert_equals(('queue', 32, 5), self.klass._recv_declare_ok(rframe))
        assert_equals(1, len(self.klass._declare_cb))
        assert_false(cb in self.klass._declare_cb)

    def test_recv_declare_ok_without_callback(self):
        rframe = mock()
        cb = mock()
        self.klass._declare_cb.append(None)
        self.klass._declare_cb.append(cb)

        expect(rframe.args.read_shortstr).returns('queue')
        expect(rframe.args.read_long).returns(32)
        expect(rframe.args.read_long).returns(5)

        assert_equals(('queue', 32, 5), self.klass._recv_declare_ok(rframe))
        assert_equals(1, len(self.klass._declare_cb))
        assert_false(None in self.klass._declare_cb)

    def test_bind_default_args(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args(self.klass.default_ticket).returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_shortstr).args('exchange').returns(w)
        expect(w.write_shortstr).args('').returns(w)
        expect(w.write_bit).args(True).returns(w)
        expect(w.write_table).args({})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 20, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        stub(self.klass.channel.add_synchronous_cb)

        assert_equals(deque(), self.klass._declare_cb)
        self.klass.bind('queue', 'exchange')
        assert_equals(deque(), self.klass._declare_cb)

    def test_bind_with_args_and_no_cb(self):
        w = mock()
        stub(self.klass.allow_nowait)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_shortstr).args('exchange').returns(w)
        expect(w.write_shortstr).args('route').returns(w)
        expect(w.write_bit).args(False).returns(w)
        expect(w.write_table).args({'foo': 'bar'})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 20, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_bind_ok)

        assert_equals(deque(), self.klass._bind_cb)
        self.klass.bind('queue', 'exchange', routing_key='route', nowait=False,
                        arguments={'foo': 'bar'}, ticket='ticket')
        assert_equals(deque([None]), self.klass._bind_cb)

    def test_bind_with_args_and_cb(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_shortstr).args('exchange').returns(w)
        expect(w.write_shortstr).args('route').returns(w)
        expect(w.write_bit).args(False).returns(w)
        expect(w.write_table).args({'foo': 'bar'})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 20, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_bind_ok)

        self.klass._bind_cb = deque(['blargh'])
        self.klass.bind('queue', 'exchange', routing_key='route', nowait=True,
                        arguments={'foo': 'bar'}, ticket='ticket', cb='callback')
        assert_equals(deque(['blargh', 'callback']), self.klass._bind_cb)

    def test_recv_bind_ok_with_cb(self):
        cb = mock()
        self.klass._bind_cb.append(cb)
        self.klass._bind_cb.append(mock())  # assert not called

        expect(cb)

        self.klass._recv_bind_ok('frame')
        assert_equals(1, len(self.klass._bind_cb))
        assert_false(cb in self.klass._bind_cb)

    def test_recv_bind_ok_without_cb(self):
        self.klass._bind_cb.append(None)
        self.klass._bind_cb.append(mock())  # assert not called

        self.klass._recv_bind_ok('frame')
        assert_equals(1, len(self.klass._bind_cb))
        assert_false(None in self.klass._bind_cb)

    def test_unbind_default_args(self):
        w = mock()
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args(self.klass.default_ticket).returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_shortstr).args('exchange').returns(w)
        expect(w.write_shortstr).args('').returns(w)
        expect(w.write_table).args({})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 50, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_unbind_ok)

        assert_equals(deque(), self.klass._unbind_cb)
        self.klass.unbind('queue', 'exchange')
        assert_equals(deque([None]), self.klass._unbind_cb)

    def test_unbind_with_args(self):
        w = mock()
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_shortstr).args('exchange').returns(w)
        expect(w.write_shortstr).args('route').returns(w)
        expect(w.write_table).args({'foo': 'bar'})
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 50, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_unbind_ok)

        self.klass._unbind_cb = deque(['blargh'])
        self.klass.unbind('queue', 'exchange', routing_key='route',
                          arguments={'foo': 'bar'}, ticket='ticket', cb='callback')
        assert_equals(deque(['blargh', 'callback']), self.klass._unbind_cb)

    def test_recv_unbind_ok_with_cb(self):
        cb = mock()
        self.klass._unbind_cb.append(cb)
        self.klass._unbind_cb.append(mock())  # assert not called

        expect(cb)

        self.klass._recv_unbind_ok('frame')
        assert_equals(1, len(self.klass._unbind_cb))
        assert_false(cb in self.klass._unbind_cb)

    def test_recv_unbind_ok_without_cb(self):
        self.klass._unbind_cb.append(None)
        self.klass._unbind_cb.append(mock())  # assert not called

        self.klass._recv_unbind_ok('frame')
        assert_equals(1, len(self.klass._unbind_cb))
        assert_false(None in self.klass._unbind_cb)

    def test_purge_default_args(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args(self.klass.default_ticket).returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bit).args(True)
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 30, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        stub(self.klass.channel.add_synchronous_cb)

        assert_equals(deque(), self.klass._purge_cb)
        self.klass.purge('queue')
        assert_equals(deque(), self.klass._purge_cb)

    def test_purge_with_args_and_no_cb(self):
        w = mock()
        stub(self.klass.allow_nowait)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bit).args(False)
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 30, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_purge_ok).returns('fifty')

        assert_equals(deque(), self.klass._purge_cb)
        assert_equals(
            'fifty', self.klass.purge('queue', nowait=False, ticket='ticket'))
        assert_equals(deque([None]), self.klass._purge_cb)

    def test_purge_with_args_and_cb(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bit).args(False)
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 30, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_purge_ok).returns('fifty')

        self.klass._purge_cb = deque(['blargh'])
        assert_equals('fifty', self.klass.purge(
            'queue', nowait=True, ticket='ticket', cb='callback'))
        assert_equals(deque(['blargh', 'callback']), self.klass._purge_cb)

    def test_recv_purge_ok_with_cb(self):
        rframe = mock()
        cb = mock()
        self.klass._purge_cb.append(cb)
        self.klass._purge_cb.append(mock())  # assert not called

        expect(rframe.args.read_long).returns(42)
        expect(cb).args(42)

        assert_equals(42, self.klass._recv_purge_ok(rframe))
        assert_equals(1, len(self.klass._purge_cb))
        assert_false(cb in self.klass._purge_cb)

    def test_recv_purge_ok_without_cb(self):
        rframe = mock()
        self.klass._purge_cb.append(None)
        self.klass._purge_cb.append(mock())  # assert not called

        expect(rframe.args.read_long).returns(42)

        assert_equals(42, self.klass._recv_purge_ok(rframe))
        assert_equals(1, len(self.klass._purge_cb))
        assert_false(None in self.klass._purge_cb)

    def test_delete_default_args(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args(self.klass.default_ticket).returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bits).args(False, False, True)
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 40, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        stub(self.klass.channel.add_synchronous_cb)

        assert_equals(deque(), self.klass._delete_cb)
        self.klass.delete('queue')
        assert_equals(deque(), self.klass._delete_cb)

    def test_delete_with_args_and_no_cb(self):
        w = mock()
        stub(self.klass.allow_nowait)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bits).args('yes', 'no', False)
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 40, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_delete_ok).returns('five')

        assert_equals(deque(), self.klass._delete_cb)
        assert_equals('five', self.klass.delete('queue', if_unused='yes', if_empty='no', nowait=False,
                                                ticket='ticket'))
        assert_equals(deque([None]), self.klass._delete_cb)

    def test_delete_with_args_and_cb(self):
        w = mock()
        expect(self.klass.allow_nowait).returns(True)
        expect(mock(queue_class, 'Writer')).returns(w)
        expect(w.write_short).args('ticket').returns(w)
        expect(w.write_shortstr).args('queue').returns(w)
        expect(w.write_bits).args('yes', 'no', False)
        expect(mock(queue_class, 'MethodFrame')).args(
            42, 50, 40, w).returns('frame')
        expect(self.klass.send_frame).args('frame')
        expect(self.klass.channel.add_synchronous_cb).args(
            self.klass._recv_delete_ok)

        self.klass._delete_cb = deque(['blargh'])
        self.klass.delete('queue', if_unused='yes', if_empty='no', nowait=True,
                          ticket='ticket', cb='callback')
        assert_equals(deque(['blargh', 'callback']), self.klass._delete_cb)

    def test_recv_delete_ok_with_cb(self):
        rframe = mock()
        cb = mock()
        self.klass._delete_cb.append(cb)
        self.klass._delete_cb.append(mock())  # assert not called

        expect(rframe.args.read_long).returns(42)
        expect(cb).args(42)

        self.klass._recv_delete_ok(rframe)
        assert_equals(1, len(self.klass._delete_cb))
        assert_false(cb in self.klass._delete_cb)

    def test_recv_delete_ok_without_cb(self):
        rframe = mock()
        self.klass._delete_cb.append(None)
        self.klass._delete_cb.append(mock())  # assert not called

        expect(rframe.args.read_long).returns(42)

        self.klass._recv_delete_ok(rframe)
        assert_equals(1, len(self.klass._delete_cb))
        assert_false(None in self.klass._delete_cb)