def testClientProtocolConnect(self): ''' Test the client protocol connect ''' decoder = object() framer = ModbusSocketFramer(decoder) protocol = ModbusClientProtocol(framer=framer) self.assertFalse(protocol._connected) protocol.connectionMade() self.assertTrue(protocol._connected)
def __init__(self, framer, endpoint): """ Initializes our custom protocol :param framer: The decoder to use to process messages :param endpoint: The endpoint to send results to """ ModbusClientProtocol.__init__(self, framer) self.endpoint = endpoint
def __init__(self, framer): """ Initializes our custom protocol :param framer: The decoder to use to process messages :param endpoint: The endpoint to send results to """ ModbusClientProtocol.__init__(self, framer) log.debug("Beginning the processing loop") reactor.callLater(CLIENT_DELAY, self.fetch_holding_registers)
def testClientProtocolExecute(self): ''' Test the client protocol execute method ''' framer = ModbusSocketFramer(None) protocol = ModbusClientProtocol(framer=framer) protocol.connectionMade() protocol.transport = Mock() protocol.transport.write = Mock() request = ReadCoilsRequest(1, 1) d = protocol.execute(request) tid = request.transaction_id self.assertEqual(d, protocol.transaction.getTransaction(tid))
def testClientProtocolInit(self): ''' Test the client protocol initialize ''' protocol = ModbusClientProtocol() self.assertEqual(0, len(list(protocol.transaction))) self.assertFalse(protocol._connected) self.assertTrue(isinstance(protocol.framer, ModbusSocketFramer)) framer = object() protocol = ModbusClientProtocol(framer=framer) self.assertEqual(0, len(list(protocol.transaction))) self.assertFalse(protocol._connected) self.assertTrue(framer is protocol.framer)
def testClientProtocolBuildResponse(self): ''' Test the udp client protocol builds responses ''' protocol = ModbusClientProtocol() self.assertEqual(0, len(list(protocol.transaction))) def handle_failure(failure): self.assertTrue(isinstance(failure.value, ConnectionException)) d = protocol._buildResponse(0x00) d.addErrback(handle_failure) self.assertEqual(0, len(list(protocol.transaction))) protocol._connected = True d = protocol._buildResponse(0x00) self.assertEqual(1, len(list(protocol.transaction)))
def testClientProtocolHandleResponse(self): ''' Test the client protocol handles responses ''' protocol = ModbusClientProtocol() protocol.connectionMade() out = [] reply = ReadCoilsRequest(1, 1) reply.transaction_id = 0x00 # handle skipped cases protocol._handleResponse(None) protocol._handleResponse(reply) # handle existing cases d = protocol._buildResponse(0x00) d.addCallback(lambda v: out.append(v)) protocol._handleResponse(reply) self.assertEqual(out[0], reply)
def testSerialClientProtocolInit(self): ''' Test the udp client protocol initialize ''' protocol = ModbusSerClientProtocol() self.assertEqual(0, len(list(protocol.transaction))) self.assertTrue(isinstance(protocol.framer, ModbusRtuFramer)) framer = object() protocol = ModbusClientProtocol(framer=framer) self.assertTrue(framer is protocol.framer)
def testClientProtocolDataReceived(self): ''' Test the client protocol data received ''' protocol = ModbusClientProtocol(ModbusSocketFramer(ClientDecoder())) protocol.connectionMade() out = [] data = b'\x00\x00\x12\x34\x00\x06\xff\x01\x01\x02\x00\x04' # setup existing request d = protocol._buildResponse(0x00) d.addCallback(lambda v: out.append(v)) protocol.dataReceived(data) self.assertTrue(isinstance(out[0], ReadCoilsResponse))
def testClientProtocolDisconnect(self): ''' Test the client protocol disconnect ''' protocol = ModbusClientProtocol() protocol.connectionMade() def handle_failure(failure): self.assertTrue(isinstance(failure.value, ConnectionException)) d = protocol._buildResponse(0x00) d.addErrback(handle_failure) self.assertTrue(protocol._connected) protocol.connectionLost('because') self.assertFalse(protocol._connected)
def connectionMade(self): ModbusClientProtocol.connectionMade(self); self.factory.setClient(self)