def test_extract_frame_multi(self): """ Test the handling of multiple concatenated messages by the buffer. """ m1 = b'CONNECT\nsession:207567f3-cce7-4a0a-930b-46fc394dd53d\n\n0123456789\x00' m2 = b'SUBSCRIBE\nack:auto\ndestination:/queue/test\n\n\x00SEND\ndestination:/queue/test\n\n\x00' sb = FrameBuffer() sb.append(m1) f1 = sb.extract_frame() self.assertEqual(f1.cmd, frames.CONNECT) self.assertEqual(f1.body, b'0123456789') f = sb.extract_frame() self.assertIsNone(f) sb.append(m2) f2 = sb.extract_frame() f3 = sb.extract_frame() self.assertEqual(f2.cmd, frames.SUBSCRIBE) self.assertEqual(f2.body, '') self.assertEqual(f3.cmd, frames.SEND) self.assertEqual(f3.headers.get('destination'), '/queue/test') self.assertEqual(f3.body, '') self.assertIsNone(sb.extract_frame())
def test_extract_frame(self): """ Test extracting a single frame. """ sb = FrameBuffer() m1 = self.createMessage( 'connect', {'session': uuid.uuid4()}, 'This is the body') sb.append(m1) msg = sb.extract_frame() self.assertIsInstance(msg, Frame) self.assertEqual(m1, msg.pack())
def test_extract_frame_binary(self): """ Test extracting a binary frame. """ sb = FrameBuffer() binmsg = "\x00\x00HELLO\x00\x00DONKEY\x00\x00" m1 = self.createMessage('send', OrderedDict({'content-length': len(binmsg), 'x-other-header': 'value'}), binmsg ) sb.append(m1) msg = sb.extract_frame() self.assertIsInstance(msg, Frame) self.assertEqual(msg.pack(), m1)
def setup(self): if self.server.timeout is not None: self.request.settimeout(self.server.timeout) self.debug = False self.log = logging.getLogger( '%s.%s' % (self.__module__, self.__class__.__name__)) self.buffer = FrameBuffer() self.engine = StompEngine(connection=self, authenticator=self.server.authenticator, queue_manager=self.server.queue_manager, topic_manager=self.server.topic_manager, protocol=self.server.protocol)
def __init__(self, addr, connect=True): """ @param addr: The (host,port) tuple for connection. @type addr: C{tuple} @param connect: Whether to connect socket to specified addr. @type connect: C{bool} """ self.log = logging.getLogger( '%s.%s' % (self.__module__, self.__class__.__name__)) self.sock = None self.addr = addr self.received_frames = Queue() self.read_stopped = threading.Event() self.buffer = FrameBuffer() if connect: self._connect()
def test_iteration(self): """ Test the iteration feature of our buffer.""" sb = FrameBuffer() m1 = self.createMessage( frames.CONNECT, {'session': uuid.uuid4()}, b'This is the body') m2 = self.createMessage( frames.SEND, {'destination': '/queue/sample'}, b'This is the body-2') sb.append(m1) sb.append(m2) self.assertIs(sb, iter(sb)) idx = 0 expected = (m1, m2) for frame in sb: self.assertIsInstance(frame, Frame) self.assertEqual(expected[idx], frame.pack()) idx += 1 self.assertEqual(idx, 2)