Commit 9ff17d49 authored by Keita Suzuki's avatar Keita Suzuki Committed by Commit Bot

Update blink web_tests to use pywebsocket3

This commit updates blink web_tests to use pywebsocket3. It updates
blinkpy/server/pywebsocket to import pywebsocket3 for its path.

This commit also fixes the websocket handlers in web_tests. It update
the handlers to use pywebsocket3 functions instead of old ones, and also
updates the websocket handlers that use chr() to generate bytes string,
to use util.pack_byte(), since chr() does not generate bytes in
python 3.

Change-Id: I2fbc365571b2ca0ee947355a2f95700350675fb6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2059705Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarYutaka Hirano <yhirano@chromium.org>
Reviewed-by: default avatarAdam Rice <ricea@chromium.org>
Reviewed-by: default avatarRobert Ma <robertma@chromium.org>
Commit-Queue: Keita Suzuki <suzukikeita@google.com>
Cr-Commit-Position: refs/heads/master@{#748556}
parent 4b9d9fc6
...@@ -1006,6 +1006,7 @@ if (!is_ios) { ...@@ -1006,6 +1006,7 @@ if (!is_ios) {
"//third_party/blink/web_tests/VirtualTestSuites", "//third_party/blink/web_tests/VirtualTestSuites",
"//third_party/blink/web_tests/WebDriverExpectations", "//third_party/blink/web_tests/WebDriverExpectations",
"//third_party/pywebsocket/src/mod_pywebsocket/", "//third_party/pywebsocket/src/mod_pywebsocket/",
"//third_party/pywebsocket3/src/mod_pywebsocket/",
] ]
data_deps = [ data_deps = [
"//chrome:chrome", "//chrome:chrome",
...@@ -1121,6 +1122,7 @@ if (!is_ios) { ...@@ -1121,6 +1122,7 @@ if (!is_ios) {
"//third_party/blink/tools/", "//third_party/blink/tools/",
"//third_party/blink/web_tests/", "//third_party/blink/web_tests/",
"//third_party/pywebsocket/src/mod_pywebsocket/", "//third_party/pywebsocket/src/mod_pywebsocket/",
"//third_party/pywebsocket3/src/mod_pywebsocket/",
] ]
if (is_win) { if (is_win) {
......
...@@ -48,7 +48,7 @@ test("gcp_unittests") { ...@@ -48,7 +48,7 @@ test("gcp_unittests") {
data = [ data = [
"//net/tools/testserver/", "//net/tools/testserver/",
"//third_party/pywebsocket/src/mod_pywebsocket/", "//third_party/pywebsocket3/src/mod_pywebsocket/",
"//third_party/tlslite/", "//third_party/tlslite/",
] ]
} }
...@@ -56,7 +56,7 @@ class PyWebSocket(server_base.ServerBase): ...@@ -56,7 +56,7 @@ class PyWebSocket(server_base.ServerBase):
time_str = time.strftime('%d%b%Y-%H%M%S') time_str = time.strftime('%d%b%Y-%H%M%S')
log_file_name = _WS_LOG_PREFIX + time_str log_file_name = _WS_LOG_PREFIX + time_str
self._error_log = self._filesystem.join(self._output_dir, log_file_name + '-err.txt') self._error_log = self._filesystem.join(self._output_dir, log_file_name + '-err.txt')
pywebsocket_base = PathFinder(self._filesystem).path_from_chromium_base('third_party', 'pywebsocket', 'src') pywebsocket_base = PathFinder(self._filesystem).path_from_chromium_base('third_party', 'pywebsocket3', 'src')
pywebsocket_script = self._filesystem.join(pywebsocket_base, 'mod_pywebsocket', 'standalone.py') pywebsocket_script = self._filesystem.join(pywebsocket_base, 'mod_pywebsocket', 'standalone.py')
self._start_cmd = [ self._start_cmd = [
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request): ...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request):
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'\xa5:\r\n' b'\xa5:\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(msg) request.connection.write(msg)
......
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import stream from mod_pywebsocket import stream
from mod_pywebsocket import util
from six.moves import range
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -7,7 +9,7 @@ def web_socket_do_extra_handshake(request): ...@@ -7,7 +9,7 @@ def web_socket_do_extra_handshake(request):
def web_socket_transfer_data(request): def web_socket_transfer_data(request):
messages_to_send = ['Hello, world!', '', all_distinct_bytes()] messages_to_send = [b'Hello, world!', b'', all_distinct_bytes()]
for message in messages_to_send: for message in messages_to_send:
# FIXME: Should use better API to send binary messages when pywebsocket # FIXME: Should use better API to send binary messages when pywebsocket
# supports it. # supports it.
...@@ -17,4 +19,4 @@ def web_socket_transfer_data(request): ...@@ -17,4 +19,4 @@ def web_socket_transfer_data(request):
def all_distinct_bytes(): def all_distinct_bytes():
return ''.join([chr(i) for i in xrange(256)]) return b''.join([util.pack_byte(i) for i in range(256)])
import six
from six.moves import range
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import msgutil from mod_pywebsocket import msgutil
from mod_pywebsocket import util
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -7,11 +11,11 @@ def web_socket_do_extra_handshake(request): ...@@ -7,11 +11,11 @@ def web_socket_do_extra_handshake(request):
def web_socket_transfer_data(request): def web_socket_transfer_data(request):
expected_messages = ['Hello, world!', '', all_distinct_bytes()] expected_messages = [b'Hello, world!', b'', all_distinct_bytes()]
for test_number, expected_message in enumerate(expected_messages): for test_number, expected_message in enumerate(expected_messages):
message = msgutil.receive_message(request) message = msgutil.receive_message(request)
if type(message) == str and message == expected_message: if type(message) == six.binary_type and message == expected_message:
msgutil.send_message(request, 'PASS: Message #%d.' % test_number) msgutil.send_message(request, 'PASS: Message #%d.' % test_number)
else: else:
msgutil.send_message( msgutil.send_message(
...@@ -20,4 +24,4 @@ def web_socket_transfer_data(request): ...@@ -20,4 +24,4 @@ def web_socket_transfer_data(request):
def all_distinct_bytes(): def all_distinct_bytes():
return ''.join([chr(i) for i in xrange(256)]) return b''.join([util.pack_byte(i) for i in range(256)])
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -11,7 +11,7 @@ def web_socket_do_extra_handshake(request): ...@@ -11,7 +11,7 @@ def web_socket_do_extra_handshake(request):
b'foo: hoge\r\n' b'foo: hoge\r\n'
b'FOO: FUGA\r\n' b'FOO: FUGA\r\n'
b'xxx: yyy\r\n' b'xxx: yyy\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(message) request.connection.write(message)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
......
from six.moves import range
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import stream from mod_pywebsocket import stream
from mod_pywebsocket import util
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -8,10 +11,8 @@ def web_socket_do_extra_handshake(request): ...@@ -8,10 +11,8 @@ def web_socket_do_extra_handshake(request):
def web_socket_transfer_data(request): def web_socket_transfer_data(request):
# pyformat: disable # pyformat: disable
messages_to_send = [['Hello, ', 'world!'], messages_to_send = [[b'Hello, ', b'world!'], [b'', b'Hello, ', b'', b'world!', b''], [b'', b'', b''],
['', 'Hello, ', '', 'world!', ''], [util.pack_byte(i) for i in range(256)]]
['', '', ''],
[chr(i) for i in xrange(256)]]
# pyformat: enable # pyformat: enable
for message_list in messages_to_send: for message_list in messages_to_send:
for index, message in enumerate(message_list): for index, message in enumerate(message_list):
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request): ...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request):
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'Sec-WebSocket-Extensions: x-foo\r\n' b'Sec-WebSocket-Extensions: x-foo\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(message) request.connection.write(message)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -31,7 +31,7 @@ def web_socket_do_extra_handshake(request): ...@@ -31,7 +31,7 @@ def web_socket_do_extra_handshake(request):
b'Upgrade: websocket\r\n' b'Upgrade: websocket\r\n'
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'\r\n') % (b'.' * 1024, compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0]) b'\r\n') % (b'.' * 1024, compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key']))
request.connection.write(msg) request.connection.write(msg)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request): ...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request):
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'Sec-WebSocket-Protocol: MismatchProtocol\r\n' b'Sec-WebSocket-Protocol: MismatchProtocol\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(msg) request.connection.write(msg)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request): ...@@ -8,7 +8,7 @@ def web_socket_do_extra_handshake(request):
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'Sec-WebSocket-Accept: XXXXthisiswrongXXXX\r\n' b'Sec-WebSocket-Accept: XXXXthisiswrongXXXX\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(msg) request.connection.write(msg)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -9,7 +9,7 @@ def web_socket_do_extra_handshake(request): ...@@ -9,7 +9,7 @@ def web_socket_do_extra_handshake(request):
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'Sec-WebSocket-Protocol: MatchProtocol\r\n' b'Sec-WebSocket-Protocol: MatchProtocol\r\n'
b'Sec-WebSocket-Protocol: MismatchProtocol\r\n' b'Sec-WebSocket-Protocol: MismatchProtocol\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(msg) request.connection.write(msg)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
raise handshake.AbortedByUserException('Abort the connection') raise handshake.AbortedByUserException('Abort the connection')
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -7,7 +7,7 @@ def web_socket_do_extra_handshake(request): ...@@ -7,7 +7,7 @@ def web_socket_do_extra_handshake(request):
msg = (b'HTTP/1.1 101 Switching Protocols\r\n' msg = (b'HTTP/1.1 101 Switching Protocols\r\n'
b'Upgrade: websocket\r\n' b'Upgrade: websocket\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(msg) request.connection.write(msg)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
raise handshake.AbortedByUserException('Abort the connection') raise handshake.AbortedByUserException('Abort the connection')
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -7,7 +7,7 @@ def web_socket_do_extra_handshake(request): ...@@ -7,7 +7,7 @@ def web_socket_do_extra_handshake(request):
msg = (b'HTTP/1.1 101 Switching Protocols\r\n' msg = (b'HTTP/1.1 101 Switching Protocols\r\n'
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(msg) request.connection.write(msg)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
raise handshake.AbortedByUserException('Abort the connection') raise handshake.AbortedByUserException('Abort the connection')
......
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -7,7 +7,7 @@ def web_socket_do_extra_handshake(request): ...@@ -7,7 +7,7 @@ def web_socket_do_extra_handshake(request):
b'Upgrade: websocket\r\n' b'Upgrade: websocket\r\n'
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(message) request.connection.write(message)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
raise handshake.AbortedByUserException('Abort the connection') raise handshake.AbortedByUserException('Abort the connection')
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
from __future__ import division from __future__ import division
import time import time
from mod_pywebsocket import stream from mod_pywebsocket import stream
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -38,7 +38,7 @@ def web_socket_do_extra_handshake(request): ...@@ -38,7 +38,7 @@ def web_socket_do_extra_handshake(request):
b'Upgrade: websocket\r\n' b'Upgrade: websocket\r\n'
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'\r\n') % compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0] b'\r\n') % compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key'])
request.connection.write(msg) request.connection.write(msg)
# continue writing data until the client disconnects # continue writing data until the client disconnects
while True: while True:
......
import re import re
import struct import struct
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import msgutil
from mod_pywebsocket import util
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -20,9 +22,9 @@ def web_socket_transfer_data(request): ...@@ -20,9 +22,9 @@ def web_socket_transfer_data(request):
# pywebsocket refuses to create a frame with error encode length. # pywebsocket refuses to create a frame with error encode length.
# Thus, we need to build a frame manually. # Thus, we need to build a frame manually.
header = chr(0x80 | common.OPCODE_TEXT) # 0x80 is for "fin" bit. header = util.pack_byte(0x80 | common.OPCODE_TEXT) # 0x80 is for "fin" bit.
# No Mask and two bytes extended payload length. # No Mask and two bytes extended payload length.
header += chr(payload_length) header += util.pack_byte(payload_length)
if payload_length == 126: if payload_length == 126:
header += struct.pack('!H', extended_length) header += struct.pack('!H', extended_length)
elif payload_length == 127: elif payload_length == 127:
...@@ -32,4 +34,4 @@ def web_socket_transfer_data(request): ...@@ -32,4 +34,4 @@ def web_socket_transfer_data(request):
'FAIL: Query value is incorrect or missing') 'FAIL: Query value is incorrect or missing')
return return
request.connection.write(header) request.connection.write(header)
request.connection.write('X' * extended_length) request.connection.write(b'X' * extended_length)
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
from six.moves.urllib import parse from six.moves.urllib import parse
from mod_pywebsocket import handshake from mod_pywebsocket import handshake
from mod_pywebsocket.handshake.hybi import compute_accept from mod_pywebsocket.handshake.hybi import compute_accept_from_unicode
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -43,7 +43,7 @@ def web_socket_do_extra_handshake(request): ...@@ -43,7 +43,7 @@ def web_socket_do_extra_handshake(request):
b'Connection: Upgrade\r\n' b'Connection: Upgrade\r\n'
b'Sec-WebSocket-Accept: %s\r\n' b'Sec-WebSocket-Accept: %s\r\n'
b'Sec-WebSocket-Extensions: permessage-deflate' b'Sec-WebSocket-Extensions: permessage-deflate'
b'%s\r\n') % (compute_accept(request.headers_in['Sec-WebSocket-Key'].encode('UTF-8'))[0], message_parameters) b'%s\r\n') % (compute_accept_from_unicode(request.headers_in['Sec-WebSocket-Key']), message_parameters)
request.connection.write(message) request.connection.write(message)
# Prevents pywebsocket from sending its own handshake message. # Prevents pywebsocket from sending its own handshake message.
......
from six.moves import range
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import msgutil from mod_pywebsocket import msgutil
from mod_pywebsocket import util
def _retrieve_frame(stream): def _retrieve_frame(stream):
...@@ -17,7 +20,7 @@ def web_socket_do_extra_handshake(request): ...@@ -17,7 +20,7 @@ def web_socket_do_extra_handshake(request):
def web_socket_transfer_data(request): def web_socket_transfer_data(request):
expected_messages = ['Hello, world!'] expected_messages = [b'Hello, world!']
for test_number, expected_message in enumerate(expected_messages): for test_number, expected_message in enumerate(expected_messages):
frame = _retrieve_frame(request.ws_stream) frame = _retrieve_frame(request.ws_stream)
...@@ -33,4 +36,4 @@ def web_socket_transfer_data(request): ...@@ -33,4 +36,4 @@ def web_socket_transfer_data(request):
def all_distinct_bytes(): def all_distinct_bytes():
return ''.join([chr(i) for i in xrange(256)]) return b''.join([util.pack_byte(i) for i in range(256)])
import struct import struct
import time import time
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import util
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -12,13 +13,13 @@ def web_socket_transfer_data(request): ...@@ -12,13 +13,13 @@ def web_socket_transfer_data(request):
# pywebsocket refuses to send a frame with too long payload. # pywebsocket refuses to send a frame with too long payload.
# Thus, we need to build a frame manually. # Thus, we need to build a frame manually.
header = chr(0x80 | common.OPCODE_TEXT) # 0x80 is for "fin" bit. header = util.pack_byte(0x80 | common.OPCODE_TEXT) # 0x80 is for "fin" bit.
header += chr(127) header += util.pack_byte(127)
header += struct.pack('!Q', length) header += struct.pack('!Q', length)
request.connection.write(header) request.connection.write(header)
# Send data indefinitely to simulate a real (broken) server sending a big # Send data indefinitely to simulate a real (broken) server sending a big
# frame. A client should ignore these bytes and abort the connection. # frame. A client should ignore these bytes and abort the connection.
while True: while True:
request.connection.write('X' * 4096) request.connection.write(b'X' * 4096)
time.sleep(1) time.sleep(1)
from six.moves import range
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import stream from mod_pywebsocket import stream
from mod_pywebsocket import util
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -7,7 +10,7 @@ def web_socket_do_extra_handshake(request): ...@@ -7,7 +10,7 @@ def web_socket_do_extra_handshake(request):
def web_socket_transfer_data(request): def web_socket_transfer_data(request):
messages_to_send = ['Hello, world!', '', all_distinct_bytes()] messages_to_send = [b'Hello, world!', b'', all_distinct_bytes()]
for message in messages_to_send: for message in messages_to_send:
# FIXME: Should use better API to send binary messages when pywebsocket # FIXME: Should use better API to send binary messages when pywebsocket
# supports it. # supports it.
...@@ -17,4 +20,4 @@ def web_socket_transfer_data(request): ...@@ -17,4 +20,4 @@ def web_socket_transfer_data(request):
def all_distinct_bytes(): def all_distinct_bytes():
return ''.join([chr(i) for i in xrange(256)]) return b''.join([util.pack_byte(i) for i in range(256)])
import six
from six.moves import range
from mod_pywebsocket import common from mod_pywebsocket import common
from mod_pywebsocket import msgutil from mod_pywebsocket import msgutil
from mod_pywebsocket import util
def web_socket_do_extra_handshake(request): def web_socket_do_extra_handshake(request):
...@@ -7,11 +11,11 @@ def web_socket_do_extra_handshake(request): ...@@ -7,11 +11,11 @@ def web_socket_do_extra_handshake(request):
def web_socket_transfer_data(request): def web_socket_transfer_data(request):
expected_messages = ['Hello, world!', '', all_distinct_bytes()] expected_messages = [b'Hello, world!', b'', all_distinct_bytes()]
for test_number, expected_message in enumerate(expected_messages): for test_number, expected_message in enumerate(expected_messages):
message = msgutil.receive_message(request) message = msgutil.receive_message(request)
if type(message) == str and message == expected_message: if isinstance(message, six.binary_type) and message == expected_message:
msgutil.send_message(request, 'PASS: Message #%d.' % test_number) msgutil.send_message(request, 'PASS: Message #%d.' % test_number)
else: else:
msgutil.send_message( msgutil.send_message(
...@@ -20,4 +24,4 @@ def web_socket_transfer_data(request): ...@@ -20,4 +24,4 @@ def web_socket_transfer_data(request):
def all_distinct_bytes(): def all_distinct_bytes():
return ''.join([chr(i) for i in xrange(256)]) return b''.join([util.pack_byte(i) for i in range(256)])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment