Esempio n. 1
0
    def test_connection_close_handles_raise_on_write(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)
        io = IO(connection.parameters, [])
        io.socket = Mock(name='socket', spec=socket.socket)
        connection._io = io

        # Create some fake channels.
        for index in range(10):
            connection._channels[index + 1] = Channel(
                index + 1, connection, 360)

        def raise_on_write(_):
            raise AMQPConnectionError('travis-ci')

        connection._channel0._write_frame = raise_on_write

        self.assertFalse(connection.is_closed)

        connection.close()

        # Make sure all the fake channels were closed as well.
        for index in range(10):
            self.assertNotIn(index + 1, connection._channels)

        self.assertFalse(connection._channels)
        self.assertTrue(connection.is_closed)
Esempio n. 2
0
    def test_connection_close(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)
        io = IO(connection.parameters, [])
        io.socket = Mock(name='socket', spec=socket.socket)
        connection._io = io

        # Create some fake channels.
        for index in range(10):
            connection._channels[index + 1] = Channel(
                index + 1, connection, 360)

        def on_write(frame_out):
            self.assertIsInstance(frame_out, specification.Connection.Close)
            connection._channel0._close_connection_ok()

        connection._channel0._write_frame = on_write

        self.assertFalse(connection.is_closed)

        connection.close()

        # Make sure all the fake channels were closed as well.
        for index in range(10):
            self.assertNotIn(index + 1, connection._channels)

        self.assertTrue(connection.is_closed)
Esempio n. 3
0
    def test_connection_close_when_already_closed(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)
        io = IO(connection.parameters, [])
        io.socket = Mock(name='socket', spec=socket.socket)
        connection._io = io

        connection.set_state(connection.CLOSED)

        # Create some fake channels.
        for index in range(10):
            connection._channels[index + 1] = Channel(
                index + 1, connection, 360)

        def state_set(state):
            self.assertEqual(state, connection.CLOSED)

        connection.set_state = state_set

        self.assertTrue(connection.is_closed)

        connection.close()

        # Make sure all the fake channels were closed as well.
        for index in range(10):
            self.assertNotIn(index + 1, connection._channels)

        self.assertFalse(connection._channels)
        self.assertTrue(connection.is_closed)
Esempio n. 4
0
    def test_connection_closed_on_exception(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)
        connection.exceptions.append(AMQPConnectionError('travis-ci'))

        self.assertTrue(connection.is_open)
        self.assertRaises(AMQPConnectionError, connection.check_for_errors)
        self.assertTrue(connection.is_closed)
Esempio n. 5
0
    def test_connection_fileno_property(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPENING)
        io = IO(connection.parameters, [])
        io.socket = Mock(name='socket', spec=socket.socket)
        connection._io = io
        io.socket.fileno.return_value = 5

        self.assertEqual(connection.fileno, 5)
Esempio n. 6
0
    def test_connection_wait_for_connection_does_raise_on_error(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPENING)

        connection.exceptions.append(AMQPConnectionError('travis-ci'))

        self.assertRaises(AMQPConnectionError,
                          connection._wait_for_connection_state,
                          connection.OPEN)
Esempio n. 7
0
    def test_connection_wait_for_connection_does_raise_on_error(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPENING)

        connection.exceptions.append(AMQPConnectionError('travis-ci'))

        self.assertRaises(
            AMQPConnectionError, connection._wait_for_connection_state,
            connection.OPEN, 0.1
        )
Esempio n. 8
0
    def test_connection_wait_for_connection_raises_on_timeout(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', timeout=1,
                                lazy=True)
        connection.set_state(connection.OPENING)
        io = IO(connection.parameters, [])
        io.socket = MagicMock(name='socket', spec=socket.socket)
        connection._io = io

        self.assertRaises(AMQPConnectionError,
                          connection._wait_for_connection_to_open)
    def test_connection_wait_for_connection_raises_on_timeout(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', timeout=0.1,
                                lazy=True)
        connection.set_state(connection.OPENING)
        io = IO(connection.parameters, [])
        io.socket = MagicMock(name='socket', spec=socket.socket)
        connection._io = io

        self.assertRaises(AMQPConnectionError,
                          connection._wait_for_connection_to_open)
Esempio n. 10
0
    def test_connection_open_many_channels(self):
        connection = Connection('127.0.0.1',
                                'guest',
                                'guest',
                                timeout=0.1,
                                lazy=True)
        connection.set_state(connection.OPEN)

        for index in range(MAX_CHANNELS - 1):
            self.assertEqual(int(connection.channel(lazy=True)), index + 1)
Esempio n. 11
0
    def test_connection_open_new_channel(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)

        def on_open_ok(_, frame_out):
            self.assertIsInstance(frame_out, specification.Channel.Open)
            connection._channels[1].on_frame(specification.Channel.OpenOk())

        connection.write_frame = on_open_ok

        connection.channel()
Esempio n. 12
0
    def test_connection_heartbeat_stopped_on_close(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)
        connection.heartbeat.start(connection.exceptions)
        connection.exceptions.append(AMQPConnectionError('travis-ci'))

        self.assertTrue(connection.heartbeat._running.is_set())

        self.assertRaises(AMQPConnectionError, connection.check_for_errors)

        self.assertFalse(connection.heartbeat._running.is_set())
Esempio n. 13
0
    def test_connection_maximum_channels_reached(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)

        for index in compatibility.RANGE(MAX_CHANNELS):
            channel_id = connection._get_next_available_channel_id()
            connection._channels[channel_id] = None
            self.assertEqual(connection._last_channel_id, index + 1)

        self.assertRaisesRegexp(
            AMQPConnectionError,
            'reached the maximum number of channels %d' % MAX_CHANNELS,
            connection.channel, lazy=True)
Esempio n. 14
0
    def test_connection_maximum_channels_reached(self):
        connection = Connection('127.0.0.1',
                                'guest',
                                'guest',
                                timeout=0.1,
                                lazy=True)
        connection.set_state(connection.OPEN)

        for index in range(MAX_CHANNELS - 1):
            self.assertEqual(int(connection.channel(lazy=True)), index + 1)

        self.assertRaisesRegexp(AMQPConnectionError,
                                'reached the maximum number of channels %d' %
                                MAX_CHANNELS,
                                connection.channel,
                                lazy=True)
Esempio n. 15
0
    def test_connection_wait_for_connection(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPENING)
        io = IO(connection.parameters, [])
        io.socket = Mock(name='socket', spec=socket.socket)
        connection._io = io

        self.assertFalse(connection.is_open)

        def set_state_to_open(conn):
            conn.set_state(conn.OPEN)

        threading.Timer(function=set_state_to_open,
                        interval=0.1, args=(connection,)).start()
        connection._wait_for_connection_state(connection.OPEN)

        self.assertTrue(connection.is_open)
Esempio n. 16
0
    def test_connection_avoid_conflicts_with_channel_ids(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)

        for index in compatibility.RANGE(1, 301):
            connection._channels[index] = None
        for index in compatibility.RANGE(302, 65535):
            connection._channels[index] = None

        last_channel_id = int(connection.channel(lazy=True))

        self.assertEqual(last_channel_id, 301)
        self.assertEqual(connection._last_channel_id, 301)

        last_channel_id = int(connection.channel(lazy=True))

        self.assertEqual(last_channel_id, 65535)
        self.assertEqual(connection._last_channel_id, 65535)
Esempio n. 17
0
    def test_connection_avoid_conflicts_with_channel_ids(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)

        for index in compatibility.RANGE(1, 301):
            connection._channels[index] = None
        for index in compatibility.RANGE(302, 65535):
            connection._channels[index] = None

        last_channel_id = int(connection.channel(lazy=True))

        self.assertEqual(
            last_channel_id, 301
        )
        self.assertEqual(connection._last_channel_id, 301)

        last_channel_id = int(connection.channel(lazy=True))

        self.assertEqual(
            last_channel_id, 65535
        )
        self.assertEqual(connection._last_channel_id, 65535)
Esempio n. 18
0
    def test_connection_close_old_ids_with_channel(self):
        max_channels = 1024
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection._channel0.max_allowed_channels = max_channels
        connection.set_state(connection.OPEN)

        for _ in compatibility.RANGE(max_channels):
            connection.channel(lazy=True)

        ids_to_close = [2, 8, 16, 32, 64, 128, 256, 512, 768, 1024]

        for _ in range(100):
            for index in ids_to_close:
                del connection._channels[index]

            self.assertEqual(len(connection._channels),
                             max_channels - len(ids_to_close))

            for _ in ids_to_close:
                self.assertIn(int(connection.channel(lazy=True)), ids_to_close)

            self.assertEqual(len(connection._channels), max_channels)
Esempio n. 19
0
    def test_connection_close_old_ids_with_channel(self):
        max_channels = 1024
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection._channel0.max_allowed_channels = max_channels
        connection.set_state(connection.OPEN)

        for _ in compatibility.RANGE(max_channels):
            connection.channel(lazy=True)

        ids_to_close = [2, 8, 16, 32, 64, 128, 256, 512, 768, 1024]

        for _ in range(100):
            for index in ids_to_close:
                del connection._channels[index]

            self.assertEqual(len(connection._channels),
                             max_channels - len(ids_to_close))

            for _ in ids_to_close:
                self.assertIn(
                    int(connection.channel(lazy=True)), ids_to_close
                )

            self.assertEqual(len(connection._channels), max_channels)
Esempio n. 20
0
    def test_connection_close_state(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(Connection.OPEN)
        connection.close()

        self.assertTrue(connection.is_closed)
Esempio n. 21
0
    def test_connection_open_many_channels(self):
        connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True)
        connection.set_state(connection.OPEN)

        for index in compatibility.RANGE(MAX_CHANNELS - 1):
            self.assertEqual(int(connection.channel(lazy=True)), index + 1)