@@ -34,6 +34,7 @@ import (
34
34
"github.com/stretchr/testify/assert"
35
35
"github.com/stretchr/testify/require"
36
36
"go.uber.org/zap"
37
+ "golang.org/x/sys/unix"
37
38
38
39
gerr "github.com/panjf2000/gnet/v2/pkg/errors"
39
40
"github.com/panjf2000/gnet/v2/pkg/logging"
@@ -326,6 +327,24 @@ func (s *testServer) OnTraffic(c Conn) (action Action) {
326
327
}
327
328
buf , _ := c .Next (- 1 )
328
329
_ , _ = c .Write (buf )
330
+
331
+ // Only for code coverage of testing.
332
+ if ! s .multicore {
333
+ assert .NoErrorf (s .tester , c .Flush (), "flush error" )
334
+ _ = c .Fd ()
335
+ fd , err := c .Dup ()
336
+ assert .NoError (s .tester , err )
337
+ assert .Greater (s .tester , fd , 0 )
338
+ assert .NoErrorf (s .tester , unix .Close (fd ), "close error" )
339
+ assert .NoErrorf (s .tester , c .SetReadBuffer (streamLen ), "set read buffer error" )
340
+ assert .NoErrorf (s .tester , c .SetWriteBuffer (streamLen ), "set write buffer error" )
341
+ if s .network == "tcp" {
342
+ assert .NoErrorf (s .tester , c .SetLinger (1 ), "set linger error" )
343
+ assert .NoErrorf (s .tester , c .SetNoDelay (false ), "set no delay error" )
344
+ assert .NoErrorf (s .tester , c .SetKeepAlivePeriod (time .Minute ), "set keep alive period error" )
345
+ }
346
+ }
347
+
329
348
return
330
349
}
331
350
@@ -773,9 +792,13 @@ func (t *testCloseActionErrorServer) OnClose(c Conn, err error) (action Action)
773
792
774
793
func (t * testCloseActionErrorServer ) OnTraffic (c Conn ) (action Action ) {
775
794
n := c .InboundBuffered ()
776
- buf , _ := c .Peek (n )
777
- _ , _ = c .Write (buf )
778
- _ , _ = c .Discard (n )
795
+ buf := make ([]byte , n )
796
+ m , err := c .Read (buf )
797
+ assert .NoError (t .tester , err )
798
+ assert .EqualValuesf (t .tester , n , m , "read %d bytes, expected %d" , m , n )
799
+ n , err = c .Write (buf )
800
+ assert .NoError (t .tester , err )
801
+ assert .EqualValuesf (t .tester , m , n , "wrote %d bytes, expected %d" , n , m )
779
802
action = Close
780
803
return
781
804
}
@@ -1001,7 +1024,10 @@ func (t *testCloseConnectionServer) OnTraffic(c Conn) (action Action) {
1001
1024
_ , _ = c .Discard (- 1 )
1002
1025
go func () {
1003
1026
time .Sleep (time .Second )
1004
- _ = c .Close ()
1027
+ _ = c .CloseWithCallback (func (c Conn , err error ) error {
1028
+ assert .ErrorIsf (t .tester , err , gerr .ErrEngineShutdown , "should be engine shutdown error" )
1029
+ return nil
1030
+ })
1005
1031
}()
1006
1032
return
1007
1033
}
0 commit comments