From eea725b8dabed461582bfd5503afc162989b93ae Mon Sep 17 00:00:00 2001 From: Stefan Allius Date: Sun, 22 Sep 2024 15:00:53 +0200 Subject: [PATCH] remove _forward_buffer --- app/src/gen3/talent.py | 15 ++- app/src/gen3plus/solarman_v5.py | 8 +- app/src/messages.py | 1 - app/tests/test_solarman.py | 136 ++++++++++++------------- app/tests/test_talent.py | 175 +++++++++++++++----------------- 5 files changed, 154 insertions(+), 181 deletions(-) diff --git a/app/src/gen3/talent.py b/app/src/gen3/talent.py index 9c900fd..87c8a21 100644 --- a/app/src/gen3/talent.py +++ b/app/src/gen3/talent.py @@ -6,7 +6,7 @@ from tzlocal import get_localzone if __name__ == "app.src.gen3.talent": from app.src.async_ifc import AsyncIfc - from app.src.messages import hex_dump_memory, Message, State + from app.src.messages import Message, State from app.src.modbus import Modbus from app.src.my_timer import Timer from app.src.config import Config @@ -14,7 +14,7 @@ if __name__ == "app.src.gen3.talent": from app.src.infos import Register else: # pragma: no cover from async_ifc import AsyncIfc - from messages import hex_dump_memory, Message, State + from messages import Message, State from modbus import Modbus from my_timer import Timer from config import Config @@ -171,9 +171,8 @@ class Talent(Message): if tsun['enabled']: buflen = self.header_len+self.data_len buffer = self.ifc.read.peek(buflen) - self._forward_buffer += buffer - hex_dump_memory(logging.DEBUG, 'Store for forwarding:', - buffer, buflen) + self.ifc.forward += buffer + self.ifc.forward.logging(logging.DEBUG, 'Store for forwarding:') fnc = self.switch.get(self.msg_id, self.msg_unknown) logger.info(self.__flow_str(self.server_side, 'forwrd') + @@ -187,10 +186,8 @@ class Talent(Message): if tsun['enabled']: _len = len(buffer) struct.pack_into('!l', buffer, 0, _len-4) - buflen = _len - self._forward_buffer += buffer - hex_dump_memory(logging.INFO, 'Store for forwarding:', - buffer, buflen) + self.ifc.forward += buffer + self.ifc.forward.logging(logging.INFO, 'Store for forwarding:') fnc = self.switch.get(self.msg_id, self.msg_unknown) logger.info(self.__flow_str(self.server_side, 'forwrd') + diff --git a/app/src/gen3plus/solarman_v5.py b/app/src/gen3plus/solarman_v5.py index 031cd9d..2129fae 100644 --- a/app/src/gen3plus/solarman_v5.py +++ b/app/src/gen3plus/solarman_v5.py @@ -264,9 +264,8 @@ class SolarmanV5(Message): return tsun = Config.get('solarman') if tsun['enabled']: - self._forward_buffer += buffer[:buflen] - hex_dump_memory(logging.DEBUG, 'Store for forwarding:', - buffer, buflen) + self.ifc.forward += buffer[:buflen] + self.ifc.forward.logging(logging.DEBUG, 'Store for forwarding:') fnc = self.switch.get(self.control, self.msg_unknown) logger.info(self.__flow_str(self.server_side, 'forwrd') + @@ -467,8 +466,9 @@ class SolarmanV5(Message): 0x0002, 0, 0, 0, at_cmd.encode('utf-8'), b'\r') self.__finish_send_msg() + self.ifc.write.logging(logging.INFO, 'Send AT Command:') try: - await self.async_write('Send AT Command:') + self.ifc.write() except Exception: self.ifc.write.clear() diff --git a/app/src/messages.py b/app/src/messages.py index cf094af..eef1dff 100644 --- a/app/src/messages.py +++ b/app/src/messages.py @@ -107,7 +107,6 @@ class Message(metaclass=IterRegistry): self.unique_id = 0 self.node_id = '' # will be overwritten in the child class's __init__ self.sug_area = '' - self._forward_buffer = bytearray(0) self.new_data = {} self.state = State.init self.shutdown_started = False diff --git a/app/tests/test_solarman.py b/app/tests/test_solarman.py index e5296f5..68a3d23 100644 --- a/app/tests/test_solarman.py +++ b/app/tests/test_solarman.py @@ -61,6 +61,8 @@ class MemoryStream(SolarmanV5): self.msg_recvd = [] def write_cb(self): + if self.test_exception_async_write: + raise RuntimeError("Peer closed.") self.sent_pdu = self.ifc.write.get() def _timestamp(self): @@ -96,10 +98,6 @@ class MemoryStream(SolarmanV5): pass # ignore exceptions here return copied_bytes - async def async_write(self, headline=''): - if self.test_exception_async_write: - raise RuntimeError("Peer closed.") - def createClientStream(self, msg, chunks = (0,)): c = MemoryStream(msg, chunks, False) self.remote_stream = c @@ -691,7 +689,7 @@ def test_read_message(device_ind_msg): assert m.data_len == 0xd4 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -712,7 +710,7 @@ def test_invalid_start_byte(invalid_start_byte, device_ind_msg): assert m.data_len == 0xd4 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 1 m.close() @@ -732,7 +730,7 @@ def test_invalid_stop_byte(invalid_stop_byte): assert m.data_len == 0xd4 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 1 m.close() @@ -757,7 +755,7 @@ def test_invalid_stop_byte2(invalid_stop_byte, device_ind_msg): assert m.unique_id == None assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 1 m.close() @@ -779,7 +777,7 @@ def test_invalid_stop_start_byte(invalid_stop_byte, invalid_start_byte): assert m.data_len == 0xd4 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 1 m.close() @@ -803,7 +801,7 @@ def test_invalid_checksum(invalid_checksum, device_ind_msg): assert m.msg_recvd[1]['data_len']==0xd4 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 1 m.close() @@ -824,7 +822,7 @@ def test_read_message_twice(config_no_tsun_inv1, device_ind_msg, device_rsp_msg) assert m.msg_recvd[1]['seq']=='01:01' assert m.msg_recvd[1]['data_len']==0xd4 assert m.ifc.write.get()==device_rsp_msg+device_rsp_msg - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -895,7 +893,7 @@ def test_read_two_messages(config_tsun_allow_all, device_ind_msg, device_rsp_msg assert m.msg_recvd[1]['data_len']==0x199 assert '02b0' == m.db.get_db_value(Register.SENSOR_LIST, None) assert 0x02b0 == m.sensor_list - assert m._forward_buffer==device_ind_msg+inverter_ind_msg + assert m.ifc.forward.get()==device_ind_msg+inverter_ind_msg assert m.ifc.write.get()==device_rsp_msg+inverter_rsp_msg m._init_new_client_conn() @@ -920,7 +918,7 @@ def test_read_two_messages2(config_tsun_allow_all, inverter_ind_msg, inverter_in assert m.msg_recvd[1]['seq']=='03:03' assert m.msg_recvd[1]['data_len']==0x199 assert m.time_ofs == 0x33e447a0 - assert m._forward_buffer==inverter_ind_msg+inverter_ind_msg_81 + assert m.ifc.forward.get()==inverter_ind_msg+inverter_ind_msg_81 assert m.ifc.write.get()==inverter_rsp_msg+inverter_rsp_msg_81 m._init_new_client_conn() @@ -949,7 +947,7 @@ def test_read_two_messages3(config_tsun_allow_all, device_ind_msg2, device_rsp_m assert m.msg_recvd[1]['data_len']==0xd4 assert '02b0' == m.db.get_db_value(Register.SENSOR_LIST, None) assert 0x02b0 == m.sensor_list - assert m._forward_buffer==inverter_ind_msg+device_ind_msg2 + assert m.ifc.forward.get()==inverter_ind_msg+device_ind_msg2 assert m.ifc.write.get()==inverter_rsp_msg+device_rsp_msg2 m._init_new_client_conn() @@ -970,7 +968,7 @@ def test_unkown_frame_code(config_tsun_inv1, inverter_ind_msg_81, inverter_rsp_m assert m.data_len == 0x199 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==inverter_rsp_msg_81 - assert m._forward_buffer==inverter_ind_msg_81 + assert m.ifc.forward.get()==inverter_ind_msg_81 assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -988,7 +986,7 @@ def test_unkown_message(config_tsun_inv1, unknown_msg): assert m.data_len == 0x0a assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==unknown_msg + assert m.ifc.forward.get()==unknown_msg assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1006,7 +1004,7 @@ def test_device_rsp(config_tsun_inv1, device_rsp_msg): assert m.data_len == 0x0a assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1024,7 +1022,7 @@ def test_inverter_rsp(config_tsun_inv1, inverter_rsp_msg): assert m.data_len == 0x0a assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1041,7 +1039,7 @@ def test_heartbeat_ind(config_tsun_inv1, heartbeat_ind_msg, heartbeat_rsp_msg): assert m.data_len == 0x01 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==heartbeat_rsp_msg - assert m._forward_buffer==heartbeat_ind_msg + assert m.ifc.forward.get()==heartbeat_ind_msg assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1059,7 +1057,7 @@ def test_heartbeat_ind2(config_tsun_inv1, heartbeat_ind_msg, heartbeat_rsp_msg): assert m.data_len == 0x01 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==heartbeat_rsp_msg - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1077,7 +1075,7 @@ def test_heartbeat_rsp(config_tsun_inv1, heartbeat_rsp_msg): assert m.data_len == 0x0a assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1094,13 +1092,13 @@ def test_sync_start_ind(config_tsun_inv1, sync_start_ind_msg, sync_start_rsp_msg assert m.data_len == 47 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==sync_start_rsp_msg - assert m._forward_buffer==sync_start_ind_msg + assert m.ifc.forward.peek()==sync_start_ind_msg assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.seq.server_side = False # simulate forawding to TSUN cloud - m._update_header(m._forward_buffer) + m._update_header(m.ifc.forward.peek()) assert str(m.seq) == '0d:0e' # value after forwarding indication - assert m._forward_buffer==sync_start_fwd_msg + assert m.ifc.forward.get()==sync_start_fwd_msg m.close() @@ -1118,7 +1116,7 @@ def test_sync_start_rsp(config_tsun_inv1, sync_start_rsp_msg): assert m.data_len == 0x0a assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1135,7 +1133,7 @@ def test_sync_end_ind(config_tsun_inv1, sync_end_ind_msg, sync_end_rsp_msg): assert m.data_len == 60 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==sync_end_rsp_msg - assert m._forward_buffer==sync_end_ind_msg + assert m.ifc.forward.get()==sync_end_ind_msg assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1153,7 +1151,7 @@ def test_sync_end_rsp(config_tsun_inv1, sync_end_rsp_msg): assert m.data_len == 0x0a assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 m.close() @@ -1282,13 +1280,11 @@ async def test_msg_build_modbus_req(config_tsun_inv1, device_ind_msg, device_rsp assert m.control == 0x4110 assert str(m.seq) == '01:01' assert m.ifc.write.get()==device_rsp_msg - assert m._forward_buffer==device_ind_msg + assert m.ifc.forward.get()==device_ind_msg - m.ifc.write.clear() # clear send buffer for next test - m._forward_buffer = bytearray(0) # clear send buffer for next test await m.send_modbus_cmd(Modbus.WRITE_SINGLE_REG, 0x2008, 0, logging.DEBUG) assert 0 == m.send_msg_ofs - assert m._forward_buffer == b'' + assert m.ifc.forward.get() == b'' assert m.sent_pdu == b'' # modbus command must be ignore, cause connection is still not up assert m.ifc.write.get() == b'' # modbus command must be ignore, cause connection is still not up @@ -1302,20 +1298,13 @@ async def test_msg_build_modbus_req(config_tsun_inv1, device_ind_msg, device_rsp assert m.msg_recvd[1]['seq']=='02:02' assert m.ifc.read.get()==b'' assert m.ifc.write.get()==inverter_rsp_msg - assert m._forward_buffer==inverter_ind_msg + assert m.ifc.forward.get()==inverter_ind_msg - m._forward_buffer = bytearray(0) # clear send buffer for next test await m.send_modbus_cmd(Modbus.WRITE_SINGLE_REG, 0x2008, 0, logging.DEBUG) assert 0 == m.send_msg_ofs - assert m._forward_buffer == b'' + assert m.ifc.forward.get() == b'' assert m.sent_pdu == msg_modbus_cmd assert m.ifc.write.get()== b'' - - m.test_exception_async_write = True - await m.send_modbus_cmd(Modbus.WRITE_SINGLE_REG, 0x2008, 0, logging.DEBUG) - assert 0 == m.send_msg_ofs - assert m._forward_buffer == b'' - assert m.ifc.write.get() == b'' m.close() @pytest.mark.asyncio @@ -1326,12 +1315,12 @@ async def test_at_cmd(config_tsun_allow_all, device_ind_msg, device_rsp_msg, inv assert m.control == 0x4110 assert str(m.seq) == '01:01' assert m.ifc.write.get()==device_rsp_msg - assert m._forward_buffer==device_ind_msg + assert m.ifc.forward.get()==device_ind_msg - m._forward_buffer = bytearray(0) # clear send buffer for next test await m.send_at_cmd('AT+TIME=214028,1,60,120') assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' + assert m.sent_pdu == b'' assert str(m.seq) == '01:01' assert m.mqtt.key == '' assert m.mqtt.data == "" @@ -1341,12 +1330,14 @@ async def test_at_cmd(config_tsun_allow_all, device_ind_msg, device_rsp_msg, inv assert m.control == 0x4210 assert str(m.seq) == '02:02' assert m.ifc.write.get()==inverter_rsp_msg - assert m._forward_buffer==inverter_ind_msg + assert m.ifc.forward.get()==inverter_ind_msg - m._forward_buffer = bytearray(0) # clear send buffer for next test await m.send_at_cmd('AT+TIME=214028,1,60,120') - assert m.ifc.write.get()==at_command_ind_msg - assert m._forward_buffer==b'' + assert m.ifc.forward.get() == b'' + assert m.ifc.write.get()== b'' + assert m.sent_pdu == at_command_ind_msg + m.sent_pdu = bytearray() + assert str(m.seq) == '02:03' assert m.mqtt.key == '' assert m.mqtt.data == "" @@ -1357,15 +1348,18 @@ async def test_at_cmd(config_tsun_allow_all, device_ind_msg, device_rsp_msg, inv assert str(m.seq) == '03:03' assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.key == 'at_resp' assert m.data == "+ok" + m.sent_pdu = bytearray() m.test_exception_async_write = True await m.send_at_cmd('AT+TIME=214028,1,60,120') + assert m.sent_pdu == b'' assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' + assert m.sent_pdu == b'' assert str(m.seq) == '03:04' assert m.forward_at_cmd_resp == False assert m.mqtt.key == '' @@ -1380,12 +1374,11 @@ async def test_at_cmd_blocked(config_tsun_allow_all, device_ind_msg, device_rsp_ assert m.control == 0x4110 assert str(m.seq) == '01:01' assert m.ifc.write.get()==device_rsp_msg - assert m._forward_buffer==device_ind_msg + assert m.ifc.forward.get()==device_ind_msg - m._forward_buffer = bytearray(0) # clear send buffer for next test await m.send_at_cmd('AT+WEBU') assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert str(m.seq) == '01:01' assert m.mqtt.key == '' assert m.mqtt.data == "" @@ -1396,13 +1389,12 @@ async def test_at_cmd_blocked(config_tsun_allow_all, device_ind_msg, device_rsp_ assert str(m.seq) == '02:02' assert m.ifc.read.get()==b'' assert m.ifc.write.get()==inverter_rsp_msg - assert m._forward_buffer==inverter_ind_msg + assert m.ifc.forward.get()==inverter_ind_msg - m._forward_buffer = bytearray(0) # clear send buffer for next test await m.send_at_cmd('AT+WEBU') assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert str(m.seq) == '02:02' assert m.forward_at_cmd_resp == False assert m.mqtt.key == 'at_resp' @@ -1426,7 +1418,7 @@ def test_at_cmd_ind(config_tsun_inv1, at_command_ind_msg): assert m.data_len == 39 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==at_command_ind_msg + assert m.ifc.forward.get()==at_command_ind_msg assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 assert m.db.stat['proxy']['AT_Command'] == 1 assert m.db.stat['proxy']['AT_Command_Blocked'] == 0 @@ -1450,7 +1442,7 @@ def test_at_cmd_ind_block(config_tsun_inv1, at_command_ind_msg_block): assert m.data_len == 23 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 assert m.db.stat['proxy']['AT_Command'] == 0 assert m.db.stat['proxy']['AT_Command_Blocked'] == 1 @@ -1470,7 +1462,7 @@ def test_msg_at_command_rsp1(config_tsun_inv1, at_command_rsp_msg): assert str(m.seq) == '03:03' assert m.header_len==11 assert m.data_len==17 - assert m._forward_buffer==at_command_rsp_msg + assert m.ifc.forward.get()==at_command_rsp_msg assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -1489,7 +1481,7 @@ def test_msg_at_command_rsp2(config_tsun_inv1, at_command_rsp_msg): assert str(m.seq) == '03:03' assert m.header_len==11 assert m.data_len==17 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -1514,7 +1506,7 @@ def test_msg_modbus_req(config_tsun_inv1, msg_modbus_cmd, msg_modbus_cmd_fwd): assert str(c.seq) == '03:02' assert c.header_len==11 assert c.data_len==23 - assert c._forward_buffer==b'' + assert c.ifc.forward.get()==b'' assert c.ifc.write.get()==b'' assert m.sent_pdu == msg_modbus_cmd_fwd assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 @@ -1541,7 +1533,7 @@ def test_msg_modbus_req2(config_tsun_inv1, msg_modbus_cmd_crc_err): assert str(c.seq) == '03:02' assert c.header_len==11 assert c.data_len==23 - assert c._forward_buffer==b'' + assert c.ifc.forward.get()==b'' assert c.ifc.write.get()==b'' assert m.sent_pdu==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 @@ -1564,7 +1556,7 @@ def test_msg_unknown_cmd_req(config_tsun_inv1, msg_unknown_cmd): assert str(m.seq) == '03:02' assert m.header_len==11 assert m.data_len==23 - assert m._forward_buffer==msg_unknown_cmd + assert m.ifc.forward.get()==msg_unknown_cmd assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['AT_Command'] == 0 @@ -1585,7 +1577,7 @@ def test_msg_modbus_rsp1(config_tsun_inv1, msg_modbus_rsp): assert str(m.seq) == '03:03' assert m.header_len==11 assert m.data_len==59 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -1609,20 +1601,19 @@ def test_msg_modbus_rsp2(config_tsun_inv1, msg_modbus_rsp): assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.mb.err == 0 assert m.msg_count == 1 - assert m._forward_buffer==msg_modbus_rsp + assert m.ifc.forward.get()==msg_modbus_rsp assert m.ifc.write.get()==b'' assert m.db.get_db_value(Register.VERSION) == 'V4.0.10' assert m.new_data['inverter'] == True m.new_data['inverter'] = False m.mb.req_pend = True - m._forward_buffer = bytearray() m.append_msg(msg_modbus_rsp) m.read() # read complete msg, and dispatch msg assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.mb.err == 0 assert m.msg_count == 2 - assert m._forward_buffer==msg_modbus_rsp + assert m.ifc.forward.get()==msg_modbus_rsp assert m.ifc.write.get()==b'' assert m.db.get_db_value(Register.VERSION) == 'V4.0.10' assert m.new_data['inverter'] == False @@ -1647,19 +1638,18 @@ def test_msg_modbus_rsp3(config_tsun_inv1, msg_modbus_rsp): assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.mb.err == 0 assert m.msg_count == 1 - assert m._forward_buffer==msg_modbus_rsp + assert m.ifc.forward.get()==msg_modbus_rsp assert m.ifc.write.get()==b'' assert m.db.get_db_value(Register.VERSION) == 'V4.0.10' assert m.new_data['inverter'] == True m.new_data['inverter'] = False - m._forward_buffer = bytearray() m.append_msg(msg_modbus_rsp) m.read() # read complete msg, and dispatch msg assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.mb.err == 5 assert m.msg_count == 2 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.get_db_value(Register.VERSION) == 'V4.0.10' assert m.new_data['inverter'] == False @@ -1678,7 +1668,7 @@ def test_msg_unknown_rsp(config_tsun_inv1, msg_unknown_cmd_rsp): assert str(m.seq) == '03:03' assert m.header_len==11 assert m.data_len==59 - assert m._forward_buffer==msg_unknown_cmd_rsp + assert m.ifc.forward.get()==msg_unknown_cmd_rsp assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -1692,7 +1682,7 @@ def test_msg_modbus_invalid(config_tsun_inv1, msg_modbus_invalid): m.read() # read complete msg, and dispatch msg assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.msg_count == 1 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -1715,7 +1705,7 @@ def test_msg_modbus_fragment(config_tsun_inv1, msg_modbus_rsp): m.read() # read complete msg, and dispatch msg assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.msg_count == 1 - assert m._forward_buffer==msg_modbus_rsp + assert m.ifc.forward.get()==msg_modbus_rsp assert m.ifc.write.get()== b'' assert m.mb.err == 0 assert m.modbus_elms == 20-1 # register 0x300d is unknown, so one value can't be mapped @@ -1741,7 +1731,7 @@ async def test_modbus_polling(config_tsun_inv1, heartbeat_ind_msg, heartbeat_rsp assert m.data_len == 0x01 assert m.ifc.read.get()==b'' assert m.ifc.write.get()==heartbeat_rsp_msg - assert m._forward_buffer==heartbeat_ind_msg + assert m.ifc.forward.get()==heartbeat_ind_msg assert m.db.stat['proxy']['Invalid_Msg_Format'] == 0 assert m.state == State.up diff --git a/app/tests/test_talent.py b/app/tests/test_talent.py index 35e4a1f..4bea5db 100644 --- a/app/tests/test_talent.py +++ b/app/tests/test_talent.py @@ -34,7 +34,6 @@ class MemoryStream(Talent): self.msg_count = 0 self.addr = 'Test: SrvSide' self.send_msg_ofs = 0 - self.test_exception_async_write = False self.msg_recvd = [] self.remote_stream = None @@ -90,10 +89,6 @@ class MemoryStream(Talent): self.msg_count += 1 - async def async_write(self, headline=''): - if self.test_exception_async_write: - raise RuntimeError("Peer closed.") - @pytest.fixture @@ -746,7 +741,7 @@ def test_read_message(msg_contact_info): assert m.msg_id==0 assert m.header_len==23 assert m.data_len==25 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' m.close() def test_read_message_twice(config_no_tsun_inv1, msg_inverter_ind): @@ -766,7 +761,7 @@ def test_read_message_twice(config_no_tsun_inv1, msg_inverter_ind): assert m.msg_recvd[1]['data_len']==120 assert m.id_str == b"R170000000000001" assert m.unique_id == 'R170000000000001' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' m.close() def test_read_message_long_id(msg_contact_info_long_id): @@ -851,7 +846,7 @@ def test_read_two_messages(config_tsun_allow_all, msg2_contact_info,msg_contact_ assert m.msg_recvd[1]['msg_id']==0 assert m.msg_recvd[1]['header_len']==23 assert m.msg_recvd[1]['data_len']==25 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==msg_contact_rsp + msg_contact_rsp2 assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 @@ -876,7 +871,7 @@ def test_conttact_req(config_tsun_allow_all, msg_contact_info, msg_contact_rsp): assert m.msg_id==0 assert m.header_len==23 assert m.data_len==25 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==msg_contact_rsp m.close() @@ -894,7 +889,7 @@ def test_contact_broken_req(config_tsun_allow_all, msg_contact_info_broken, msg_ assert m.msg_id==0 assert m.header_len==23 assert m.data_len==23 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==msg_contact_rsp m.close() @@ -912,7 +907,7 @@ def test_conttact_req(config_tsun_allow_all, msg_contact_info, msg_contact_rsp): assert m.msg_id==0 assert m.header_len==23 assert m.data_len==25 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==msg_contact_rsp m.close() @@ -930,7 +925,7 @@ def test_contact_broken_req(config_tsun_allow_all, msg_contact_info_broken, msg_ assert m.msg_id==0 assert m.header_len==23 assert m.data_len==23 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==msg_contact_rsp m.close() @@ -949,7 +944,7 @@ def test_msg_contact_resp(config_tsun_inv1, msg_contact_rsp): assert m.msg_id==0 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -969,7 +964,7 @@ def test_msg_contact_resp_2(config_tsun_inv1, msg_contact_rsp): assert m.msg_id==0 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==msg_contact_rsp + assert m.ifc.forward.get()==msg_contact_rsp assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -989,7 +984,7 @@ def test_msg_contact_resp_3(config_tsun_inv1, msg_contact_rsp): assert m.msg_id==0 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==msg_contact_rsp + assert m.ifc.forward.get()==msg_contact_rsp assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1007,7 +1002,7 @@ def test_msg_contact_invalid(config_tsun_inv1, msg_contact_invalid): assert m.msg_id==0 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==msg_contact_invalid + assert m.ifc.forward.get()==msg_contact_invalid assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 m.close() @@ -1028,7 +1023,7 @@ def test_msg_get_time(config_tsun_inv1, msg_get_time): assert m.ts_offset==0 assert m.data_len==0 assert m.state==State.pend - assert m._forward_buffer==msg_get_time + assert m.ifc.forward.get()==msg_get_time assert m.ifc.write.get()==b'\x00\x00\x00\x1b\x10R170000000000001\x91"\x00\x00\x01\x89\xc6,_\x00' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1049,7 +1044,7 @@ def test_msg_get_time_autark(config_no_tsun_inv1, msg_get_time): assert m.ts_offset==0 assert m.data_len==0 assert m.state==State.received - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==bytearray(b'\x00\x00\x00\x1b\x10R170000000000001\x91"\x00\x00\x01\x89\xc6,_\x00') assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1073,7 +1068,7 @@ def test_msg_time_resp(config_tsun_inv1, msg_time_rsp): assert m.ts_offset==3600000 assert s.ts_offset==3600000 assert m.data_len==8 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.remote_stream = None @@ -1094,7 +1089,7 @@ def test_msg_time_resp_autark(config_no_tsun_inv1, msg_time_rsp): assert m.header_len==23 assert m.ts_offset==3600000 assert m.data_len==8 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1113,7 +1108,7 @@ def test_msg_time_inv_resp(config_tsun_inv1, msg_time_rsp_inv): assert m.header_len==23 assert m.ts_offset==0 assert m.data_len==4 - assert m._forward_buffer==msg_time_rsp_inv + assert m.ifc.forward.get()==msg_time_rsp_inv assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1132,7 +1127,7 @@ def test_msg_time_invalid(config_tsun_inv1, msg_time_invalid): assert m.header_len==23 assert m.ts_offset==0 assert m.data_len==0 - assert m._forward_buffer==msg_time_invalid + assert m.ifc.forward.get()==msg_time_invalid assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 m.close() @@ -1151,7 +1146,7 @@ def test_msg_time_invalid_autark(config_no_tsun_inv1, msg_time_invalid): assert m.ts_offset==0 assert m.header_len==23 assert m.data_len==0 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 m.close() @@ -1175,7 +1170,7 @@ def test_msg_act_time(config_no_modbus_poll, msg_act_time, msg_act_time_ack): assert m.header_len==23 assert m.data_len==9 assert m.state == State.up - assert m._forward_buffer==msg_act_time + assert m.ifc.forward.get()==msg_act_time assert m.ifc.write.get()==msg_act_time_ack assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert 125 == m.db.get_db_value(Register.POLLING_INTERVAL, 0) @@ -1199,7 +1194,7 @@ def test_msg_act_time2(config_tsun_inv1, msg_act_time, msg_act_time_ack): assert m.ts_offset==0 assert m.header_len==23 assert m.data_len==9 - assert m._forward_buffer==msg_act_time + assert m.ifc.forward.get()==msg_act_time assert m.ifc.write.get()==msg_act_time_ack assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert 123 == m.db.get_db_value(Register.POLLING_INTERVAL, 0) @@ -1220,7 +1215,7 @@ def test_msg_act_time_ofs(config_tsun_inv1, msg_act_time, msg_act_time_ofs, msg_ assert m.ts_offset==3600 assert m.header_len==23 assert m.data_len==9 - assert m._forward_buffer==msg_act_time_ofs + assert m.ifc.forward.get()==msg_act_time_ofs assert m.ifc.write.get()==msg_act_time_ack assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1240,7 +1235,7 @@ def test_msg_act_time_ofs2(config_tsun_inv1, msg_act_time, msg_act_time_ofs, msg assert m.ts_offset==-3600 assert m.header_len==23 assert m.data_len==9 - assert m._forward_buffer==msg_act_time + assert m.ifc.forward.get()==msg_act_time assert m.ifc.write.get()==msg_act_time_ack assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1260,7 +1255,7 @@ def test_msg_act_time_autark(config_no_tsun_inv1, msg_act_time, msg_act_time_ack assert m.ts_offset==0 assert m.header_len==23 assert m.data_len==9 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==msg_act_time_ack assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1278,7 +1273,7 @@ def test_msg_act_time_ack(config_tsun_inv1, msg_act_time_ack): assert m.msg_id==153 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1296,7 +1291,7 @@ def test_msg_act_time_cmd(config_tsun_inv1, msg_act_time_cmd): assert m.msg_id==153 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==msg_act_time_cmd + assert m.ifc.forward.get()==msg_act_time_cmd assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 m.close() @@ -1314,7 +1309,7 @@ def test_msg_act_time_inv(config_tsun_inv1, msg_act_time_inv): assert m.msg_id==153 assert m.header_len==23 assert m.data_len==8 - assert m._forward_buffer==msg_act_time_inv + assert m.ifc.forward.get()==msg_act_time_inv assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1333,11 +1328,11 @@ def test_msg_cntrl_ind(config_tsun_inv1, msg_controller_ind, msg_controller_ind_ assert m.header_len==23 assert m.data_len==284 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_controller_ind + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.peek()==msg_controller_ind m.ts_offset = -4096 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_controller_ind_ts_offs + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_controller_ind_ts_offs assert m.ifc.write.get()==msg_controller_ack assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1355,7 +1350,7 @@ def test_msg_cntrl_ack(config_tsun_inv1, msg_controller_ack): assert m.msg_id==113 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1374,11 +1369,11 @@ def test_msg_cntrl_invalid(config_tsun_inv1, msg_controller_invalid): assert m.header_len==23 assert m.data_len==1 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_controller_invalid + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.peek()==msg_controller_invalid m.ts_offset = -4096 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_controller_invalid + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_controller_invalid assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 m.close() @@ -1398,11 +1393,11 @@ def test_msg_inv_ind(config_tsun_inv1, msg_inverter_ind, msg_inverter_ind_ts_off assert m.header_len==23 assert m.data_len==120 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_inverter_ind + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.peek()==msg_inverter_ind m.ts_offset = +256 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_inverter_ind_ts_offs + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_inverter_ind_ts_offs assert m.ifc.write.get()==msg_inverter_ack assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1425,8 +1420,8 @@ def test_msg_inv_ind1(config_tsun_inv1, msg_inverter_ind2, msg_inverter_ind_ts_o assert m.header_len==23 assert m.data_len==1263 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_inverter_ind2 + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_inverter_ind2 assert m.ifc.write.get()==msg_inverter_ack assert m.db.get_db_value(Register.TS_GRID) == 1691243349 m.close() @@ -1449,8 +1444,8 @@ def test_msg_inv_ind2(config_tsun_inv1, msg_inverter_ind_new, msg_inverter_ind_t assert m.header_len==23 assert m.data_len==1165 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_inverter_ind_new + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_inverter_ind_new assert m.ifc.write.get()==msg_inverter_ack assert m.db.get_db_value(Register.INVERTER_STATUS) == None assert m.db.get_db_value(Register.TS_GRID) == None @@ -1477,8 +1472,8 @@ def test_msg_inv_ind3(config_tsun_inv1, msg_inverter_ind_0w, msg_inverter_ack): assert m.header_len==23 assert m.data_len==1263 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_inverter_ind_0w + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_inverter_ind_0w assert m.ifc.write.get()==msg_inverter_ack assert m.db.get_db_value(Register.INVERTER_STATUS) == 1 assert isclose(m.db.db['grid']['Output_Power'], 0.5) @@ -1501,7 +1496,7 @@ def test_msg_inv_ack(config_tsun_inv1, msg_inverter_ack): assert m.msg_id==4 assert m.header_len==23 assert m.data_len==1 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -1520,11 +1515,11 @@ def test_msg_inv_invalid(config_tsun_inv1, msg_inverter_invalid): assert m.header_len==23 assert m.data_len==1 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_inverter_invalid + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.peek()==msg_inverter_invalid m.ts_offset = 256 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_inverter_invalid + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_inverter_invalid assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 m.close() @@ -1544,11 +1539,11 @@ def test_msg_ota_req(config_tsun_inv1, msg_ota_req): assert m.header_len==23 assert m.data_len==259 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_ota_req + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.peek()==msg_ota_req m.ts_offset = 4096 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_ota_req + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_ota_req assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['OTA_Start_Msg'] == 1 @@ -1571,11 +1566,11 @@ def test_msg_ota_ack(config_tsun_inv1, msg_ota_ack): assert m.header_len==23 assert m.data_len==1 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_ota_ack + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.peek()==msg_ota_ack m.ts_offset = 256 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_ota_ack + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.get()==msg_ota_ack assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['OTA_Start_Msg'] == 0 @@ -1596,11 +1591,11 @@ def test_msg_ota_invalid(config_tsun_inv1, msg_ota_invalid): assert m.header_len==23 assert m.data_len==1 m.ts_offset = 0 - m._update_header(m._forward_buffer) - assert m._forward_buffer==msg_ota_invalid + m._update_header(m.ifc.forward.peek()) + assert m.ifc.forward.peek()==msg_ota_invalid m.ts_offset = 4096 - assert m._forward_buffer==msg_ota_invalid - m._update_header(m._forward_buffer) + assert m.ifc.forward.get()==msg_ota_invalid + m._update_header(m.ifc.forward.peek()) assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 assert m.db.stat['proxy']['OTA_Start_Msg'] == 0 @@ -1619,7 +1614,7 @@ def test_msg_unknown(config_tsun_inv1, msg_unknown): assert m.msg_id==23 assert m.header_len==23 assert m.data_len==4 - assert m._forward_buffer==msg_unknown + assert m.ifc.forward.get()==msg_unknown assert m.ifc.write.get()==b'' assert 1 == m.db.stat['proxy']['Unknown_Msg'] m.close() @@ -1744,10 +1739,10 @@ def test_msg_modbus_req(config_tsun_inv1, msg_modbus_cmd): assert c.msg_id==119 assert c.header_len==23 assert c.data_len==13 - assert c._forward_buffer==b'' + assert c.ifc.forward.get()==b'' assert c.ifc.write.get()==b'' assert m.id_str == b"R170000000000001" - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.sent_pdu == msg_modbus_cmd assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 @@ -1774,10 +1769,10 @@ def test_msg_modbus_req2(config_tsun_inv1, msg_modbus_cmd): assert c.msg_id==119 assert c.header_len==23 assert c.data_len==13 - assert c._forward_buffer==b'' + assert c.ifc.forward.get()==b'' assert c.ifc.write.get()==b'' assert m.id_str == b"R170000000000001" - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.sent_pdu == b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 @@ -1803,9 +1798,9 @@ def test_msg_modbus_req3(config_tsun_inv1, msg_modbus_cmd_crc_err): assert c.msg_id==119 assert c.header_len==23 assert c.data_len==13 - assert c._forward_buffer==b'' + assert c.ifc.forward.get()==b'' assert c.ifc.write.get()==b'' - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.sent_pdu ==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 @@ -1828,7 +1823,7 @@ def test_msg_modbus_rsp1(config_tsun_inv1, msg_modbus_rsp): assert m.msg_id==119 assert m.header_len==23 assert m.data_len==13 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -1850,7 +1845,7 @@ def test_msg_modbus_cloud_rsp(config_tsun_inv1, msg_modbus_rsp): assert m.msg_id==119 assert m.header_len==23 assert m.data_len==13 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Msg'] == 1 assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 @@ -1878,7 +1873,7 @@ def test_msg_modbus_rsp2(config_tsun_inv1, msg_modbus_rsp20): assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.mb.err == 5 assert m.msg_count == 2 - assert m._forward_buffer==msg_modbus_rsp20 + assert m.ifc.forward.get()==msg_modbus_rsp20 assert m.ifc.write.get()==b'' assert m.db.db == {'collector': {'Serial_Number': 'R170000000000001'}, 'inverter': {'Version': 'V5.1.09', 'Rated_Power': 300}, 'grid': {'Timestamp': m._utc(), 'Voltage': 225.9, 'Current': 0.41, 'Frequency': 49.99, 'Output_Power': 94.8}, 'env': {'Inverter_Temp': 22}, 'input': {'Timestamp': m._utc(), 'pv1': {'Voltage': 0.8, 'Current': 0.0, 'Power': 0.0}, 'pv2': {'Voltage': 34.5, 'Current': 2.89, 'Power': 99.8}, 'pv3': {'Voltage': 0.0, 'Current': 0.0, 'Power': 0.0}, 'pv4': {'Voltage': 0.0, 'Current': 0.0, 'Power': 0.0}}} assert m.db.get_db_value(Register.VERSION) == 'V5.1.09' @@ -1908,7 +1903,7 @@ def test_msg_modbus_rsp3(config_tsun_inv1, msg_modbus_rsp21): assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.mb.err == 5 assert m.msg_count == 2 - assert m._forward_buffer==msg_modbus_rsp21 + assert m.ifc.forward.get()==msg_modbus_rsp21 assert m.ifc.write.get()==b'' assert m.db.db == {'collector': {'Serial_Number': 'R170000000000001'}, 'inverter': {'Version': 'V5.1.0E', 'Rated_Power': 300}, 'grid': {'Timestamp': m._utc(), 'Voltage': 225.9, 'Current': 0.41, 'Frequency': 49.99, 'Output_Power': 94.8}, 'env': {'Inverter_Temp': 22}, 'input': {'Timestamp': m._utc(), 'pv1': {'Voltage': 0.8, 'Current': 0.0, 'Power': 0.0}, 'pv2': {'Voltage': 34.5, 'Current': 2.89, 'Power': 99.8}, 'pv3': {'Voltage': 0.0, 'Current': 0.0, 'Power': 0.0}, 'pv4': {'Voltage': 0.0, 'Current': 0.0, 'Power': 0.0}}} assert m.db.get_db_value(Register.VERSION) == 'V5.1.0E' @@ -1937,7 +1932,7 @@ def test_msg_modbus_rsp4(config_tsun_inv1, msg_modbus_rsp21): assert not m.header_valid # must be invalid, since msg was handled and buffer flushed assert m.mb.err == 0 assert m.msg_count == 1 - assert m._forward_buffer==msg_modbus_rsp21 + assert m.ifc.forward.get()==msg_modbus_rsp21 assert m.modbus_elms == 19 assert m.ifc.write.get()==b'' assert m.db.db == db_values @@ -1962,7 +1957,7 @@ def test_msg_modbus_rsp_new(config_tsun_inv1, msg_modbus_rsp20_new): assert m.msg_id==135 assert m.header_len==23 assert m.data_len==107 - assert m._forward_buffer==b'' + assert m.ifc.forward.get()==b'' assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -1982,7 +1977,7 @@ def test_msg_modbus_invalid(config_tsun_inv1, msg_modbus_inv): assert m.msg_id==119 assert m.header_len==23 assert m.data_len==13 - assert m._forward_buffer==msg_modbus_inv + assert m.ifc.forward.get()==msg_modbus_inv assert m.ifc.write.get()==b'' assert m.db.stat['proxy']['Unknown_Ctrl'] == 1 assert m.db.stat['proxy']['Modbus_Command'] == 0 @@ -2011,7 +2006,7 @@ def test_msg_modbus_fragment(config_tsun_inv1, msg_modbus_rsp20): assert m.msg_id == 119 assert m.header_len == 23 assert m.data_len == 50 - assert m._forward_buffer==msg_modbus_rsp20 + assert m.ifc.forward.get()==msg_modbus_rsp20 assert m.ifc.write.get() == b'' assert m.mb.err == 0 assert m.modbus_elms == 20-1 # register 0x300d is unknown, so one value can't be mapped @@ -2026,24 +2021,16 @@ async def test_msg_build_modbus_req(config_tsun_inv1, msg_modbus_cmd): m.id_str = b"R170000000000001" await m.send_modbus_cmd(Modbus.WRITE_SINGLE_REG, 0x2008, 0, logging.DEBUG) assert 0 == m.send_msg_ofs - assert m._forward_buffer == b'' + assert m.ifc.forward.get() == b'' assert m.ifc.write.get() == b'' assert m.sent_pdu == b'' m.state = State.up await m.send_modbus_cmd(Modbus.WRITE_SINGLE_REG, 0x2008, 0, logging.DEBUG) assert 0 == m.send_msg_ofs - assert m._forward_buffer == b'' + assert m.ifc.forward.get() == b'' assert m.ifc.write.get() == b'' assert m.sent_pdu == msg_modbus_cmd - - m.sent_pdu = bytearray(0) # clear send buffer for next test - m.test_exception_async_write = True - await m.send_modbus_cmd(Modbus.WRITE_SINGLE_REG, 0x2008, 0, logging.DEBUG) - assert 0 == m.send_msg_ofs - assert m._forward_buffer == b'' - assert m.ifc.write.get() == b'' - assert m.sent_pdu == b'' m.close() def test_modbus_no_polling(config_no_modbus_poll, msg_get_time): @@ -2061,7 +2048,7 @@ def test_modbus_no_polling(config_no_modbus_poll, msg_get_time): assert m.header_len==23 assert m.ts_offset==0 assert m.data_len==0 - assert m._forward_buffer==msg_get_time + assert m.ifc.forward.get()==msg_get_time assert m.ifc.write.get()==b'\x00\x00\x00\x1b\x10R170000000000001\x91"\x00\x00\x01\x89\xc6,_\x00' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0 m.close() @@ -2085,7 +2072,7 @@ async def test_modbus_polling(config_tsun_inv1, msg_inverter_ind): assert m.header_len==23 assert m.ts_offset==0 assert m.data_len==120 - assert m._forward_buffer==msg_inverter_ind + assert m.ifc.forward.get()==msg_inverter_ind assert m.ifc.write.get()==b'\x00\x00\x00\x14\x10R170000000000001\x99\x04\x01' assert m.db.stat['proxy']['Unknown_Ctrl'] == 0