5
5
import org .junit .Test ;
6
6
7
7
import java .nio .charset .StandardCharsets ;
8
+ import java .util .concurrent .ThreadLocalRandom ;
8
9
9
10
public class TunnelMessageParserTest {
10
11
@@ -16,14 +17,36 @@ public void handle() {
16
17
Buffer buffer3 = TunnelMessageCodec .encode ((short ) 3 , "third message" .getBytes (StandardCharsets .UTF_8 ));
17
18
Buffer buffer4 = TunnelMessageCodec .encode ((short ) 4 , "forth message" .getBytes (StandardCharsets .UTF_8 ));
18
19
19
- Buffer buffer = Buffer .buffer ().appendBuffer (buffer1 ).appendBuffer (buffer2 ).appendBuffer (buffer3 ).appendBuffer (buffer4 );
20
+ final Buffer bufferOrigin = Buffer .buffer ().appendBuffer (buffer1 ).appendBuffer (buffer2 ).appendBuffer (buffer3 ).appendBuffer (buffer4 );
21
+ Buffer buffer = bufferOrigin .copy ();
20
22
Handler <Buffer > handler = buf -> {
21
23
TunnelMessageCodec .DecodedMessage decodedMessage = TunnelMessageCodec .decode (buf );
22
24
System .out .println (new String (decodedMessage .body ));
23
25
};
24
26
25
27
TunnelMessageParser parser = new TunnelMessageParser (handler , null );
26
28
29
+ // 一条消息完整写出
27
30
parser .handle (buffer );
31
+
32
+ for (int i = 0 ; i < 10000 ; i ++) {
33
+ // 随机长度消息写出
34
+ Buffer tBuf = bufferOrigin .copy ();
35
+ System .out .println ("start " + tBuf .length ());
36
+ int index = 0 ;
37
+ while (true ) {
38
+ int lastIndex = tBuf .length ();
39
+ if (index >= lastIndex ) {
40
+ break ;
41
+ }
42
+ int endIndex = ThreadLocalRandom .current ().nextInt (index , lastIndex + 1 );
43
+ parser .handle (tBuf .getBuffer (index , endIndex ));
44
+ System .out .println (index + "--" + endIndex );
45
+ index = endIndex ;
46
+
47
+ }
48
+ System .out .println ("end" );
49
+ }
50
+
28
51
}
29
52
}
0 commit comments