示例#1
0
    def test_emit_closed_channel(self):
        adapter = AmqpAdapter(_amqp_url)
        assert_amqp_closed(adapter)

        result = adapter.open()
        assert_amqp_open(adapter, result)

        adapter.channel.close()
        with pytest.raises(AdapterClosedError):
            assert adapter.emit(tevent().json) is None
        adapter.close()
        assert_amqp_closed(adapter)
示例#2
0
    def test_close(self):
        adapter = AmqpAdapter(_amqp_url)
        assert_amqp_closed(adapter)

        result = adapter.open()
        assert_amqp_open(adapter, result)

        assert adapter.close() is None
        assert_amqp_closed(adapter)  # this makes sure con/chan is None

        # Close should allow multiple close calls
        assert adapter.close() is None
        assert_amqp_closed(adapter)
示例#3
0
    def test_close_never_opened(self):
        adapter = AmqpAdapter(_amqp_url)
        assert_amqp_closed(adapter)

        # Close should allow calls even if never opened
        assert adapter.close() is None
        assert_amqp_closed(adapter)
示例#4
0
    def test_fail_emit_permanent(self):
        adapter = AmqpAdapter(_amqp_url)
        assert_amqp_closed(adapter)

        result = adapter.open()
        assert_amqp_open(adapter, result)

        # Make this fail by assertion error for 100% cov
        restore = pika.spec.Basic.Ack
        try:
            with pytest.raises(AdapterEmitPermanentError) as excinfo:
                adapter.channel._delivery_confirmation = True
                pika.spec.Basic.Ack = None
                assert adapter.emit(tevent().json) is None
        finally:
            pika.spec.Basic.Ack = restore
        assert isinstance(excinfo.value, AdapterError)
        adapter.close()
        assert_amqp_closed(adapter)
示例#5
0
    def test_fail_closed_via_pika(self):
        def _flush_output(*args, **kwargs):
            raise pika.exceptions.ProtocolSyntaxError

        adapter = AmqpAdapter(_amqp_url)
        assert_amqp_closed(adapter)

        result = adapter.open()
        assert_amqp_open(adapter, result)

        # Make this fail by assertion error for 100% cov
        restore = adapter.channel._flush_output

        try:
            with pytest.raises(AdapterClosedError) as excinfo:
                adapter.channel._flush_output = _flush_output
                assert adapter.emit(tevent().json) is None
        finally:
            adapter.channel._flush_output = restore
        assert isinstance(excinfo.value, AdapterClosedError)
        adapter.close()
        assert_amqp_closed(adapter)