Пример #1
0
 def test_memory_write(self):
     request = Packet().push_u16(Protocol.COMMAND_MEMORY_WRITE).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).push_data(self.DATA).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_MEMORY_WRITE).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).add_crc()
     self.expect_transaction(request, response)
     self.protocol.memory_write(self.ADDR, self.DATA)
Пример #2
0
 def test_get_version_crc_response_error(self):
     request = Packet().push_u16(Protocol.COMMAND_GET_VERSION).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_GET_VERSION).push_u16(
         self.VERSION).push_u8(0)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*response"):
         self.protocol.get_version()
Пример #3
0
 def test_register_write(self):
     request = Packet().push_u16(Protocol.COMMAND_REGISTER_WRITE).push_u64(self.ADDR). \
         push_u32(self.REGISTER_DATA).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_REGISTER_WRITE).push_u64(self.ADDR). \
         push_u32(self.REGISTER_DATA).add_crc()
     self.expect_transaction(request, response)
     self.protocol.register_write(self.ADDR, self.REGISTER_DATA)
Пример #4
0
 def test_get_version(self):
     request = Packet().push_u16(Protocol.COMMAND_GET_VERSION).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_GET_VERSION).push_u16(
         self.VERSION).add_crc()
     self.expect_transaction(request, response)
     self.assertEqual(self.protocol.get_version(), self.VERSION,
                      "Invalid version")
Пример #5
0
 def test_recv_all_types(self):
     request = Packet().push_u16(0).add_crc()
     response = Packet().push_u16(0).push_u8(0).push_u16(1).push_u32(2).push_u64(3). \
         push_data(bytes([0, 1, 2, 3])).add_crc()
     self.expect_transaction(request, response)
     result = self.protocol.do_transaction(0, {}, {
         "u8": {
             "type": Protocol.TYPE_U8
         },
         "u16": {
             "type": Protocol.TYPE_U16
         },
         "u32": {
             "type": Protocol.TYPE_U32
         },
         "u64": {
             "type": Protocol.TYPE_U64
         },
         "data": {
             "type": Protocol.TYPE_DATA,
             "length": 4
         },
     })
     self.assertEqual(result["u8"], 0)
     self.assertEqual(result["u16"], 1)
     self.assertEqual(result["u32"], 2)
     self.assertEqual(result["u64"], 3)
     self.assertEqual(result["data"], bytes([0, 1, 2, 3]))
Пример #6
0
 def test_send_all_types(self):
     request = Packet().push_u16(0).push_u8(0).push_u16(1).push_u32(2).push_u64(3). \
         push_data(bytes([0, 1, 2, 3])).add_crc()
     response = Packet().push_u16(0).add_crc()
     self.expect_transaction(request, response)
     self.protocol.do_transaction(
         0, {
             "u8": {
                 "type": Protocol.TYPE_U8,
                 "value": 0
             },
             "u16": {
                 "type": Protocol.TYPE_U16,
                 "value": 1
             },
             "u32": {
                 "type": Protocol.TYPE_U32,
                 "value": 2
             },
             "u64": {
                 "type": Protocol.TYPE_U64,
                 "value": 3
             },
             "data": {
                 "type": Protocol.TYPE_DATA,
                 "value": bytes([0, 1, 2, 3])
             },
         }, {})
Пример #7
0
 def test_memory_read_crc_error(self):
     request = Packet().push_u16(Protocol.COMMAND_MEMORY_READ).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_MEMORY_READ).push_u64(self.ADDR). \
     push_u32(len(self.DATA)).push_data(self.DATA).push_u8(0)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*response"):
         self.protocol.memory_read(self.ADDR, len(self.DATA))
Пример #8
0
 def test_memory_read(self):
     request = Packet().push_u16(Protocol.COMMAND_MEMORY_READ).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_MEMORY_READ).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).push_data(self.DATA).add_crc()
     self.expect_transaction(request, response)
     self.assertEqual(self.protocol.memory_read(self.ADDR, len(self.DATA)),
                      self.DATA, "Invalid data")
Пример #9
0
 def test_register_write_different_data(self):
     request = Packet().push_u16(Protocol.COMMAND_REGISTER_WRITE).push_u64(self.ADDR). \
         push_u32(self.REGISTER_DATA).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_REGISTER_WRITE).push_u64(self.ADDR). \
         push_u32(self.REGISTER_DATA + 1).add_crc()
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Different.*data"):
         self.protocol.register_write(self.ADDR, self.REGISTER_DATA)
Пример #10
0
 def test_register_read_different_address(self):
     request = Packet().push_u16(Protocol.COMMAND_REGISTER_READ).push_u64(self.ADDR). \
         add_crc()
     response = Packet().push_u16(Protocol.COMMAND_REGISTER_READ).push_u64(self.ADDR + 1). \
         push_u32(self.REGISTER_DATA).add_crc()
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Different.*address"):
         self.protocol.register_read(self.ADDR)
Пример #11
0
 def test_register_read_crc_error(self):
     request = Packet().push_u16(Protocol.COMMAND_REGISTER_READ).push_u64(self.ADDR). \
         add_crc()
     response = Packet().push_u16(Protocol.COMMAND_REGISTER_READ).push_u64(self.ADDR). \
         push_u32(self.REGISTER_DATA).push_u8(0)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*response"):
         self.protocol.register_read(self.ADDR)
Пример #12
0
 def test_memory_read_different_address(self):
     request = Packet().push_u16(Protocol.COMMAND_MEMORY_READ).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_MEMORY_READ).push_u64(self.ADDR + 1). \
         push_u32(len(self.DATA)).push_data(self.DATA).add_crc()
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Different.*address"):
         self.protocol.memory_read(self.ADDR, len(self.DATA))
Пример #13
0
 def test_execute_crc_error(self):
     request = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(
         self.ADDR).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(self.ADDR). \
         push_u64(self.RESULT).push_u8(0)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*response"):
         self.protocol.execute(self.ADDR)
Пример #14
0
 def test_get_base_address(self):
     request = Packet().push_u16(
         Protocol.COMMAND_GET_BASE_ADDRESS).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_GET_BASE_ADDRESS).push_u64(self.BASE). \
         add_crc()
     self.expect_transaction(request, response)
     self.assertEqual(self.protocol.get_base_address(), self.BASE,
                      "Invalid base address")
Пример #15
0
 def test_execute_different_address(self):
     request = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(
         self.ADDR).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(self.ADDR + 1). \
         push_u64(self.RESULT).add_crc()
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Different.*address"):
         self.protocol.execute(self.ADDR)
Пример #16
0
 def test_execute(self):
     request = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(
         self.ADDR).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(self.ADDR). \
         push_u64(self.RESULT).add_crc()
     self.expect_transaction(request, response)
     self.assertEqual(self.protocol.execute(self.ADDR), self.RESULT,
                      "Invalid result")
Пример #17
0
 def test_get_base_address_crc_response_error(self):
     request = Packet().push_u16(
         Protocol.COMMAND_GET_BASE_ADDRESS).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_GET_BASE_ADDRESS).push_u64(self.BASE). \
         push_u8(0)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*response"):
         self.protocol.get_base_address()
Пример #18
0
 def test_memory_write_different_length(self):
     request = Packet().push_u16(Protocol.COMMAND_MEMORY_WRITE).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).push_data(self.DATA).add_crc()
     response = Packet().push_u16(Protocol.COMMAND_MEMORY_WRITE).push_u64(self.ADDR). \
         push_u32(len(self.DATA) + 1).add_crc()
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Different.*length"):
         self.protocol.memory_write(self.ADDR, self.DATA)
Пример #19
0
 def test_register_read(self):
     request = Packet().push_u16(Protocol.COMMAND_REGISTER_READ).push_u64(self.ADDR). \
         add_crc()
     response = Packet().push_u16(Protocol.COMMAND_REGISTER_READ).push_u64(self.ADDR). \
         push_u32(self.REGISTER_DATA).add_crc()
     self.expect_transaction(request, response)
     self.assertEqual(self.REGISTER_DATA,
                      self.protocol.register_read(self.ADDR),
                      "Invalid register data")
Пример #20
0
 def test_invalid_recv_type(self):
     request = Packet().push_u16(0).add_crc()
     response = Packet().push_u16(0).add_crc()
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Invalid.*type"):
         self.protocol.do_transaction(
             0, {}, {"test": {
                 "type": 0xffff,
                 "value": 1
             }})
Пример #21
0
 def test_invalid_command(self):
     request = Packet().push_u16(0).add_crc()
     response = TestProtocol.create_error_packet(
         Protocol.ERRORCODE_INVALID_COMMAND)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Invalid.*command.*target"):
         self.protocol.do_transaction(0, {}, {})
Пример #22
0
 def test_register_read_crc_target_error(self):
     request = Packet().push_u16(Protocol.COMMAND_REGISTER_READ).push_u64(self.ADDR). \
         add_crc()
     response = self.create_error_packet(Protocol.ERRORCODE_INVALID_CRC)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*target"):
         self.protocol.register_read(self.ADDR)
Пример #23
0
 def test_register_write_invalid_arg_error(self):
     request = Packet().push_u16(Protocol.COMMAND_REGISTER_WRITE).push_u64(self.ADDR). \
         push_u32(self.REGISTER_DATA).add_crc()
     response = self.create_error_packet(Protocol.ERRORCODE_INVALID_ARG)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Invalid.*argument"):
         self.protocol.register_write(self.ADDR, self.REGISTER_DATA)
Пример #24
0
 def test_get_version_invalid_arg_error(self):
     request = Packet().push_u16(Protocol.COMMAND_GET_VERSION).add_crc()
     response = TestProtocol.create_error_packet(
         Protocol.ERRORCODE_INVALID_ARG)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Invalid.*argument"):
         self.protocol.get_version()
Пример #25
0
 def test_get_version_crc_target_error(self):
     request = Packet().push_u16(Protocol.COMMAND_GET_VERSION).add_crc()
     response = TestProtocol.create_error_packet(
         Protocol.ERRORCODE_INVALID_CRC)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*target"):
         self.protocol.get_version()
Пример #26
0
 def test_memory_write_invalid_arg_error(self):
     request = Packet().push_u16(Protocol.COMMAND_MEMORY_WRITE).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).push_data(self.DATA).add_crc()
     response = TestProtocol.create_error_packet(
         Protocol.ERRORCODE_INVALID_ARG)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Invalid.*argument"):
         self.protocol.memory_write(self.ADDR, self.DATA)
Пример #27
0
 def test_memory_read_crc_target_error(self):
     request = Packet().push_u16(Protocol.COMMAND_MEMORY_READ).push_u64(self.ADDR). \
         push_u32(len(self.DATA)).add_crc()
     response = TestProtocol.create_error_packet(
         Protocol.ERRORCODE_INVALID_CRC)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*target"):
         self.protocol.memory_read(self.ADDR, len(self.DATA))
Пример #28
0
 def test_execute_crc_target_error(self):
     request = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(
         self.ADDR).add_crc()
     response = TestProtocol.create_error_packet(
         Protocol.ERRORCODE_INVALID_CRC)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("CRC.*target"):
         self.protocol.execute(self.ADDR)
Пример #29
0
 def test_execute_invalid_arg_error(self):
     request = Packet().push_u16(Protocol.COMMAND_EXECUTE).push_u64(
         self.ADDR).add_crc()
     response = TestProtocol.create_error_packet(
         Protocol.ERRORCODE_INVALID_ARG)
     self.expect_transaction(request, response)
     with self.expect_protocol_error("Invalid.*argument"):
         self.protocol.execute(self.ADDR)
Пример #30
0
 def create_error_packet(error_code):
     return Packet().push_u16(
         Protocol.COMMAND_ERROR).push_u16(error_code).add_crc()