def print_channel_info(file_path): freader = record.RecordReader(file_path) channels = freader.get_channellist() header_msg = freader.get_headerstring() header = record_pb2.Header() header.ParseFromString(header_msg) print('\n++++++++++++Begin Channel Info Statistics++++++++++++++') print('-' * 40) print('record version: [%d:%d]' % (header.major_version, header.minor_version)) print('record message_number: %s' % str(header.message_number)) print('record file size(Byte): %s' % str(header.size)) print('chunk_number: %d' % header.chunk_number) print('channel count: %d' % len(channels)) print('-' * 40) count = 0 for channel in channels: desc = freader.get_protodesc(channel) count += 1 print('Channel: %s, count: %d, desc size: %d' % (channel, count, len(desc))) # print(desc) print("++++++++++++Finish Channel Info Statistics++++++++++++++\n")
def print_channel_info(file_path): freader = record.RecordReader(file_path) channels = freader.get_channellist() header_msg = freader.get_headerstring() header = record_pb2.Header() header.ParseFromString(header_msg) print "" print "++++++++++++Begin Channel Info Statistics++++++++++++++" print "-" * 40 print "record version: %d.%d" % (header.major_version, header.minor_version) print "record message_number: ", header.message_number print "record file size(Byte) ", header.size print "chunk_number: ", header.chunk_number print "channel counts: ", len(channels) print "-" * 40 counts = 1 for channel in channels: desc = freader.get_protodesc(channel) print "[", counts, "]", "channel name: ", channel, "; desc size is ", len( desc) counts = counts + 1 # print desc print "++++++++++++Finish Channel Info Statistics++++++++++++++" print ""
def test_record_writer_read(self): """ unit test of record. """ self.assertTrue(cyber.init()) # writer fwriter = record.RecordWriter() fwriter.set_size_fileseg(0) fwriter.set_intervaltime_fileseg(0) self.assertTrue(fwriter.open(TEST_RECORD_FILE)) fwriter.write_channel(CHAN_1, MSG_TYPE, STR_10B) fwriter.write_message(CHAN_1, STR_10B, TIME) self.assertEqual(1, fwriter.get_messagenumber(CHAN_1)) self.assertEqual(MSG_TYPE, fwriter.get_messagetype(CHAN_1)) self.assertEqual(STR_10B, fwriter.get_protodesc(CHAN_1)) fwriter.close() # reader fread = record.RecordReader(TEST_RECORD_FILE) channel_list = fread.get_channellist() self.assertEqual(1, len(channel_list)) self.assertEqual(CHAN_1, channel_list[0]) for channelname, msg, datatype, timestamp in fread.read_messages(): # print "+++" # print channelname # print msg, datatype, timestamp self.assertEqual(CHAN_1, channelname) self.assertEqual(STR_10B, msg) self.assertEqual(TIME, timestamp) self.assertEqual(1, fread.get_messagenumber(channelname)) self.assertEqual(MSG_TYPE, datatype) self.assertEqual(MSG_TYPE, fread.get_messagetype(channelname)) # print "pbdesc -> %s" % fread.get_protodesc(channelname) msg = record_pb2.Header() header_msg = fread.get_headerstring() msg.ParseFromString(header_msg) self.assertEqual(1, msg.major_version) self.assertEqual(0, msg.minor_version) self.assertEqual(1, msg.chunk_number) self.assertEqual(1, msg.channel_number) self.assertTrue(msg.is_complete) cyber.shutdown()
def validate_record(record_file): """ Validate the record file """ # Check the validity of a cyber record file according to header info. record_reader = RecordReader(record_file) header_msg = record_reader.get_headerstring() header = record_pb2.Header() header.ParseFromString(header_msg) if len(header) != CYBER_RECORD_HEADER_LENGTH: print('Record file: %s. header length should be %d.' % (record_file, CYBER_RECORD_HEADER_LENGTH)) return False if header.size == 0: print('Record file: %s. size is 0.' % record_file) return False if header.major_version != 1 and header.minor_version != 0: print('Record file: %s. version [%d:%d] is wrong.' % (record_file, header.major_version, header.minor_version)) return False if header.begin_time >= header.end_time: print('Record file: %s. begin time [%s] is equal or larger than ' 'end time [%s].' % (record_file, header.begin_time, header.end_time)) return False if not header.is_complete: print('Record file: %s is not completed.' % record_file) return False if header.message_number < 1 or header.channel_number < 1: print('Record file: %s. message|channel number [%d|%d] is invalid.' % (record_file, header.message_number, header.channel_number)) return False # There should be at least has one sensor channel sensor_channels = get_sensor_channel_list(record_file) if len(sensor_channels) < 1: print('Record file: %s. cannot found sensor channels.' % record_file) return False return True
def validate_record(record_file): """Validate the record file.""" # Check the validity of a cyber record file according to header info. record_reader = RecordReader(record_file) header_msg = record_reader.get_headerstring() header = record_pb2.Header() header.ParseFromString(header_msg) print(f"header is {header}") if not header.is_complete: print(f'Record file: {record_file} is not completed.') return False if header.size == 0: print(f'Record file: {record_file}. size is 0.') return False if header.major_version != 1 and header.minor_version != 0: print( f'Record file: {record_file}. version [{header.major_version}: ' f'{header.minor_version}] is wrong.') return False if header.begin_time >= header.end_time: print( f'Record file: {record_file}. begin time [{header.begin_time}] ' f'is equal or larger than end time [{header.end_time}].') return False if header.message_number < 1 or header.channel_number < 1: print( f'Record file: {record_file}. [message:channel] number ' f'[{header.message_number}:{header.channel_number}] is invalid.' ) return False # There should be at least one sensor channel sensor_channels = Extractor.get_sensor_channel_list(record_file) if len(sensor_channels) < 1: print(f'Record file: {record_file}. cannot find sensor channels.') return False return True
def test_record_writer_read(self): """ unit test of record. """ # writer fwriter = record.RecordWriter() fwriter.set_size_fileseg(0) fwriter.set_intervaltime_fileseg(0) self.assertTrue(fwriter.open(TEST_RECORD_FILE)) fwriter.write_channel(CHAN_1, MSG_TYPE, PROTO_DESC) fwriter.write_message(CHAN_1, MSG_DATA, TIME) self.assertEqual(1, fwriter.get_messagenumber(CHAN_1)) self.assertEqual(MSG_TYPE, fwriter.get_messagetype(CHAN_1)) self.assertEqual(PROTO_DESC, fwriter.get_protodesc(CHAN_1)) fwriter.close() # reader fread = record.RecordReader(TEST_RECORD_FILE) channel_list = fread.get_channellist() self.assertEqual(1, len(channel_list)) self.assertEqual(CHAN_1, channel_list[0]) header = record_pb2.Header() header.ParseFromString(fread.get_headerstring()) self.assertEqual(1, header.major_version) self.assertEqual(0, header.minor_version) self.assertEqual(1, header.chunk_number) self.assertEqual(1, header.channel_number) self.assertTrue(header.is_complete) for channelname, msg, datatype, timestamp in fread.read_messages(): self.assertEqual(CHAN_1, channelname) self.assertEqual(MSG_DATA, msg) self.assertEqual(TIME, timestamp) self.assertEqual(1, fread.get_messagenumber(channelname)) self.assertEqual(MSG_TYPE, datatype) self.assertEqual(MSG_TYPE, fread.get_messagetype(channelname))