Python zlib.Z_DEFAULT_COMPRESSION Examples
The following are 23
code examples of zlib.Z_DEFAULT_COMPRESSION().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
zlib
, or try the search function
.
Example #1
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_send_message(self): compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) extension = common.ExtensionParameter(common.DEFLATE_FRAME_EXTENSION) request = _create_request_from_rawdata( '', deflate_frame_request=extension) msgutil.send_message(request, 'Hello') msgutil.send_message(request, 'World') expected = '' compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] expected += '\xc1%c' % len(compressed_hello) expected += compressed_hello compressed_world = compress.compress('World') compressed_world += compress.flush(zlib.Z_SYNC_FLUSH) compressed_world = compressed_world[:-4] expected += '\xc1%c' % len(compressed_world) expected += compressed_world self.assertEqual(expected, request.connection.written_data())
Example #2
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_receive_message_deflate(self): compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] data = '\xc1%c' % (len(compressed_hello) | 0x80) data += _mask_hybi(compressed_hello) # Close frame data += '\x88\x8a' + _mask_hybi(struct.pack('!H', 1000) + 'Good bye') extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_request_from_rawdata( data, permessage_deflate_request=extension) self.assertEqual('Hello', msgutil.receive_message(request)) self.assertEqual(None, msgutil.receive_message(request))
Example #3
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_send_message_fragmented_empty_last_frame(self): extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_request_from_rawdata( '', permessage_deflate_request=extension) msgutil.send_message(request, 'Hello', end=False) msgutil.send_message(request, '') compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) expected = '\x41%c' % len(compressed_hello) expected += compressed_hello compressed_empty = compress.compress('') compressed_empty += compress.flush(zlib.Z_SYNC_FLUSH) compressed_empty = compressed_empty[:-4] expected += '\x80%c' % len(compressed_empty) expected += compressed_empty self.assertEqual(expected, request.connection.written_data())
Example #4
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_send_message_fragmented(self): extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_request_from_rawdata( '', permessage_deflate_request=extension) msgutil.send_message(request, 'Hello', end=False) msgutil.send_message(request, 'Goodbye', end=False) msgutil.send_message(request, 'World') compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) expected = '\x41%c' % len(compressed_hello) expected += compressed_hello compressed_goodbye = compress.compress('Goodbye') compressed_goodbye += compress.flush(zlib.Z_SYNC_FLUSH) expected += '\x00%c' % len(compressed_goodbye) expected += compressed_goodbye compressed_world = compress.compress('World') compressed_world += compress.flush(zlib.Z_SYNC_FLUSH) compressed_world = compressed_world[:-4] expected += '\x80%c' % len(compressed_world) expected += compressed_world self.assertEqual(expected, request.connection.written_data())
Example #5
Source File: _ncd_zlib.py From abydos with GNU General Public License v3.0 | 6 votes |
def __init__( self, level: int = zlib.Z_DEFAULT_COMPRESSION, **kwargs: Any ) -> None: """Initialize zlib compressor. Parameters ---------- level : int The compression level (0 to 9) .. versionadded:: 0.3.6 """ super().__init__(**kwargs) self._level = level
Example #6
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_send_message_no_context_takeover_parameter(self): compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) extension = common.ExtensionParameter(common.DEFLATE_FRAME_EXTENSION) extension.add_parameter('no_context_takeover', None) request = _create_request_from_rawdata( '', deflate_frame_request=extension) for i in xrange(3): msgutil.send_message(request, 'Hello') compressed_message = compress.compress('Hello') compressed_message += compress.flush(zlib.Z_SYNC_FLUSH) compressed_message = compressed_message[:-4] expected = '\xc1%c' % len(compressed_message) expected += compressed_message self.assertEqual( expected + expected + expected, request.connection.written_data())
Example #7
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_send_message_fragmented_bfinal(self): extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_request_from_rawdata( '', permessage_deflate_request=extension) self.assertEquals(1, len(request.ws_extension_processors)) request.ws_extension_processors[0].set_bfinal(True) msgutil.send_message(request, 'Hello', end=False) msgutil.send_message(request, 'World', end=True) expected = '' compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_FINISH) compressed_hello = compressed_hello + chr(0) expected += '\x41%c' % len(compressed_hello) expected += compressed_hello compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_world = compress.compress('World') compressed_world += compress.flush(zlib.Z_FINISH) compressed_world = compressed_world + chr(0) expected += '\x80%c' % len(compressed_world) expected += compressed_world self.assertEqual(expected, request.connection.written_data())
Example #8
Source File: pykeepass.py From pykeepass with GNU General Public License v3.0 | 5 votes |
def add_binary(self, data, compressed=True, protected=True): if self.version >= (4, 0): # add protected flag byte if protected: data = b'\x01' + data else: data = b'\x00' + data # add binary element to inner header c = Container(type='binary', data=data) self.kdbx.body.payload.inner_header.binary.append(c) else: binaries = self._xpath( '/KeePassFile/Meta/Binaries', first=True ) if compressed: # gzip compression compressor = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, zlib.MAX_WBITS | 16 ) data = compressor.compress(data) data += compressor.flush() data = base64.b64encode(data).decode() # set ID for Binary Element binary_id = len(self.binaries) # add binary element to XML binaries.append( E.Binary(data, ID=str(binary_id), Compressed=str(compressed)) ) # return binary id return len(self.binaries) - 1
Example #9
Source File: extensions.py From wsproto with MIT License | 5 votes |
def frame_outbound( self, proto: Union[FrameDecoder, FrameProtocol], opcode: Opcode, rsv: RsvBits, data: bytes, fin: bool, ) -> Tuple[RsvBits, bytes]: if not self._compressible_opcode(opcode): return (rsv, data) if opcode is not Opcode.CONTINUATION: rsv = RsvBits(True, *rsv[1:]) if self._compressor is None: assert opcode is not Opcode.CONTINUATION if proto.client: bits = self.client_max_window_bits else: bits = self.server_max_window_bits self._compressor = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -int(bits) ) data = self._compressor.compress(bytes(data)) if fin: data += self._compressor.flush(zlib.Z_SYNC_FLUSH) data = data[:-4] if proto.client: no_context_takeover = self.client_no_context_takeover else: no_context_takeover = self.server_no_context_takeover if no_context_takeover: self._compressor = None return (rsv, data)
Example #10
Source File: util.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self, window_bits): self._logger = get_class_logger(self) self._compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -window_bits)
Example #11
Source File: test_mux.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_permessage_deflate_fragmented_message(self): extensions = common.parse_extensions( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_mock_request( logical_channel_extensions=extensions) 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) # Send compressed 'HelloHelloHello' as fragmented message. compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('HelloHelloHello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] m = len(compressed_hello) / 2 request.connection.put_bytes( _create_logical_frame(channel_id=1, message=compressed_hello[:m], fin=False, rsv1=True, opcode=common.OPCODE_TEXT)) request.connection.put_bytes( _create_logical_frame(channel_id=1, message=compressed_hello[m:], fin=True, rsv1=False, opcode=common.OPCODE_CONTINUATION)) request.connection.put_bytes( _create_logical_frame(channel_id=1, message='Goodbye')) self.assertTrue(mux_handler.wait_until_done(timeout=2)) self.assertEqual(['HelloHelloHello'], dispatcher.channel_events[1].messages) messages = request.connection.get_written_messages(1) self.assertEqual(1, len(messages)) self.assertEqual(compressed_hello, messages[0])
Example #12
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_send_message_no_context_takeover_parameter(self): extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) extension.add_parameter('server_no_context_takeover', None) request = _create_request_from_rawdata( '', permessage_deflate_request=extension) for i in xrange(3): msgutil.send_message(request, 'Hello', end=False) msgutil.send_message(request, 'Hello', end=True) compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) first_hello = compress.compress('Hello') first_hello += compress.flush(zlib.Z_SYNC_FLUSH) expected = '\x41%c' % len(first_hello) expected += first_hello second_hello = compress.compress('Hello') second_hello += compress.flush(zlib.Z_SYNC_FLUSH) second_hello = second_hello[:-4] expected += '\x80%c' % len(second_hello) expected += second_hello self.assertEqual( expected + expected + expected, request.connection.written_data())
Example #13
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_send_message_bfinal(self): extension = common.ExtensionParameter(common.DEFLATE_FRAME_EXTENSION) request = _create_request_from_rawdata( '', deflate_frame_request=extension) self.assertEquals(1, len(request.ws_extension_processors)) deflate_frame_processor = request.ws_extension_processors[0] deflate_frame_processor.set_bfinal(True) msgutil.send_message(request, 'Hello') msgutil.send_message(request, 'World') expected = '' compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_FINISH) compressed_hello = compressed_hello + chr(0) expected += '\xc1%c' % len(compressed_hello) expected += compressed_hello compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_world = compress.compress('World') compressed_world += compress.flush(zlib.Z_FINISH) compressed_world = compressed_world + chr(0) expected += '\xc1%c' % len(compressed_world) expected += compressed_world self.assertEqual(expected, request.connection.written_data())
Example #14
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_send_message_comp_bit(self): compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) extension = common.ExtensionParameter(common.DEFLATE_FRAME_EXTENSION) request = _create_request_from_rawdata( '', deflate_frame_request=extension) self.assertEquals(1, len(request.ws_extension_processors)) deflate_frame_processor = request.ws_extension_processors[0] msgutil.send_message(request, 'Hello') deflate_frame_processor.disable_outgoing_compression() msgutil.send_message(request, 'Hello') deflate_frame_processor.enable_outgoing_compression() msgutil.send_message(request, 'Hello') expected = '' compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] expected += '\xc1%c' % len(compressed_hello) expected += compressed_hello expected += '\x81\x05Hello' compressed_2nd_hello = compress.compress('Hello') compressed_2nd_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_2nd_hello = compressed_2nd_hello[:-4] expected += '\xc1%c' % len(compressed_2nd_hello) expected += compressed_2nd_hello self.assertEqual(expected, request.connection.written_data())
Example #15
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_send_two_messages(self): extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_request_from_rawdata( '', permessage_deflate_request=extension) msgutil.send_message(request, 'Hello') msgutil.send_message(request, 'World') compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) expected = '' compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] expected += '\xc1%c' % len(compressed_hello) expected += compressed_hello compressed_world = compress.compress('World') compressed_world += compress.flush(zlib.Z_SYNC_FLUSH) compressed_world = compressed_world[:-4] expected += '\xc1%c' % len(compressed_world) expected += compressed_world self.assertEqual(expected, request.connection.written_data())
Example #16
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_send_message(self): extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_request_from_rawdata( '', permessage_deflate_request=extension) msgutil.send_message(request, 'Hello') compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] expected = '\xc1%c' % len(compressed_hello) expected += compressed_hello self.assertEqual(expected, request.connection.written_data())
Example #17
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_receive_message_various_btype(self): compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) data = '' compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] data += '\xc1%c' % (len(compressed_hello) | 0x80) data += _mask_hybi(compressed_hello) compressed_websocket = compress.compress('WebSocket') compressed_websocket += compress.flush(zlib.Z_FINISH) compressed_websocket += '\x00' data += '\xc1%c' % (len(compressed_websocket) | 0x80) data += _mask_hybi(compressed_websocket) compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_world = compress.compress('World') compressed_world += compress.flush(zlib.Z_SYNC_FLUSH) compressed_world = compressed_world[:-4] data += '\xc1%c' % (len(compressed_world) | 0x80) data += _mask_hybi(compressed_world) # Close frame data += '\x88\x8a' + _mask_hybi(struct.pack('!H', 1000) + 'Good bye') extension = common.ExtensionParameter(common.DEFLATE_FRAME_EXTENSION) request = _create_request_from_rawdata( data, deflate_frame_request=extension) self.assertEqual('Hello', msgutil.receive_message(request)) self.assertEqual('WebSocket', msgutil.receive_message(request)) self.assertEqual('World', msgutil.receive_message(request)) self.assertEqual(None, msgutil.receive_message(request))
Example #18
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_receive_message_comp_bit(self): compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) data = '' compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] data += '\xc1%c' % (len(compressed_hello) | 0x80) data += _mask_hybi(compressed_hello) data += '\x81\x85' + _mask_hybi('Hello') compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_2nd_hello = compress.compress('Hello') compressed_2nd_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_2nd_hello = compressed_2nd_hello[:-4] data += '\xc1%c' % (len(compressed_2nd_hello) | 0x80) data += _mask_hybi(compressed_2nd_hello) extension = common.ExtensionParameter(common.DEFLATE_FRAME_EXTENSION) request = _create_request_from_rawdata( data, deflate_frame_request=extension) for i in xrange(3): self.assertEqual('Hello', msgutil.receive_message(request))
Example #19
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_receive_message(self): compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) data = '' compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] data += '\xc1%c' % (len(compressed_hello) | 0x80) data += _mask_hybi(compressed_hello) compressed_websocket = compress.compress('WebSocket') compressed_websocket += compress.flush(zlib.Z_FINISH) compressed_websocket += '\x00' data += '\xc1%c' % (len(compressed_websocket) | 0x80) data += _mask_hybi(compressed_websocket) compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_world = compress.compress('World') compressed_world += compress.flush(zlib.Z_SYNC_FLUSH) compressed_world = compressed_world[:-4] data += '\xc1%c' % (len(compressed_world) | 0x80) data += _mask_hybi(compressed_world) # Close frame data += '\x88\x8a' + _mask_hybi(struct.pack('!H', 1000) + 'Good bye') extension = common.ExtensionParameter(common.DEFLATE_FRAME_EXTENSION) request = _create_request_from_rawdata( data, deflate_frame_request=extension) self.assertEqual('Hello', msgutil.receive_message(request)) self.assertEqual('WebSocket', msgutil.receive_message(request)) self.assertEqual('World', msgutil.receive_message(request)) self.assertEqual(None, msgutil.receive_message(request))
Example #20
Source File: test_msgutil.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 4 votes |
def test_receive_message_random_section(self): """Test that a compressed message fragmented into lots of chunks is correctly received. """ random.seed(a=0) payload = ''.join( [chr(random.randint(0, 255)) for i in xrange(1000)]) compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_payload = compress.compress(payload) compressed_payload += compress.flush(zlib.Z_SYNC_FLUSH) compressed_payload = compressed_payload[:-4] # Fragment the compressed payload into lots of frames. bytes_chunked = 0 data = '' frame_count = 0 chunk_sizes = [] while bytes_chunked < len(compressed_payload): # Make sure that # - the length of chunks are equal or less than 125 so that we can # use 1 octet length header format for all frames. # - at least 10 chunks are created. chunk_size = random.randint( 1, min(125, len(compressed_payload) / 10, len(compressed_payload) - bytes_chunked)) chunk_sizes.append(chunk_size) chunk = compressed_payload[ bytes_chunked:bytes_chunked + chunk_size] bytes_chunked += chunk_size first_octet = 0x00 if len(data) == 0: first_octet = first_octet | 0x42 if bytes_chunked == len(compressed_payload): first_octet = first_octet | 0x80 data += '%c%c' % (first_octet, chunk_size | 0x80) data += _mask_hybi(chunk) frame_count += 1 print "Chunk sizes: %r" % chunk_sizes self.assertTrue(len(chunk_sizes) > 10) # Close frame data += '\x88\x8a' + _mask_hybi(struct.pack('!H', 1000) + 'Good bye') extension = common.ExtensionParameter( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_request_from_rawdata( data, permessage_deflate_request=extension) self.assertEqual(payload, msgutil.receive_message(request)) self.assertEqual(None, msgutil.receive_message(request))
Example #21
Source File: test_mux.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 4 votes |
def test_add_channel_delta_encoding_permessage_deflate(self): # Enable permessage deflate extension on the implicitly opened channel. extensions = common.parse_extensions( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_mock_request( logical_channel_extensions=extensions) 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) delta = 'GET /echo HTTP/1.1\r\n\r\n' add_channel_request = _create_add_channel_request_frame( channel_id=2, encoding=1, encoded_handshake=delta) request.connection.put_bytes(add_channel_request) flow_control = _create_flow_control_frame(channel_id=2, replenished_quota=20) request.connection.put_bytes(flow_control) # Send compressed 'Hello' on logical channel 1 and 2. compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] request.connection.put_bytes( _create_logical_frame(channel_id=1, message=compressed_hello, rsv1=True)) request.connection.put_bytes( _create_logical_frame(channel_id=2, message=compressed_hello, rsv1=True)) request.connection.put_bytes( _create_logical_frame(channel_id=1, message='Goodbye')) request.connection.put_bytes( _create_logical_frame(channel_id=2, message='Goodbye')) self.assertTrue(mux_handler.wait_until_done(timeout=2)) self.assertEqual(['Hello'], dispatcher.channel_events[1].messages) self.assertEqual(['Hello'], dispatcher.channel_events[2].messages) # Written 'Hello's should be compressed. messages = request.connection.get_written_messages(1) self.assertEqual(1, len(messages)) self.assertEqual(compressed_hello, messages[0]) messages = request.connection.get_written_messages(2) self.assertEqual(1, len(messages)) self.assertEqual(compressed_hello, messages[0])
Example #22
Source File: test_mux.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 4 votes |
def test_add_channel_delta_encoding_remove_extensions(self): # Enable permessage deflate extension on the implicitly opened channel. extensions = common.parse_extensions( common.PERMESSAGE_DEFLATE_EXTENSION) request = _create_mock_request( logical_channel_extensions=extensions) 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) # Remove permessage deflate extension. delta = ('GET /echo HTTP/1.1\r\n' 'Sec-WebSocket-Extensions:\r\n' '\r\n') add_channel_request = _create_add_channel_request_frame( channel_id=2, encoding=1, encoded_handshake=delta) request.connection.put_bytes(add_channel_request) flow_control = _create_flow_control_frame(channel_id=2, replenished_quota=20) request.connection.put_bytes(flow_control) # Send compressed message on logical channel 2. The message should # be rejected (since rsv1 is set). compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello = compress.compress('Hello') compressed_hello += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello = compressed_hello[:-4] request.connection.put_bytes( _create_logical_frame(channel_id=2, message=compressed_hello, rsv1=True)) request.connection.put_bytes( _create_logical_frame(channel_id=1, message='Goodbye')) self.assertTrue(mux_handler.wait_until_done(timeout=2)) drop_channel = next( b for b in request.connection.get_written_control_blocks() if b.opcode == mux._MUX_OPCODE_DROP_CHANNEL) self.assertEqual(mux._DROP_CODE_NORMAL_CLOSURE, drop_channel.drop_code) self.assertEqual(2, drop_channel.channel_id) # UnsupportedFrameException should be raised on logical channel 2. self.assertTrue(isinstance(dispatcher.channel_events[2].exception, UnsupportedFrameException))
Example #23
Source File: test_mux.py From pywebsocket with BSD 3-Clause "New" or "Revised" License | 4 votes |
def test_permessage_deflate(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) # Enable permessage deflate extension on logical channel 2. extensions = common.PERMESSAGE_DEFLATE_EXTENSION encoded_handshake = _create_request_header(path='/echo', extensions=extensions) add_channel_request = _create_add_channel_request_frame( channel_id=2, encoding=0, encoded_handshake=encoded_handshake) request.connection.put_bytes(add_channel_request) flow_control = _create_flow_control_frame(channel_id=2, replenished_quota=20) request.connection.put_bytes(flow_control) # Send compressed 'Hello' twice. compress = zlib.compressobj( zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -zlib.MAX_WBITS) compressed_hello1 = compress.compress('Hello') compressed_hello1 += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello1 = compressed_hello1[:-4] request.connection.put_bytes( _create_logical_frame(channel_id=2, message=compressed_hello1, rsv1=True)) compressed_hello2 = compress.compress('Hello') compressed_hello2 += compress.flush(zlib.Z_SYNC_FLUSH) compressed_hello2 = compressed_hello2[:-4] request.connection.put_bytes( _create_logical_frame(channel_id=2, message=compressed_hello2, rsv1=True)) request.connection.put_bytes( _create_logical_frame(channel_id=1, message='Goodbye')) request.connection.put_bytes( _create_logical_frame(channel_id=2, message='Goodbye')) self.assertTrue(mux_handler.wait_until_done(timeout=2)) self.assertEqual(['Hello', 'Hello'], dispatcher.channel_events[2].messages) # Written 'Hello's should be compressed. messages = request.connection.get_written_messages(2) self.assertEqual(2, len(messages)) self.assertEqual(compressed_hello1, messages[0]) self.assertEqual(compressed_hello2, messages[1])