コード例 #1
0
def test_packet_from_buffer():
    packet = packet_classes.GSEPacket(sync2_byte=0xFA,
                                      origin=1,
                                      payload='hi there!' * 30)
    buffer = packet.to_buffer()
    packets, remainder = packet_classes.get_packets_from_buffer(
        buffer, packet_classes.GSEPacket, packet_classes.GSEPacket.START_BYTE)
    packet2 = packets[0]
    assert remainder == ''
    assert packet.sync2_byte == packet2.sync2_byte
    assert packet.origin == packet2.origin
    assert packet.payload_length == packet2.payload_length
    assert packet.checksum == packet2.checksum
    assert packet.payload == packet2.payload

    packets, remainder = packet_classes.get_packets_from_buffer(
        buffer[:30], packet_classes.GSEPacket,
        packet_classes.GSEPacket.START_BYTE)
    assert packets == []
    assert remainder == buffer[:30]

    buffer2 = buffer + chr(packet_classes.GSEPacket.START_BYTE)
    packets, remainder = packet_classes.get_packets_from_buffer(
        buffer2, packet_classes.GSEPacket, packet_classes.GSEPacket.START_BYTE)
    packet2 = packets[0]
    assert remainder == chr(packet_classes.GSEPacket.START_BYTE)
    assert packet.sync2_byte == packet2.sync2_byte
    assert packet.origin == packet2.origin
    assert packet.payload_length == packet2.payload_length
    assert packet.checksum == packet2.checksum
    assert packet.payload == packet2.payload

    buffer3 = buffer + 'asdb' + buffer2
    packets, remainder = packet_classes.get_packets_from_buffer(
        buffer3, packet_classes.GSEPacket, packet_classes.GSEPacket.START_BYTE)
    assert remainder == chr(packet_classes.GSEPacket.START_BYTE)
    assert len(packets) == 2
    for packet2 in packets:
        assert packet.sync2_byte == packet2.sync2_byte
        assert packet.origin == packet2.origin
        assert packet.payload_length == packet2.payload_length
        assert packet.checksum == packet2.checksum
        assert packet.payload == packet2.payload

    buffer3 = buffer + buffer[:30] + buffer * 20
    packets, remainder = packet_classes.get_packets_from_buffer(
        buffer3, packet_classes.GSEPacket, packet_classes.GSEPacket.START_BYTE)
    print repr(remainder)
    assert remainder == ''
    assert len(packets) == 21
    for packet2 in packets:
        assert packet.sync2_byte == packet2.sync2_byte
        assert packet.origin == packet2.origin
        assert packet.payload_length == packet2.payload_length
        assert packet.checksum == packet2.checksum
        assert packet.payload == packet2.payload
コード例 #2
0
 def bad_checksum_test(self):
     buffer = '\xfa\xff\x01\x00\x00\x00\x07'
     packets, remainder = packet_classes.get_packets_from_buffer(
         buffer,
         packet_class=packet_classes.GSEPacket,
         start_byte=packet_classes.GSEPacket.START_BYTE)
     assert (remainder == '\xff\x01\x00\x00\x00\x07')
     assert (packets == [])
コード例 #3
0
 def insufficient_length_for_checksum_test(self):
     buffer = '\xfa\xff\x01\x00\x00\x00'
     packets, remainder = packet_classes.get_packets_from_buffer(
         buffer,
         packet_class=packet_classes.GSEPacket,
         start_byte=packet_classes.GSEPacket.START_BYTE)
     assert (remainder == buffer)
     assert (packets == [])
コード例 #4
0
 def empty_packet_test(self):
     buffer = '\xfa\xff\x01\x00\x00\x00\x01'
     packets, remainder = packet_classes.get_packets_from_buffer(
         buffer,
         packet_class=packet_classes.GSEPacket,
         start_byte=packet_classes.GSEPacket.START_BYTE)
     assert (remainder == '')
     assert (packets[0].to_buffer() == buffer)
コード例 #5
0
ファイル: gse_receiver.py プロジェクト: gitj/PMC-Turbo
    def main_loop(self):
        while not self._exit:
            buffer = self.get_next_data()
            if not buffer:
                self.logger.debug('%s: Waiting for data' % self.name)
                continue
            with open(self.raw_filename, 'ab+') as f:
                f.write(buffer)

            if self.use_gse_packets:
                gse_packets, gse_remainder = packet_classes.get_packets_from_buffer(
                    self.last_gse_remainder + buffer,
                    packet_class=packet_classes.GSEPacket,
                    start_byte=packet_classes.GSEPacket.START_BYTE)
                self.last_gse_remainder = gse_remainder
                gse_hirate_packets, gse_lowrate_packets, other_gse_packets = packet_classes.separate_gse_packets_by_origin(
                    gse_packets)
                self.logger.debug(
                    "Found %d hirate, %d lowrate packets, %d other packets" %
                    (len(gse_hirate_packets), len(gse_lowrate_packets),
                     len(other_gse_packets)))
                self.write_gse_lowrate_packets_to_disk(gse_lowrate_packets,
                                                       other_gse_packets)

                file_packet_buffer = ''
                for packet in gse_hirate_packets:
                    file_packet_buffer += packet.payload

            else:
                file_packet_buffer = buffer

            file_packets, remainder = packet_classes.get_packets_from_buffer(
                self.file_packet_remainder + file_packet_buffer,
                packet_class=packet_classes.FilePacket,
                start_byte=packet_classes.FilePacket._valid_start_byte)
            for packet in file_packets:
                self.logger.debug(
                    'File_id: %d, Packet Number: %d of %d, length %d' %
                    (packet.file_id, packet.packet_number,
                     packet.total_packet_number, packet.payload_length))
            self.file_packet_remainder = remainder

            self.gather_files_from_file_packets(file_packets)
コード例 #6
0
 def false_start_test(self):
     buffer = '\xfa\xfa\xff\x01\x00\x00\x00\x01'
     packets, remainder = packet_classes.get_packets_from_buffer(
         buffer,
         packet_class=packet_classes.GSEPacket,
         start_byte=packet_classes.GSEPacket.START_BYTE)
     packet = packets[0]
     print '%r' % packet.to_buffer()
     print packet.checksum
     print '%r' % packet.payload
     print packet.payload_length
     assert (packets[0].to_buffer() == '\xfa\xff\x01\x00\x00\x00\x01')
コード例 #7
0
    def sip_packet_in_data_test(self):
        initial_buffer = '\xfa\xff\x01\x00\x00\x00\x01'
        np.random.seed(0)
        random_msg = np.random.randint(0, 255,
                                       size=10000).astype('uint8').tostring()
        buffer = random_msg[:(len(random_msg) /
                              2)] + initial_buffer + random_msg[
                                  (len(random_msg) / 2):]
        packets, remainder = packet_classes.get_packets_from_buffer(
            buffer,
            packet_class=packet_classes.GSEPacket,
            start_byte=packet_classes.GSEPacket.START_BYTE)

        assert (packets[0].to_buffer() == initial_buffer)
コード例 #8
0
 def long_sip_packet_test(self):
     sync = [0xFA, 0xFF]
     header = [0x01, 0x00]
     data = range(0, 100)
     length = [0x00, len(data)]  # assumes payload is < 255 bytes
     checksum_data = np.array(header + length + data, dtype='uint8')
     checksum = int(np.sum(checksum_data, dtype='uint8'))
     #print "total sum:", np.sum(checksum_data)
     assert (checksum < 256)
     buffer = np.array(sync + header + length + data + [checksum],
                       dtype='uint8').tostring()
     packets, remainder = packet_classes.get_packets_from_buffer(
         buffer,
         packet_class=packet_classes.GSEPacket,
         start_byte=packet_classes.GSEPacket.START_BYTE)
     assert (remainder == '')
     assert (packets[0].to_buffer() == buffer)
コード例 #9
0
    def run_through_good_test(self):
        # Tests filepacket
        packets = []
        packet_size = 1000
        num_packets = int(np.ceil(len(self.random_msg) / packet_size))
        for i in range(num_packets):
            msg = self.random_msg[(i * packet_size):((i + 1) * packet_size)]
            packet = packet_classes.FilePacket(file_id=0,
                                               packet_number=i,
                                               total_packet_number=num_packets,
                                               payload=msg)
            packets.append(packet)

        buffer = ''
        for packet in packets:
            buffer += packet.to_buffer()
        packets_after, remainder = packet_classes.get_packets_from_buffer(
            buffer,
            packet_class=packet_classes.FilePacket,
            start_byte=packet_classes.FilePacket._valid_start_byte)
        data_buffer = ''.join([packet.payload for packet in packets_after])
        assert (data_buffer == self.random_msg)