def test_drop_channel(self): data = mux._create_drop_channel(channel_id=1, reason='', mux_error=False) self.assertEqual('\x82\x04\x00\x60\x01\x00', data) data = mux._create_drop_channel(channel_id=1, reason='error', mux_error=True) self.assertEqual('\x82\x09\x00\x70\x01\x05error', data) # reason must be empty if mux_error is False. self.assertRaises(ValueError, mux._create_drop_channel, 1, 'FooBar', False)
def test_receive_drop_channel(self): request = _create_mock_request() dispatcher = _MuxMockDispatcher() mux_handler = mux._MuxHandler(request, dispatcher) mux_handler.start() mux_handler.add_channel_slots(mux._INITIAL_NUMBER_OF_CHANNEL_SLOTS, mux._INITIAL_QUOTA_FOR_CLIENT) encoded_handshake = _create_request_header(path='/echo') add_channel_request = _create_add_channel_request_frame( channel_id=2, encoding=0, encoded_handshake=encoded_handshake) request.connection.put_bytes(add_channel_request) drop_channel = mux._create_drop_channel(channel_id=2, outer_frame_mask=True) request.connection.put_bytes(drop_channel) # Terminate implicitly opened channel. request.connection.put_bytes( _create_logical_frame(channel_id=1, message='Goodbye')) mux_handler.wait_until_done(timeout=2) exception = dispatcher.channel_events[2].exception self.assertTrue(exception.__class__ == ConnectionTerminatedException)