Beispiel #1
0
    def test_fromBytes_default(self):
        self.thisRTP.sequenceNumber = 0
        self.thisRTP.ssrc = 0
        default = b'\x80\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

        newRTP = RTP().fromBytes(default)
        self.assertEqual(newRTP, self.thisRTP)
Beispiel #2
0
 def test_pushGet(self, startKey, len):
     self.assertFalse(self.buffer.available())
     for x in range(len):
         seqNum = (startKey + x) % (MAX_SEQ_NUM + 1)
         packet = RTP(sequenceNumber=seqNum)
         ret = self.buffer.pushGet(seqNum, packet)
         self.assertEqual([packet], ret)
         self.assertFalse(self.buffer.available())
Beispiel #3
0
    def test_fromBytearray_payload(self, value):
        self.thisRTP.sequenceNumber = 0
        self.thisRTP.ssrc = 0
        payload = bytearray(
            b'\x80\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
        payload += value
        newRTP = RTP().fromBytearray(payload)

        self.thisRTP.payload = bytearray(value)
        self.assertEqual(newRTP, self.thisRTP)
Beispiel #4
0
    def test_fromBytearray_marker(self, value):
        self.thisRTP.sequenceNumber = 0
        self.thisRTP.ssrc = 0
        payload = bytearray(
            b'\x80\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
        payload[1] |= value << 7
        newRTP = RTP().fromBytearray(payload)

        self.thisRTP.marker = value
        self.assertEqual(newRTP, self.thisRTP)
Beispiel #5
0
    def test_fromBytearray_ssrc(self, value):
        self.thisRTP.sequenceNumber = 0
        self.thisRTP.ssrc = 0
        payload = bytearray(
            b'\x80\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
        payload[8:12] = value.to_bytes(4, byteorder='big')
        newRTP = RTP().fromBytearray(payload)

        self.thisRTP.ssrc = value
        self.assertEqual(newRTP, self.thisRTP)
    def _processData(self, data: bytes) -> None:
        newPacket = RTP().fromBytes(data)

        packets = self._packetBuff.pushGet(
            newPacket.sequenceNumber, newPacket)

        for packet in packets:
            self._processPacket(packet)

            if packet.marker:
                self._processFragments()
Beispiel #7
0
    def test_pop(self, startKey, len):
        fragments = []
        for x in range(len):
            seqNum = (startKey + x) % (MAX_SEQ_NUM + 1)
            packet = RTP(sequenceNumber=seqNum)
            fragments.append((seqNum, packet))
            self.buffer.push(seqNum, packet)

        for _, packet in fragments[-5:]:
            poppedPacket = self.buffer.pop()
            self.assertEqual(packet, poppedPacket)
Beispiel #8
0
    def test_get(self, startKey, len):
        fragments = []
        for x in range(len):
            seqNum = (startKey + x) % (MAX_SEQ_NUM + 1)
            packet = RTP(sequenceNumber=seqNum)
            fragments.append(packet)
            self.buffer.push(seqNum, packet)

        gotPackets = self.buffer.get()

        self.assertEqual(gotPackets, fragments[-5:])
        self.assertFalse(self.buffer.available())
Beispiel #9
0
    def test_fromBytearray_csrcList(self, value):
        self.thisRTP.sequenceNumber = 0
        self.thisRTP.ssrc = 0
        payload = bytearray(
            b'\x80\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
        payload[0] |= len(value)
        for x in range(len(value)):
            payload[12 + (4 * x):12 + (4 * x)] = value[x].to_bytes(
                4, byteorder='big')
        newRTP = RTP().fromBytearray(payload)

        self.thisRTP.csrcList.extend(value)
        self.assertEqual(newRTP, self.thisRTP)
Beispiel #10
0
    def test_push(self, startKey, len):
        fragments = []
        for x in range(len):
            seqNum = (startKey + x) % (MAX_SEQ_NUM + 1)
            packet = RTP(sequenceNumber=seqNum)
            fragments.append((seqNum, packet))
            self.buffer.push(seqNum, packet)

        for seqNum, packet in fragments[-5:]:
            self.assertIn(seqNum, self.buffer._buffer)
            self.assertEqual(packet, self.buffer._buffer[seqNum])

        for seqNum, packet in fragments[:-5]:
            self.assertNotIn(seqNum, self.buffer._buffer)
Beispiel #11
0
    def test_fromBytearray_extension(self, startBits, headerExtension):
        self.thisRTP.sequenceNumber = 0
        self.thisRTP.ssrc = 0
        newExt = Extension()
        newExt.startBits = bytearray(startBits)
        newExt.headerExtension = bytearray(headerExtension)

        payload = bytearray(
            b'\x80\x60\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
        payload[0] |= 1 << 4
        payload[12:12] = newExt.toBytearray()
        newRTP = RTP().fromBytearray(payload)

        self.thisRTP.extension = newExt
        self.assertEqual(newRTP, self.thisRTP)
Beispiel #12
0
    def _generateRTPPacket(self, doc: str, time: int, isFirst: bool,
                           marker: bool) -> RTP:
        # Only include bom in first packet for doc
        thisBOM = (isFirst and self._bom)

        packet = RTP(timestamp=time,
                     sequenceNumber=self._nextSeqNum,
                     payload=RTPPayload_TTML(userDataWords=doc,
                                             encoding=self._encoding,
                                             bom=thisBOM).toBytearray(),
                     marker=marker,
                     payloadType=self._payloadType)
        self._nextSeqNum += 1

        return packet
Beispiel #13
0
    def test_available(self, startKey, len):
        self.assertFalse(self.buffer.available())

        fragments = []
        for x in range(len):
            seqNum = (startKey + x) % (MAX_SEQ_NUM + 1)
            packet = RTP(sequenceNumber=seqNum)
            fragments.append((seqNum, packet))
            self.buffer.push(seqNum, packet)

        for _, packet in fragments[-5:]:
            self.assertTrue(self.buffer.available())
            self.buffer.pop()

        self.assertFalse(self.buffer.available())
Beispiel #14
0
    def test_processData(self, data):
        doc, encoding, bom = data

        payload = RTPPayload_TTML(userDataWords=doc,
                                  encoding=encoding,
                                  bom=bom).toBytearray()
        packet = RTP(payload=payload, marker=True)
        packetBytes = packet.toBytes()
        with mock.patch("rtpTTML.ttmlReceiver.RTPPayload_TTML") as mockTTML:
            thisReceiver = TTMLReceiver(0,
                                        self.callback,
                                        encoding=encoding,
                                        bom=bom)

            thisReceiver._processData(packetBytes)

            mockTTML.assert_called_once_with(encoding=encoding, bom=bom)
Beispiel #15
0
    def test_pushGetMissing(self, startKey, keepList):
        self.assertFalse(self.buffer.available())
        keepList += ([True] * 5)

        expectedList = []
        receivedList = []

        for x in range(10):
            seqNum = (startKey + x) % (MAX_SEQ_NUM + 1)
            packet = RTP(sequenceNumber=seqNum)
            if keepList[x]:
                expectedList.append(packet)
                ret = self.buffer.pushGet(seqNum, packet)
                receivedList += ret

        self.assertEqual(expectedList, receivedList)
        self.assertFalse(self.buffer.available())
Beispiel #16
0
    def test_pushGetSwapped(self, startKey, swap):
        self.assertFalse(self.buffer.available())
        expectedList = []
        receivedList = []

        for x in list(range(10)):
            seqNum = (startKey + x) % (MAX_SEQ_NUM + 1)
            packet = RTP(sequenceNumber=seqNum)
            expectedList.append(packet)

        swappedPackets = expectedList.copy()
        swappedPackets[swap[0]], swappedPackets[swap[1]] = (
            swappedPackets[swap[1]], swappedPackets[swap[0]])

        for packet in swappedPackets:
            ret = self.buffer.pushGet(packet.sequenceNumber, packet)
            receivedList += ret

        self.assertFalse(self.buffer.available())

        self.assertEqual(len(expectedList), len(receivedList))
        self.assertEqual(expectedList, receivedList)
Beispiel #17
0
    def test_init(self, padding, marker, payloadType, sequenceNumber,
                  timestamp, ssrc, csrcList, payload):
        newExt = Extension()
        newRTP = RTP(version=2,
                     padding=padding,
                     marker=marker,
                     payloadType=payloadType,
                     sequenceNumber=sequenceNumber,
                     timestamp=timestamp,
                     ssrc=ssrc,
                     extension=newExt,
                     csrcList=csrcList,
                     payload=bytearray(payload))

        self.assertEqual(newRTP.version, 2)
        self.assertEqual(newRTP.padding, padding)
        self.assertEqual(newRTP.marker, marker)
        self.assertEqual(newRTP.payloadType, payloadType)
        self.assertEqual(newRTP.sequenceNumber, sequenceNumber)
        self.assertEqual(newRTP.timestamp, timestamp)
        self.assertEqual(newRTP.ssrc, ssrc)
        self.assertEqual(newRTP.extension, newExt)
        self.assertEqual(newRTP.csrcList, csrcList)
        self.assertEqual(newRTP.payload, payload)
Beispiel #18
0
 def setUp(self):
     self.thisRTP = RTP()