Ejemplo n.º 1
0
    def test_binary_body(self):
        body = b'\xf0\x00\x0a\x09'
        headers = {StompSpec.CONTENT_LENGTH_HEADER: textType(len(body))}
        frame = StompFrame(StompSpec.MESSAGE, body=body)
        frame.setContentLength()
        frameBytes = binaryType(frame)
        self.assertTrue(frameBytes.endswith(b'\x00'))
        parser = StompParser()
        for _ in range(2):
            for (j, _) in enumerate(frameBytes):
                parser.add(frameBytes[j:j + 1])
            frame = parser.get()
            self.assertEqual(StompSpec.MESSAGE, frame.command)
            self.assertEqual(headers, frame.headers)
            self.assertEqual(body, frame.body)
        self.assertEqual(parser.get(), None)

        frames = 2 * frameBytes
        split = len(frameBytes) - 1
        chunks = [frames[:split], frames[split:]]
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), None)
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), None)

        split = len(frameBytes) + 1
        chunks = [frames[:split], frames[split:]]
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), None)
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), None)
Ejemplo n.º 2
0
 def _headlines(self):
     yield self.command
     escape = self._escape
     for header in (sorted(self.headers.items()) if self.rawHeaders is None else self.rawHeaders):
         yield ':'.join(escape(textType(field)) for field in header)
     yield ''
     yield ''
Ejemplo n.º 3
0
    def test_binary_body(self):
        body = b'\xf0\x00\x0a\x09'
        headers = {StompSpec.CONTENT_LENGTH_HEADER: textType(len(body))}
        frame = StompFrame(StompSpec.MESSAGE, body=body)
        frame.setContentLength()
        frameBytes = binaryType(frame)
        self.assertTrue(frameBytes.endswith(b'\x00'))
        parser = StompParser()
        for _ in range(2):
            for (j, _) in enumerate(frameBytes):
                parser.add(frameBytes[j:j + 1])
            frame = parser.get()
            self.assertEqual(StompSpec.MESSAGE, frame.command)
            self.assertEqual(headers, frame.headers)
            self.assertEqual(body, frame.body)
        self.assertEqual(parser.get(), None)

        frames = 2 * frameBytes
        split = len(frameBytes) - 1
        chunks = [frames[:split], frames[split:]]
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), None)
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), None)

        split = len(frameBytes) + 1
        chunks = [frames[:split], frames[split:]]
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), None)
        parser.add(chunks.pop(0))
        self.assertEqual(parser.get(), frame)
        self.assertEqual(parser.get(), None)
Ejemplo n.º 4
0
def _addReceiptHeader(frame, receipt):
    if not receipt:
        return
    try:
        frame.headers[StompSpec.RECEIPT_HEADER] = textType(receipt)
    except:
        raise StompProtocolError('Invalid receipt (not a string): %s' % repr(receipt))
Ejemplo n.º 5
0
 def _headlines(self):
     yield self.command
     escape = self._escape
     for header in (sorted(self.headers.items())
                    if self.rawHeaders is None else self.rawHeaders):
         yield ':'.join(escape(textType(field)) for field in header)
     yield ''
     yield ''
Ejemplo n.º 6
0
def cloneFrame(frame, persistent=None):
    frame = copy.deepcopy(frame)
    frame.unraw()
    headers = filterReservedHeaders(frame.headers)
    if persistent is not None:
        headers['persistent'] = textType(bool(persistent)).lower()
    frame.headers = headers
    return frame
Ejemplo n.º 7
0
def cloneFrame(frame, persistent=None):
    frame = copy.deepcopy(frame)
    frame.unraw()
    headers = filterReservedHeaders(frame.headers)
    if persistent is not None:
        headers['persistent'] = textType(bool(persistent)).lower()
    frame.headers = headers
    return frame
Ejemplo n.º 8
0
def _addReceiptHeader(frame, receipt):
    if not receipt:
        return
    try:
        frame.headers[StompSpec.RECEIPT_HEADER] = textType(receipt)
    except:
        raise StompProtocolError('Invalid receipt (not a string): %s' %
                                 repr(receipt))
Ejemplo n.º 9
0
 def setContentLength(self):
     item = (StompSpec.CONTENT_LENGTH_HEADER, textType(len(self.body)))
     if self.rawHeaders is None:
         self.headers.update([item])
     else:
         self.rawHeaders.insert(0, item)
Ejemplo n.º 10
0
 def setContentLength(self):
     item = (StompSpec.CONTENT_LENGTH_HEADER, textType(len(self.body)))
     if self.rawHeaders is None:
         self.headers.update([item])
     else:
         self.rawHeaders.insert(0, item)