From 781a9280e773cd99f3b534dbb79fc12b7960f884 Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Mon, 9 Dec 2019 13:53:17 -0500 Subject: [PATCH 1/6] Fixing ascii reader to support vector format when reading FD frames --- can/io/asc.py | 28 ++++++++++-- test/data/logfile_vector_fd.asc | 11 +++++ test/test_fd_vector.py | 80 +++++++++++++++++++++++++++++++++ 3 files changed, 116 insertions(+), 3 deletions(-) create mode 100644 test/data/logfile_vector_fd.asc create mode 100644 test/test_fd_vector.py diff --git a/can/io/asc.py b/can/io/asc.py index 9d854ab0f..6dd8a149e 100644 --- a/can/io/asc.py +++ b/can/io/asc.py @@ -55,10 +55,14 @@ def __iter__(self): temp = line.strip() if not temp or not temp[0].isdigit(): continue + is_fd = False try: timestamp, channel, dummy = temp.split( None, 2 ) # , frameType, dlc, frameData + if channel == "CANFD": + timestamp, _, channel, dir, dummy = temp.split(None, 4) + is_fd = True except ValueError: # we parsed an empty comment continue @@ -89,15 +93,30 @@ def __iter__(self): ) yield msg else: + brs = None + esi = None + data_length = 0 try: - # this only works if dlc > 0 and thus data is availabe - can_id_str, _, _, dlc, data = dummy.split(None, 4) + # this only works if dlc > 0 and thus data is available + if not is_fd: + can_id_str, _, _, dlc, data = dummy.split(None, 4) + else: + can_id_str, frame_name, brs, esi, dlc, data_length, \ + data = dummy.split(None, 6) + if frame_name.isdigit(): + # Empty frame_name + can_id_str, brs, esi, dlc, data_length, data = \ + dummy.split(None, 5) except ValueError: # but if not, we only want to get the stuff up to the dlc can_id_str, _, _, dlc = dummy.split(None, 3) # and we set data to an empty sequence manually data = "" - dlc = int(dlc) + dlc = int(dlc, 16) + if is_fd: + # For fd frames, dlc and data length might not be equal and + # data_length is the actual size of the data + dlc = int(data_length) frame = bytearray() data = data.split() for byte in data[0:dlc]: @@ -111,7 +130,10 @@ def __iter__(self): is_remote_frame=False, dlc=dlc, data=frame, + is_fd=is_fd, channel=channel, + bitrate_switch=is_fd and brs == '1', + error_state_indicator=is_fd and esi == '1' ) self.stop() diff --git a/test/data/logfile_vector_fd.asc b/test/data/logfile_vector_fd.asc new file mode 100644 index 000000000..86067af75 --- /dev/null +++ b/test/data/logfile_vector_fd.asc @@ -0,0 +1,11 @@ +date Sam Sep 30 15:06:13.191 2017 +base hex timestamps absolute +internal events logged +// version 9.0.0 +Begin Triggerblock Sam Sep 30 15:06:13.191 2017 + 0.000000 Start of measurement + 0.045522 CANFD 62 Rx 7d BrakeSnData_4 1 0 8 8 01 1b d6 d0 8a 1f d7 f6 104812 132 323000 a800f6c9 46500250 4b140250 20011736 2001040d + 0.045636 CANFD 62 Rx 88 0 1 8 8 00 00 f6 90 00 00 00 00 105812 137 323000 d001b0b3 46500250 4b140250 20011736 2001040d + 0.045746 CANFD 62 Rx 167x VehicleOperatingModes 1 0 8 8 73 80 00 10 00 09 e3 00 102187 133 323000 e000fb6c 46500250 4b140250 20011736 2001040d + 24.986902 CANFD 7 Tx 716 1 0 f 64 12 3b 36 01 7b 0a 20 20 20 20 22 66 69 6c 65 43 6f 75 6e 74 22 3a 20 31 2c 20 0a 20 20 20 20 22 65 63 75 49 64 22 3a 20 22 30 78 30 37 31 36 22 2c 20 0a 20 20 20 20 22 64 69 64 22 3a 20 22 46 0 0 3000 0 0 0 0 0 +End TriggerBlock diff --git a/test/test_fd_vector.py b/test/test_fd_vector.py new file mode 100644 index 000000000..2c46c2f78 --- /dev/null +++ b/test/test_fd_vector.py @@ -0,0 +1,80 @@ + + +from can import LogReader +import os + + +class TestAscReader: + + def test_basic_read(self): + logfile = os.path.join(os.path.dirname(__file__), "data", + "logfile_vector_fd.asc") + reader = LogReader(logfile) + messages = [] + for msg in reader: + messages.append(msg) + + assert len(messages) == 4 + + first_message = messages[0] + assert first_message.timestamp == 0.045522 + assert first_message.arbitration_id == 0x7d + assert first_message.is_extended_id is False + assert first_message.channel == 61 + assert first_message.dlc == 8 + assert first_message.data == \ + bytearray([0x01, 0x1b, 0xd6, 0xd0, 0x8a, 0x1f, 0xd7, 0xf6]) + assert first_message.is_fd is True + assert first_message.bitrate_switch is True + assert first_message.error_state_indicator is False + + second_message = messages[1] + assert second_message.timestamp == 0.045636 + assert second_message.arbitration_id == 0x88 + assert second_message.is_extended_id is False + assert second_message.channel == 61 + assert second_message.dlc == 8 + assert second_message.data == \ + bytearray([0x0, 0x0, 0xf6, 0x90, 0x0, 0x0, 0x0, 0x0]) + assert second_message.is_fd is True + assert second_message.bitrate_switch is False + assert second_message.error_state_indicator is True + + third_message = messages[2] + assert third_message.timestamp == 0.045746 + assert third_message.arbitration_id == 0x167 + assert third_message.is_extended_id is True + assert third_message.channel == 61 + assert third_message.dlc == 8 + assert third_message.data == \ + bytearray([0x73, 0x80, 0x0, 0x10, 0x0, 0x9, 0xe3, 0x0]) + assert third_message.is_fd is True + assert third_message.bitrate_switch is True + assert third_message.error_state_indicator is False + + fourth_message = messages[3] + assert fourth_message.timestamp == 24.986902 + assert fourth_message.arbitration_id == 0x716 + assert fourth_message.is_extended_id is False + assert fourth_message.channel == 6 + assert fourth_message.dlc == 64 + assert fourth_message.data == bytearray([ + 0x12, 0x3b, 0x36, 0x01, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x20, 0x31, + 0x2c, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, + 0x65, 0x63, 0x75, 0x49, 0x64, 0x22, 0x3a, 0x20, + 0x22, 0x30, 0x78, 0x30, 0x37, 0x31, 0x36, 0x22, + 0x2c, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, + 0x64, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x46 + ]) + assert fourth_message.is_fd is True + assert fourth_message.bitrate_switch is True + assert fourth_message.error_state_indicator is False + + + + + + + From bc955e5b3025d3284e035651164262f518454044 Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Mon, 9 Dec 2019 14:20:49 -0500 Subject: [PATCH 2/6] Removing empty lines --- test/test_fd_vector.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/test/test_fd_vector.py b/test/test_fd_vector.py index 2c46c2f78..443722f10 100644 --- a/test/test_fd_vector.py +++ b/test/test_fd_vector.py @@ -70,11 +70,4 @@ def test_basic_read(self): ]) assert fourth_message.is_fd is True assert fourth_message.bitrate_switch is True - assert fourth_message.error_state_indicator is False - - - - - - - + assert fourth_message.error_state_indicator is False \ No newline at end of file From b766205b2446f873612d1c28776fde06141b1b5f Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Mon, 9 Dec 2019 14:39:48 -0500 Subject: [PATCH 3/6] Black changes --- can/io/asc.py | 14 +++--- test/test_fd_vector.py | 105 ++++++++++++++++++++++++++++++++--------- 2 files changed, 90 insertions(+), 29 deletions(-) diff --git a/can/io/asc.py b/can/io/asc.py index 6dd8a149e..45ede3884 100644 --- a/can/io/asc.py +++ b/can/io/asc.py @@ -101,12 +101,14 @@ def __iter__(self): if not is_fd: can_id_str, _, _, dlc, data = dummy.split(None, 4) else: - can_id_str, frame_name, brs, esi, dlc, data_length, \ - data = dummy.split(None, 6) + can_id_str, frame_name, brs, esi, dlc, data_length, data = dummy.split( + None, 6 + ) if frame_name.isdigit(): # Empty frame_name - can_id_str, brs, esi, dlc, data_length, data = \ - dummy.split(None, 5) + can_id_str, brs, esi, dlc, data_length, data = dummy.split( + None, 5 + ) except ValueError: # but if not, we only want to get the stuff up to the dlc can_id_str, _, _, dlc = dummy.split(None, 3) @@ -132,8 +134,8 @@ def __iter__(self): data=frame, is_fd=is_fd, channel=channel, - bitrate_switch=is_fd and brs == '1', - error_state_indicator=is_fd and esi == '1' + bitrate_switch=is_fd and brs == "1", + error_state_indicator=is_fd and esi == "1", ) self.stop() diff --git a/test/test_fd_vector.py b/test/test_fd_vector.py index 443722f10..cde8e9dbf 100644 --- a/test/test_fd_vector.py +++ b/test/test_fd_vector.py @@ -1,14 +1,12 @@ - - from can import LogReader import os class TestAscReader: - def test_basic_read(self): - logfile = os.path.join(os.path.dirname(__file__), "data", - "logfile_vector_fd.asc") + logfile = os.path.join( + os.path.dirname(__file__), "data", "logfile_vector_fd.asc" + ) reader = LogReader(logfile) messages = [] for msg in reader: @@ -18,12 +16,13 @@ def test_basic_read(self): first_message = messages[0] assert first_message.timestamp == 0.045522 - assert first_message.arbitration_id == 0x7d + assert first_message.arbitration_id == 0x7D assert first_message.is_extended_id is False assert first_message.channel == 61 assert first_message.dlc == 8 - assert first_message.data == \ - bytearray([0x01, 0x1b, 0xd6, 0xd0, 0x8a, 0x1f, 0xd7, 0xf6]) + assert first_message.data == bytearray( + [0x01, 0x1B, 0xD6, 0xD0, 0x8A, 0x1F, 0xD7, 0xF6] + ) assert first_message.is_fd is True assert first_message.bitrate_switch is True assert first_message.error_state_indicator is False @@ -34,8 +33,9 @@ def test_basic_read(self): assert second_message.is_extended_id is False assert second_message.channel == 61 assert second_message.dlc == 8 - assert second_message.data == \ - bytearray([0x0, 0x0, 0xf6, 0x90, 0x0, 0x0, 0x0, 0x0]) + assert second_message.data == bytearray( + [0x0, 0x0, 0xF6, 0x90, 0x0, 0x0, 0x0, 0x0] + ) assert second_message.is_fd is True assert second_message.bitrate_switch is False assert second_message.error_state_indicator is True @@ -46,8 +46,9 @@ def test_basic_read(self): assert third_message.is_extended_id is True assert third_message.channel == 61 assert third_message.dlc == 8 - assert third_message.data == \ - bytearray([0x73, 0x80, 0x0, 0x10, 0x0, 0x9, 0xe3, 0x0]) + assert third_message.data == bytearray( + [0x73, 0x80, 0x0, 0x10, 0x0, 0x9, 0xE3, 0x0] + ) assert third_message.is_fd is True assert third_message.bitrate_switch is True assert third_message.error_state_indicator is False @@ -58,16 +59,74 @@ def test_basic_read(self): assert fourth_message.is_extended_id is False assert fourth_message.channel == 6 assert fourth_message.dlc == 64 - assert fourth_message.data == bytearray([ - 0x12, 0x3b, 0x36, 0x01, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x22, 0x66, 0x69, 0x6c, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x3a, 0x20, 0x31, - 0x2c, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x65, 0x63, 0x75, 0x49, 0x64, 0x22, 0x3a, 0x20, - 0x22, 0x30, 0x78, 0x30, 0x37, 0x31, 0x36, 0x22, - 0x2c, 0x20, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x64, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x46 - ]) + assert fourth_message.data == bytearray( + [ + 0x12, + 0x3B, + 0x36, + 0x01, + 0x7B, + 0x0A, + 0x20, + 0x20, + 0x20, + 0x20, + 0x22, + 0x66, + 0x69, + 0x6C, + 0x65, + 0x43, + 0x6F, + 0x75, + 0x6E, + 0x74, + 0x22, + 0x3A, + 0x20, + 0x31, + 0x2C, + 0x20, + 0x0A, + 0x20, + 0x20, + 0x20, + 0x20, + 0x22, + 0x65, + 0x63, + 0x75, + 0x49, + 0x64, + 0x22, + 0x3A, + 0x20, + 0x22, + 0x30, + 0x78, + 0x30, + 0x37, + 0x31, + 0x36, + 0x22, + 0x2C, + 0x20, + 0x0A, + 0x20, + 0x20, + 0x20, + 0x20, + 0x22, + 0x64, + 0x69, + 0x64, + 0x22, + 0x3A, + 0x20, + 0x22, + 0x46, + ] + ) assert fourth_message.is_fd is True assert fourth_message.bitrate_switch is True - assert fourth_message.error_state_indicator is False \ No newline at end of file + assert fourth_message.error_state_indicator is False From dbd03d61e2c5e4596d17d98f05cacd97ec2f58c4 Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Mon, 9 Dec 2019 16:13:25 -0500 Subject: [PATCH 4/6] Review comments changes --- can/io/asc.py | 2 +- test/data/logfile_vector_fd.asc | 4 ++-- test/test_fd_vector.py | 32 ++++++++++++++++---------------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/can/io/asc.py b/can/io/asc.py index 45ede3884..698ab305a 100644 --- a/can/io/asc.py +++ b/can/io/asc.py @@ -61,7 +61,7 @@ def __iter__(self): None, 2 ) # , frameType, dlc, frameData if channel == "CANFD": - timestamp, _, channel, dir, dummy = temp.split(None, 4) + timestamp, _, channel, _, dummy = temp.split(None, 4) is_fd = True except ValueError: # we parsed an empty comment diff --git a/test/data/logfile_vector_fd.asc b/test/data/logfile_vector_fd.asc index 86067af75..9e3f88b04 100644 --- a/test/data/logfile_vector_fd.asc +++ b/test/data/logfile_vector_fd.asc @@ -4,8 +4,8 @@ internal events logged // version 9.0.0 Begin Triggerblock Sam Sep 30 15:06:13.191 2017 0.000000 Start of measurement - 0.045522 CANFD 62 Rx 7d BrakeSnData_4 1 0 8 8 01 1b d6 d0 8a 1f d7 f6 104812 132 323000 a800f6c9 46500250 4b140250 20011736 2001040d + 0.045522 CANFD 62 Rx 7d TestingName123 1 0 8 8 01 1b d6 d0 8a 1f d7 f6 104812 132 323000 a800f6c9 46500250 4b140250 20011736 2001040d 0.045636 CANFD 62 Rx 88 0 1 8 8 00 00 f6 90 00 00 00 00 105812 137 323000 d001b0b3 46500250 4b140250 20011736 2001040d - 0.045746 CANFD 62 Rx 167x VehicleOperatingModes 1 0 8 8 73 80 00 10 00 09 e3 00 102187 133 323000 e000fb6c 46500250 4b140250 20011736 2001040d + 0.045746 CANFD 62 Rx 167x SymbolicName321 1 0 8 8 73 80 00 10 00 09 e3 00 102187 133 323000 e000fb6c 46500250 4b140250 20011736 2001040d 24.986902 CANFD 7 Tx 716 1 0 f 64 12 3b 36 01 7b 0a 20 20 20 20 22 66 69 6c 65 43 6f 75 6e 74 22 3a 20 31 2c 20 0a 20 20 20 20 22 65 63 75 49 64 22 3a 20 22 30 78 30 37 31 36 22 2c 20 0a 20 20 20 20 22 64 69 64 22 3a 20 22 46 0 0 3000 0 0 0 0 0 End TriggerBlock diff --git a/test/test_fd_vector.py b/test/test_fd_vector.py index cde8e9dbf..ba413354c 100644 --- a/test/test_fd_vector.py +++ b/test/test_fd_vector.py @@ -17,46 +17,46 @@ def test_basic_read(self): first_message = messages[0] assert first_message.timestamp == 0.045522 assert first_message.arbitration_id == 0x7D - assert first_message.is_extended_id is False + assert not first_message.is_extended_id assert first_message.channel == 61 assert first_message.dlc == 8 assert first_message.data == bytearray( [0x01, 0x1B, 0xD6, 0xD0, 0x8A, 0x1F, 0xD7, 0xF6] ) - assert first_message.is_fd is True - assert first_message.bitrate_switch is True - assert first_message.error_state_indicator is False + assert first_message.is_fd + assert first_message.bitrate_switch + assert not first_message.error_state_indicator second_message = messages[1] assert second_message.timestamp == 0.045636 assert second_message.arbitration_id == 0x88 - assert second_message.is_extended_id is False + assert not second_message.is_extended_id assert second_message.channel == 61 assert second_message.dlc == 8 assert second_message.data == bytearray( [0x0, 0x0, 0xF6, 0x90, 0x0, 0x0, 0x0, 0x0] ) - assert second_message.is_fd is True - assert second_message.bitrate_switch is False - assert second_message.error_state_indicator is True + assert second_message.is_fd + assert not second_message.bitrate_switch + assert second_message.error_state_indicator third_message = messages[2] assert third_message.timestamp == 0.045746 assert third_message.arbitration_id == 0x167 - assert third_message.is_extended_id is True + assert third_message.is_extended_id assert third_message.channel == 61 assert third_message.dlc == 8 assert third_message.data == bytearray( [0x73, 0x80, 0x0, 0x10, 0x0, 0x9, 0xE3, 0x0] ) - assert third_message.is_fd is True - assert third_message.bitrate_switch is True - assert third_message.error_state_indicator is False + assert third_message.is_fd + assert third_message.bitrate_switch + assert not third_message.error_state_indicator fourth_message = messages[3] assert fourth_message.timestamp == 24.986902 assert fourth_message.arbitration_id == 0x716 - assert fourth_message.is_extended_id is False + assert not fourth_message.is_extended_id assert fourth_message.channel == 6 assert fourth_message.dlc == 64 assert fourth_message.data == bytearray( @@ -127,6 +127,6 @@ def test_basic_read(self): 0x46, ] ) - assert fourth_message.is_fd is True - assert fourth_message.bitrate_switch is True - assert fourth_message.error_state_indicator is False + assert fourth_message.is_fd + assert fourth_message.bitrate_switch + assert not fourth_message.error_state_indicator From b4890a33ba532b55a9eedc4fa6d0002f4c650256 Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Tue, 10 Dec 2019 09:32:43 -0500 Subject: [PATCH 5/6] Changes to using python-can's methods to compare messages --- ...gfile_vector_fd.asc => logfile_can_fd.asc} | 0 test/test_asc_reader.py | 138 ++++++++++++++++++ test/test_fd_vector.py | 132 ----------------- 3 files changed, 138 insertions(+), 132 deletions(-) rename test/data/{logfile_vector_fd.asc => logfile_can_fd.asc} (100%) create mode 100644 test/test_asc_reader.py delete mode 100644 test/test_fd_vector.py diff --git a/test/data/logfile_vector_fd.asc b/test/data/logfile_can_fd.asc similarity index 100% rename from test/data/logfile_vector_fd.asc rename to test/data/logfile_can_fd.asc diff --git a/test/test_asc_reader.py b/test/test_asc_reader.py new file mode 100644 index 000000000..5d8a8e70c --- /dev/null +++ b/test/test_asc_reader.py @@ -0,0 +1,138 @@ +import os + +from can import LogReader, Message, ASCReader + + +class TestAscReader: + def test_log_reader_asc_detection(self): + """Validate that LogReader is correctly detecting the .asc files""" + logfile = os.path.join(os.path.dirname(__file__), "data", "logfile.asc") + with LogReader(logfile) as reader: + assert isinstance(reader, ASCReader) + + def test_asc_reader(self): + logfile = os.path.join(os.path.dirname(__file__), "data", "logfile.asc") + with ASCReader(logfile) as reader: + messages = list(reader) + + assert len(messages) == 10 + # TODO: add messages validation + + def test_can_fd_frames(self): + logfile = os.path.join(os.path.dirname(__file__), "data", "logfile_can_fd.asc") + with ASCReader(logfile) as reader: + messages = list(reader) + + assert len(messages) == 4 + + validation_messages = [ + Message( + timestamp=0.045522, + arbitration_id=0x7D, + is_extended_id=False, + channel=61, + dlc=8, + data=(0x01, 0x1B, 0xD6, 0xD0, 0x8A, 0x1F, 0xD7, 0xF6), + is_fd=True, + bitrate_switch=True, + ), + Message( + timestamp=0.045636, + arbitration_id=0x88, + is_extended_id=False, + channel=61, + dlc=8, + data=(0x0, 0x0, 0xF6, 0x90, 0x0, 0x0, 0x0, 0x0), + is_fd=True, + bitrate_switch=False, + error_state_indicator=True, + ), + Message( + timestamp=0.045746, + arbitration_id=0x167, + is_extended_id=True, + channel=61, + dlc=8, + data=(0x73, 0x80, 0x0, 0x10, 0x0, 0x9, 0xE3, 0x0), + is_fd=True, + bitrate_switch=True, + ), + Message( + timestamp=24.986902, + arbitration_id=0x716, + is_extended_id=False, + channel=6, + dlc=64, + data=( + 0x12, + 0x3B, + 0x36, + 0x01, + 0x7B, + 0x0A, + 0x20, + 0x20, + 0x20, + 0x20, + 0x22, + 0x66, + 0x69, + 0x6C, + 0x65, + 0x43, + 0x6F, + 0x75, + 0x6E, + 0x74, + 0x22, + 0x3A, + 0x20, + 0x31, + 0x2C, + 0x20, + 0x0A, + 0x20, + 0x20, + 0x20, + 0x20, + 0x22, + 0x65, + 0x63, + 0x75, + 0x49, + 0x64, + 0x22, + 0x3A, + 0x20, + 0x22, + 0x30, + 0x78, + 0x30, + 0x37, + 0x31, + 0x36, + 0x22, + 0x2C, + 0x20, + 0x0A, + 0x20, + 0x20, + 0x20, + 0x20, + 0x22, + 0x64, + 0x69, + 0x64, + 0x22, + 0x3A, + 0x20, + 0x22, + 0x46, + ), + is_fd=True, + bitrate_switch=True, + ), + ] + + for i in range(len(validation_messages)): + assert messages[i].equals(validation_messages[i]) diff --git a/test/test_fd_vector.py b/test/test_fd_vector.py deleted file mode 100644 index ba413354c..000000000 --- a/test/test_fd_vector.py +++ /dev/null @@ -1,132 +0,0 @@ -from can import LogReader -import os - - -class TestAscReader: - def test_basic_read(self): - logfile = os.path.join( - os.path.dirname(__file__), "data", "logfile_vector_fd.asc" - ) - reader = LogReader(logfile) - messages = [] - for msg in reader: - messages.append(msg) - - assert len(messages) == 4 - - first_message = messages[0] - assert first_message.timestamp == 0.045522 - assert first_message.arbitration_id == 0x7D - assert not first_message.is_extended_id - assert first_message.channel == 61 - assert first_message.dlc == 8 - assert first_message.data == bytearray( - [0x01, 0x1B, 0xD6, 0xD0, 0x8A, 0x1F, 0xD7, 0xF6] - ) - assert first_message.is_fd - assert first_message.bitrate_switch - assert not first_message.error_state_indicator - - second_message = messages[1] - assert second_message.timestamp == 0.045636 - assert second_message.arbitration_id == 0x88 - assert not second_message.is_extended_id - assert second_message.channel == 61 - assert second_message.dlc == 8 - assert second_message.data == bytearray( - [0x0, 0x0, 0xF6, 0x90, 0x0, 0x0, 0x0, 0x0] - ) - assert second_message.is_fd - assert not second_message.bitrate_switch - assert second_message.error_state_indicator - - third_message = messages[2] - assert third_message.timestamp == 0.045746 - assert third_message.arbitration_id == 0x167 - assert third_message.is_extended_id - assert third_message.channel == 61 - assert third_message.dlc == 8 - assert third_message.data == bytearray( - [0x73, 0x80, 0x0, 0x10, 0x0, 0x9, 0xE3, 0x0] - ) - assert third_message.is_fd - assert third_message.bitrate_switch - assert not third_message.error_state_indicator - - fourth_message = messages[3] - assert fourth_message.timestamp == 24.986902 - assert fourth_message.arbitration_id == 0x716 - assert not fourth_message.is_extended_id - assert fourth_message.channel == 6 - assert fourth_message.dlc == 64 - assert fourth_message.data == bytearray( - [ - 0x12, - 0x3B, - 0x36, - 0x01, - 0x7B, - 0x0A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x22, - 0x66, - 0x69, - 0x6C, - 0x65, - 0x43, - 0x6F, - 0x75, - 0x6E, - 0x74, - 0x22, - 0x3A, - 0x20, - 0x31, - 0x2C, - 0x20, - 0x0A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x22, - 0x65, - 0x63, - 0x75, - 0x49, - 0x64, - 0x22, - 0x3A, - 0x20, - 0x22, - 0x30, - 0x78, - 0x30, - 0x37, - 0x31, - 0x36, - 0x22, - 0x2C, - 0x20, - 0x0A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x22, - 0x64, - 0x69, - 0x64, - 0x22, - 0x3A, - 0x20, - 0x22, - 0x46, - ] - ) - assert fourth_message.is_fd - assert fourth_message.bitrate_switch - assert not fourth_message.error_state_indicator From 5e0ca7dac1a4db6e742177662c23cdb0247fed50 Mon Sep 17 00:00:00 2001 From: Syed Raza Date: Tue, 10 Dec 2019 15:18:19 -0500 Subject: [PATCH 6/6] Using existing unit tests instead of creating new ones --- test/data/logfile_can_fd.asc | 11 --- test/logformats_test.py | 2 +- test/test_asc_reader.py | 138 ----------------------------------- 3 files changed, 1 insertion(+), 150 deletions(-) delete mode 100644 test/data/logfile_can_fd.asc delete mode 100644 test/test_asc_reader.py diff --git a/test/data/logfile_can_fd.asc b/test/data/logfile_can_fd.asc deleted file mode 100644 index 9e3f88b04..000000000 --- a/test/data/logfile_can_fd.asc +++ /dev/null @@ -1,11 +0,0 @@ -date Sam Sep 30 15:06:13.191 2017 -base hex timestamps absolute -internal events logged -// version 9.0.0 -Begin Triggerblock Sam Sep 30 15:06:13.191 2017 - 0.000000 Start of measurement - 0.045522 CANFD 62 Rx 7d TestingName123 1 0 8 8 01 1b d6 d0 8a 1f d7 f6 104812 132 323000 a800f6c9 46500250 4b140250 20011736 2001040d - 0.045636 CANFD 62 Rx 88 0 1 8 8 00 00 f6 90 00 00 00 00 105812 137 323000 d001b0b3 46500250 4b140250 20011736 2001040d - 0.045746 CANFD 62 Rx 167x SymbolicName321 1 0 8 8 73 80 00 10 00 09 e3 00 102187 133 323000 e000fb6c 46500250 4b140250 20011736 2001040d - 24.986902 CANFD 7 Tx 716 1 0 f 64 12 3b 36 01 7b 0a 20 20 20 20 22 66 69 6c 65 43 6f 75 6e 74 22 3a 20 31 2c 20 0a 20 20 20 20 22 65 63 75 49 64 22 3a 20 22 30 78 30 37 31 36 22 2c 20 0a 20 20 20 20 22 64 69 64 22 3a 20 22 46 0 0 3000 0 0 0 0 0 -End TriggerBlock diff --git a/test/logformats_test.py b/test/logformats_test.py index 3bc2695bb..4a5c408b5 100644 --- a/test/logformats_test.py +++ b/test/logformats_test.py @@ -338,7 +338,7 @@ def _setup_instance(self): super()._setup_instance_helper( can.ASCWriter, can.ASCReader, - check_fd=False, + check_fd=True, check_comments=True, preserves_channel=False, adds_default_channel=0, diff --git a/test/test_asc_reader.py b/test/test_asc_reader.py deleted file mode 100644 index 5d8a8e70c..000000000 --- a/test/test_asc_reader.py +++ /dev/null @@ -1,138 +0,0 @@ -import os - -from can import LogReader, Message, ASCReader - - -class TestAscReader: - def test_log_reader_asc_detection(self): - """Validate that LogReader is correctly detecting the .asc files""" - logfile = os.path.join(os.path.dirname(__file__), "data", "logfile.asc") - with LogReader(logfile) as reader: - assert isinstance(reader, ASCReader) - - def test_asc_reader(self): - logfile = os.path.join(os.path.dirname(__file__), "data", "logfile.asc") - with ASCReader(logfile) as reader: - messages = list(reader) - - assert len(messages) == 10 - # TODO: add messages validation - - def test_can_fd_frames(self): - logfile = os.path.join(os.path.dirname(__file__), "data", "logfile_can_fd.asc") - with ASCReader(logfile) as reader: - messages = list(reader) - - assert len(messages) == 4 - - validation_messages = [ - Message( - timestamp=0.045522, - arbitration_id=0x7D, - is_extended_id=False, - channel=61, - dlc=8, - data=(0x01, 0x1B, 0xD6, 0xD0, 0x8A, 0x1F, 0xD7, 0xF6), - is_fd=True, - bitrate_switch=True, - ), - Message( - timestamp=0.045636, - arbitration_id=0x88, - is_extended_id=False, - channel=61, - dlc=8, - data=(0x0, 0x0, 0xF6, 0x90, 0x0, 0x0, 0x0, 0x0), - is_fd=True, - bitrate_switch=False, - error_state_indicator=True, - ), - Message( - timestamp=0.045746, - arbitration_id=0x167, - is_extended_id=True, - channel=61, - dlc=8, - data=(0x73, 0x80, 0x0, 0x10, 0x0, 0x9, 0xE3, 0x0), - is_fd=True, - bitrate_switch=True, - ), - Message( - timestamp=24.986902, - arbitration_id=0x716, - is_extended_id=False, - channel=6, - dlc=64, - data=( - 0x12, - 0x3B, - 0x36, - 0x01, - 0x7B, - 0x0A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x22, - 0x66, - 0x69, - 0x6C, - 0x65, - 0x43, - 0x6F, - 0x75, - 0x6E, - 0x74, - 0x22, - 0x3A, - 0x20, - 0x31, - 0x2C, - 0x20, - 0x0A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x22, - 0x65, - 0x63, - 0x75, - 0x49, - 0x64, - 0x22, - 0x3A, - 0x20, - 0x22, - 0x30, - 0x78, - 0x30, - 0x37, - 0x31, - 0x36, - 0x22, - 0x2C, - 0x20, - 0x0A, - 0x20, - 0x20, - 0x20, - 0x20, - 0x22, - 0x64, - 0x69, - 0x64, - 0x22, - 0x3A, - 0x20, - 0x22, - 0x46, - ), - is_fd=True, - bitrate_switch=True, - ), - ] - - for i in range(len(validation_messages)): - assert messages[i].equals(validation_messages[i])