Exemple #1
0
    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())
Exemple #2
0
 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())
Exemple #3
0
 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)