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)