public void TcpOverSocketTest() { var model = new ModbusModel(); var scanner = new ModbusTCPScanner(); using (var server = new TcpServerModel(model, scanner)) using (var master = ModbusMaster.TCP(IPAddress.Loopback.ToString(), server.Port)) { //race condition avoided by access order H.SharedSlaveTest(model, master); } }
public void TcpExceptionOverSocketTest() { var model = new ModbusModel(); var scanner = new ModbusTCPScanner(); using (var server = new TcpServerModel(model, scanner)) using (var master = ModbusMaster.TCP(IPAddress.Loopback.ToString(), server.Port)) { var ex = Assert.Throws <ModbusException>(() => H.SharedExceptionTest(master)); Assert.AreEqual("Modbus exception 2", ex.Message); Assert.AreEqual(2, ex.Code); } }
public void RtuOverSocketTest() { var model = new ModbusModel(); var scanner = new ModbusRTUScanner(); using (var server = new TcpServerModel(model, scanner)) using (var client = new TcpClient()) { client.Connect(IPAddress.Loopback, server.Port); var stream = new ModbusSocketStream(client, 400); var master = new ModbusMaster(stream, new ModbusRTUProtocol()); //race condition avoided by access order H.SharedSlaveTest(model, master); } }
public void RtuExceptionOverSocketTest() { var model = new ModbusModel(); var scanner = new ModbusRTUScanner(); using (var server = new TcpServerModel(model, scanner)) using (var client = new TcpClient()) { client.Connect(IPAddress.Loopback, server.Port); var stream = new ModbusSocketStream(client, 400); var master = new ModbusMaster(stream, new ModbusRTUProtocol()); var ex = Assert.Throws <ModbusException>(() => H.SharedExceptionTest(master)); Assert.AreEqual("Modbus exception 2", ex.Message); Assert.AreEqual(2, ex.Code); } }
public void TcpRetryAfterTimeoutTest() { var model = new ModbusModel(); var scanner = new ModbusTCPScanner(); using (var server = new TcpServerModel(model, scanner)) using (var master = ModbusMaster.TCP(IPAddress.Loopback.ToString(), server.Port, 50)) { server.delay = 100; Assert.Throws(typeof(Exception), () => master.WriteCoil(0, 0, false)); //client side delay needed to eat all server side delay otherwise //the added socket stream discard on write will still throw tid mismatch System.Threading.Thread.Sleep(100); server.delay = 0; master.WriteCoil(0, 0, false); } }