# build/update the virtualenvs
tox
-.tox/py27/bin/python server.py --port=9001 &
+.tox/py25/bin/python server.py --port=9001 &
+PY25_SERVER_PID=$!
+
+.tox/py27/bin/python server.py --port=9002 &
PY27_SERVER_PID=$!
-.tox/py32/bin/python server.py --port=9002 &
+.tox/py32/bin/python server.py --port=9003 &
PY32_SERVER_PID=$!
sleep 1
-.tox/py27/bin/python ./client.py --servers=Tornado/py27=ws://localhost:9001,Tornado/py32=ws://localhost:9002 "$@"
+.tox/py27/bin/python ./client.py --servers=Tornado/py25=ws://localhost:9001,Tornado/py27=ws://localhost:9002,Tornado/py32=ws://localhost:9003 "$@"
+kill $PY25_SERVER_PID
kill $PY27_SERVER_PID
kill $PY32_SERVER_PID
+wait
+
+echo "Tests complete. Output is in ./reports/servers/index.html"
\ No newline at end of file
# to install autobahn and deal with 2to3 for the python3 version.
# See run.sh for the real test runner.
[tox]
-envlist = py27, py32
+envlist = py27, py32, py25
setupdir=../../..
[testenv]
"""
# Author: Jacob Kristhammar, 2010
+import array
import functools
import hashlib
import logging
self.stream.read_bytes(4, self._on_masking_key);
def _on_masking_key(self, data):
- self._frame_mask = bytearray(data)
+ self._frame_mask = array.array("B", data)
self.stream.read_bytes(self._frame_length, self._on_frame_data)
def _on_frame_data(self, data):
- unmasked = bytearray(data)
+ unmasked = array.array("B", data)
for i in xrange(len(data)):
unmasked[i] = unmasked[i] ^ self._frame_mask[i % 4]
self._fragmented_message_buffer = unmasked
if self._final_frame:
- self._handle_message(opcode, bytes_type(unmasked))
+ self._handle_message(opcode, unmasked.tostring())
if not self.client_terminated:
self._receive_frame()