def test_memloc1(self): memloc = MemoryLocation(address=0x1234, memorysize=0x78, address_format=16, memorysize_format=8) self.assertEqual(memloc.get_address_bytes(), b'\x12\x34') self.assertEqual(memloc.get_memorysize_bytes(), b'\x78')
def test_get_alfid(self): diddef = DynamicDidDefinition() diddef.add(source_did=0x1234, position=1, memorysize=1) diddef.add(source_did=0x1234, position=2, memorysize=1) with self.assertRaises(ValueError): diddef.get_alfid() diddef = DynamicDidDefinition() diddef.add( MemoryLocation(address=0x1234, memorysize=1, address_format=16, memorysize_format=8)) diddef.add( MemoryLocation(address=0x1235, memorysize=1, address_format=16, memorysize_format=8)) alfid = diddef.get_alfid() self.assertEqual(alfid.get_byte_as_int(), 0x12) diddef = DynamicDidDefinition() diddef.add( MemoryLocation(address=0x1234, memorysize=1, address_format=16, memorysize_format=8)) diddef.add( MemoryLocation(address=0x1235, memorysize=1, address_format=16, memorysize_format=16)) with self.assertRaises(ValueError): alfid = diddef.get_alfid()
def test_memloc_str_repr(self): memloc = MemoryLocation(address=0x1234, memorysize=0x78, address_format=16, memorysize_format=8) str(memloc) memloc.__repr__()
def _test_define_by_memloc_composite_success_default_format(self): diddef = DynamicDidDefinition() diddef.add(MemoryLocation(address=0x1122, memorysize=2)) diddef.add(MemoryLocation(address=0x3344, memorysize=4)) diddef.add(MemoryLocation(address=0x5566, memorysize=8)) self.udsclient.set_config('server_address_format', 32) self.udsclient.set_config('server_memorysize_format', 16) response = self.udsclient.dynamically_define_did(0xf302, diddef) self.assertEqual(response.service_data.subfunction_echo, 2) self.assertEqual(response.service_data.did_echo, 0xf302)
def test_memloc_from_bytes(self): memloc = MemoryLocation.from_bytes(address_bytes=b'\x12\x34', memorysize_bytes=b'\xFF') self.assertEqual(memloc.address, 0x1234) self.assertEqual(memloc.memorysize, 0xFF) self.assertEqual(memloc.address_format, 16) self.assertEqual(memloc.memorysize_format, 8) memloc = MemoryLocation.from_bytes(address_bytes=b'\x12\x34\x56', memorysize_bytes=b'\x66\x77\x88') self.assertEqual(memloc.address, 0x123456) self.assertEqual(memloc.memorysize, 0x667788) self.assertEqual(memloc.address_format, 24) self.assertEqual(memloc.memorysize_format, 24)
def _test_request_upload_wrongservice_exception(self): memloc = MemoryLocation(address=0x1234, memorysize=0xFF, address_format=16, memorysize_format=8) with self.assertRaises(UnexpectedResponseException) as handle: self.udsclient.request_upload(memory_location=memloc)
def _test_4byte_block_client_extra_bytes(self): memloc = MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8) self.udsclient.write_memory_by_address(memloc, '\x66\x77\x88\x99\xAA\xBB')
def _test_request_denied_exception(self): with self.assertRaises(NegativeResponseException) as handle: self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8))
def _test_4byte_block(self): memloc = MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8) response = self.udsclient.write_memory_by_address(memloc, b'\x66\x77\x88\x99') self.assertEqual(response.service_data.alfid_echo, memloc.alfid.get_byte_as_int()) self.assertEqual(response.service_data.memory_location_echo.address, 0x1234) self.assertEqual(response.service_data.memory_location_echo.memorysize, 4)
def _test_bad_echo_ali_exception(self): with self.assertRaises(UnexpectedResponseException): memloc = MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8) self.udsclient.write_memory_by_address(memloc, b'\x66\x77\x88\x99')
def _test_request_denied_exception(self): with self.assertRaises(NegativeResponseException) as handle: memloc = MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8) self.udsclient.write_memory_by_address(memloc, '\x66\x77\x88\x99')
def _test_incomplete_nblock_response_exception(self): memloc = MemoryLocation(address=0x1234, memorysize=0xFF, address_format=16, memorysize_format=8) with self.assertRaises(InvalidResponseException): self.udsclient.request_upload(memory_location=memloc)
def _test_wrong_service_exception(self): with self.assertRaises(UnexpectedResponseException) as handle: memloc = MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8) self.udsclient.write_memory_by_address(memloc, '\x66\x77\x88\x99')
def _test_request_upload_success_lfid(self): memloc = MemoryLocation(address=0x1234, memorysize=0xFF, address_format=16, memorysize_format=8) response = self.udsclient.request_upload(memory_location=memloc) self.assertEqual(response.service_data.max_length, 0xabcd)
def _test_wrong_service_exception(self): with self.assertRaises(UnexpectedResponseException) as handle: self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8))
def _test_request_upload_config_format(self): self.udsclient.set_configs({ u'server_address_format': 32, u'server_memorysize_format': 16 }) memloc = MemoryLocation(address=0x1234, memorysize=0xFF) response = self.udsclient.request_upload(memory_location=memloc) self.assertEqual(response.service_data.max_length, 0xabcd)
def _test_define_by_memloc_success(self): memloc = MemoryLocation(address=0x5678, memorysize=0x45, address_format=16, memorysize_format=8) response = self.udsclient.dynamically_define_did(0xf301, memloc) self.assertEqual(response.service_data.subfunction_echo, 2) self.assertEqual(response.service_data.did_echo, 0xf301)
def _test_request_upload_invalidservice_no_exception(self): self.udsclient.config[u'exception_on_invalid_response'] = False memloc = MemoryLocation(address=0x1234, memorysize=0xFF, address_format=16, memorysize_format=8) response = self.udsclient.request_upload(memory_location=memloc) self.assertFalse(response.valid)
def _test_request_invalid_service_no_exception(self): self.udsclient.config[u'exception_on_invalid_response'] = False response = self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8)) self.assertFalse(response.valid)
def test_type(self): diddef = DynamicDidDefinition() self.assertFalse(diddef.is_by_source_did()) self.assertFalse(diddef.is_by_memory_address()) diddef.add(source_did=0x1234, position=1, memorysize=1) diddef.add(source_did=0x1234, position=2, memorysize=1) self.assertTrue(diddef.is_by_source_did()) self.assertFalse(diddef.is_by_memory_address()) diddef = DynamicDidDefinition() diddef.add(MemoryLocation(address=0x1234, memorysize=1)) diddef.add(MemoryLocation(address=0x1235, memorysize=1)) self.assertFalse(diddef.is_by_source_did()) self.assertTrue(diddef.is_by_memory_address())
def _test_request_upload_success_spr_no_effect(self): with self.udsclient.suppress_positive_response: memloc = MemoryLocation(address=0x1234, memorysize=0xFF, address_format=16, memorysize_format=8) response = self.udsclient.request_upload(memory_location=memloc) self.assertEqual(response.service_data.max_length, 0xabcd)
def _test_config_format(self): self.udsclient.config['server_address_format'] = 32 self.udsclient.config['server_memorysize_format'] = 16 response = self.udsclient.write_memory_by_address(MemoryLocation(address=0x1234, memorysize=4), b'\x66\x77\x88\x99') alfid = AddressAndLengthFormatIdentifier(address_format = self.udsclient.config['server_address_format'], memorysize_format=self.udsclient.config['server_memorysize_format']) self.assertEqual(response.service_data.alfid_echo, alfid.get_byte_as_int()) self.assertEqual(response.service_data.memory_location_echo.address, 0x1234) self.assertEqual(response.service_data.memory_location_echo.memorysize, 4)
def _test_4byte_block(self): response = self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8)) self.assertEqual(response.service_data.memory_block, '\x99\x88\x77\x66')
def _test_request_upload_success_dfi(self): memloc = MemoryLocation(address=0x1234, memorysize=0xFF, address_format=16, memorysize_format=8) dfi = DataFormatIdentifier(compression=5, encryption=2) response = self.udsclient.request_upload(memory_location=memloc, dfi=dfi) self.assertEqual(response.service_data.max_length, 0xabcd)
def _test_request_invalid_service_no_exception(self): self.udsclient.config[u'exception_on_invalid_response'] = False memloc = MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8) response = self.udsclient.write_memory_by_address( memloc, '\x66\x77\x88\x99') self.assertFalse(response.valid)
def _test_request_download_wrongservice_no_exception(self): self.udsclient.config['exception_on_unexpected_response'] = False memloc = MemoryLocation(address=0x1234, memorysize=0xFF, address_format=16, memorysize_format=8) response = self.udsclient.request_download(memory_location=memloc) self.assertTrue(response.valid) self.assertTrue(response.unexpected)
def _test_request_denied_no_exception(self): self.udsclient.config[u'exception_on_negative_response'] = False response = self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8)) self.assertTrue(response.valid) self.assertFalse(response.positive)
def _test_4byte_block_zeropadding_not_ok_exception(self): self.udsclient.config[u'tolerate_zero_padding'] = False for i in xrange(8): with self.assertRaises(UnexpectedResponseException): self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8))
def _test_4byte_block_spr_no_effect(self): with self.udsclient.suppress_positive_response: response = self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8)) self.assertEqual(response.service_data.memory_block, '\x99\x88\x77\x66')
def _test_wrong_service_no_exception(self): self.udsclient.config[u'exception_on_unexpected_response'] = False response = self.udsclient.read_memory_by_address( MemoryLocation(address=0x1234, memorysize=4, address_format=16, memorysize_format=8)) self.assertTrue(response.valid) self.assertTrue(response.unexpected)