1
1
package com .digitalpetri .modbus .test ;
2
2
3
+ import static org .junit .jupiter .api .Assertions .assertTrue ;
4
+
3
5
import com .digitalpetri .modbus .ModbusPduSerializer .DefaultRequestSerializer ;
4
6
import com .digitalpetri .modbus .client .ModbusClient ;
5
7
import com .digitalpetri .modbus .client .ModbusTcpClient ;
11
13
import com .digitalpetri .modbus .server .ReadWriteModbusServices ;
12
14
import com .digitalpetri .modbus .tcp .Netty ;
13
15
import com .digitalpetri .modbus .tcp .client .NettyTcpClientTransport ;
16
+ import com .digitalpetri .modbus .tcp .client .NettyTcpClientTransport .ConnectionListener ;
14
17
import com .digitalpetri .modbus .tcp .client .NettyTimeoutScheduler ;
15
18
import com .digitalpetri .modbus .tcp .server .NettyTcpServerTransport ;
16
19
import java .nio .ByteBuffer ;
17
20
import java .util .Optional ;
21
+ import java .util .concurrent .CountDownLatch ;
22
+ import java .util .concurrent .TimeUnit ;
18
23
import org .junit .jupiter .api .AfterEach ;
19
24
import org .junit .jupiter .api .BeforeEach ;
20
25
import org .junit .jupiter .api .Test ;
@@ -24,6 +29,8 @@ public class ModbusTcpClientServerIT extends ClientServerIT {
24
29
ModbusTcpClient client ;
25
30
ModbusTcpServer server ;
26
31
32
+ NettyTcpClientTransport clientTransport ;
33
+
27
34
@ BeforeEach
28
35
void setup () throws Exception {
29
36
var processImage = new ProcessImage ();
@@ -59,7 +66,7 @@ protected Optional<ProcessImage> getProcessImage(int unitId) {
59
66
}
60
67
61
68
final var port = serverPort ;
62
- var clientTransport = NettyTcpClientTransport .create (
69
+ clientTransport = NettyTcpClientTransport .create (
63
70
cfg -> {
64
71
cfg .hostname = "localhost" ;
65
72
cfg .port = port ;
@@ -112,4 +119,28 @@ void sendRaw() throws Exception {
112
119
System .out .println ("responsePduBytes: " + Hex .format (responsePduBytes ));
113
120
}
114
121
122
+ @ Test
123
+ void connectionListener () throws Exception {
124
+ var onConnection = new CountDownLatch (1 );
125
+ var onConnectionLost = new CountDownLatch (1 );
126
+
127
+ clientTransport .addConnectionListener (new ConnectionListener () {
128
+ @ Override
129
+ public void onConnection () {
130
+ onConnection .countDown ();
131
+ }
132
+
133
+ @ Override
134
+ public void onConnectionLost () {
135
+ onConnectionLost .countDown ();
136
+ }
137
+ });
138
+
139
+ client .disconnect ();
140
+ assertTrue (onConnectionLost .await (1 , TimeUnit .SECONDS ));
141
+
142
+ client .connect ();
143
+ assertTrue (onConnection .await (1 , TimeUnit .SECONDS ));
144
+ }
145
+
115
146
}
0 commit comments