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)
 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()
Exemple #6
0
    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)