Debug missed emit

This commit is contained in:
Roy Hyunjin Han 2015-02-22 19:55:31 -05:00
commit 4fa6dcbe8d
3 changed files with 38 additions and 9 deletions

View file

@ -50,9 +50,11 @@ class EngineIO(LoggingMixin):
except AttributeError:
pass
self._engineIO_session = self._get_engineIO_session()
self._negotiate_transport()
self._transport_instance = self._negotiate_transport()
self._connect_namespaces()
self._connected = True
for engineIO_packet in self._transport_instance.recv_packet():
self._transport_instance.queue_packet(engineIO_packet)
self._reset_heartbeat()
return self._transport_instance
@ -74,9 +76,8 @@ class EngineIO(LoggingMixin):
return parse_engineIO_session(engineIO_packet_data)
def _negotiate_transport(self):
transport_name = 'xhr-polling'
self._transport_instance = self._get_transport(transport_name)
self._transport_name = transport_name
self._transport_name = 'xhr-polling'
return self._get_transport(self._transport_name)
def _reset_heartbeat(self):
try:
@ -158,6 +159,7 @@ class EngineIO(LoggingMixin):
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
def _message(self, engineIO_packet_data):
print('_message %s' % str(engineIO_packet_data))
engineIO_packet_type = 4
self._transport.send_packet(engineIO_packet_type, engineIO_packet_data)
@ -208,6 +210,7 @@ class EngineIO(LoggingMixin):
def _process_packet(self, packet):
engineIO_packet_type, engineIO_packet_data = packet
print 'engineIO_packet_data=%s' % engineIO_packet_data
# Launch callbacks
namespace = self.get_namespace()
try:
@ -224,6 +227,8 @@ class EngineIO(LoggingMixin):
raise PacketError(
'unexpected engine.io packet type (%s)' % engineIO_packet_type)
delegate(engineIO_packet_data, namespace._find_packet_callback)
print '*** in engine.io, engineIO_packet_type=%s' % engineIO_packet_type
print '*** in engine.io, engineIO_packet_data=%s' % engineIO_packet_data
if engineIO_packet_type is 4:
return engineIO_packet_data
@ -339,12 +344,19 @@ class SocketIO(EngineIO):
pass
def emit(self, event, *args, **kw):
print 'z1'
path = kw.get('path', '')
print 'z2'
callback, args = find_callback(args, kw)
print 'z3'
ack_id = self._set_ack_callback(callback) if callback else None
print 'z4'
socketIO_packet_type = 2
print 'z5'
socketIO_packet_data = format_socketIO_packet_data(path, ack_id, args)
print 'z6'
self._message(str(socketIO_packet_type) + socketIO_packet_data)
print 'z7'
def send(self, data='', callback=None):
args = [data]
@ -372,6 +384,7 @@ class SocketIO(EngineIO):
def _process_packet(self, packet):
engineIO_packet_data = super(SocketIO, self)._process_packet(packet)
print '*** in socket.io, engineIO_packet_data=%s' % engineIO_packet_data
if engineIO_packet_data is None:
return
socketIO_packet_type = int(get_character(engineIO_packet_data, 0))

View file

@ -39,7 +39,9 @@ class BaseMixin(object):
def test_emit(self):
'Emit'
namespace = self.socketIO.define(Namespace)
print 'a'
self.socketIO.emit('emit')
print 'b'
self.socketIO.wait(self.wait_time_in_seconds)
self.assertEqual(namespace.args_by_event, {
'emit_response': (),
@ -169,21 +171,26 @@ class Test_XHR_PollingTransport(BaseMixin, TestCase):
class Namespace(LoggingNamespace):
def initialize(self):
print('xxx initialize')
self.called_on_disconnect = False
self.args_by_event = {}
self.response = None
def on_disconnect(self):
print('xxx on_disconnect')
self.called_on_disconnect = True
def on_wait_with_disconnect_response(self):
print('xxx on_wait_with_disconnect_response')
self.disconnect()
def on_event(self, event, *args):
print('xxx on_event')
callback, args = find_callback(args)
if callback:
callback(*args)
self.args_by_event[event] = args
def on_message(self, data):
print('xxx on_message')
self.response = data

View file

@ -16,13 +16,19 @@ class AbstractTransport(object):
self.is_secure = is_secure
self.url = url
self.engineIO_session = engineIO_session
self.engineIO_packets = []
def recv_packet(self):
pass
while self.engineIO_packets:
yield self.engineIO_packets.pop(0)
def send_packet(self, engineIO_packet_type, engineIO_packet_data):
pass
def queue_packet(self, engineIO_packet):
print 'queue_packet %s' % str(engineIO_packet)
self.engineIO_packets.append(engineIO_packet)
class XHR_PollingTransport(AbstractTransport):
@ -47,18 +53,21 @@ class XHR_PollingTransport(AbstractTransport):
self.kw_post = {}
def recv_packet(self):
for engineIO_packet in super(XHR_PollingTransport, self).recv_packet():
yield engineIO_packet
params = dict(self.params)
params['t'] = self.get_timestamp()
params['t'] = self._get_timestamp()
response = get_response(
self.http_session.get,
self.http_url,
params=params,
**self.kw_get)
return decode_engineIO_content(response.content)
for engineIO_packet in decode_engineIO_content(response.content):
yield engineIO_packet
def send_packet(self, engineIO_packet_type, engineIO_packet_data):
params = dict(self.params)
params['t'] = self.get_timestamp()
params['t'] = self._get_timestamp()
response = get_response(
self.http_session.post,
self.http_url,
@ -69,7 +78,7 @@ class XHR_PollingTransport(AbstractTransport):
**self.kw_post)
assert response.content == 'ok'
def get_timestamp(self):
def _get_timestamp(self):
timestamp = '%s-%s' % (int(time.time() * 1000), self.request_index)
self.request_index += 1
return timestamp