11package easytcp
22
33import (
4- "github.com/DarthPestilane/easytcp/internal/test_data/msgpack"
5- "github.com/DarthPestilane/easytcp/internal/test_data/pb"
64 "github.com/DarthPestilane/easytcp/message"
75 "net"
86 "testing"
@@ -15,7 +13,7 @@ type mutedLogger struct{}
1513func (m * mutedLogger ) Errorf (_ string , _ ... interface {}) {}
1614func (m * mutedLogger ) Tracef (_ string , _ ... interface {}) {}
1715
18- func Benchmark_NoRoute (b * testing.B ) {
16+ func Benchmark_NoHandler (b * testing.B ) {
1917 s := NewServer (& ServerOption {
2018 DoNotPrintRoutes : true ,
2119 })
@@ -38,73 +36,13 @@ func Benchmark_NoRoute(b *testing.B) {
3836 }
3937}
4038
41- func Benchmark_NotFoundHandler (b * testing.B ) {
42- s := NewServer (& ServerOption {
43- DoNotPrintRoutes : true ,
44- })
45- s .NotFoundHandler (func (ctx * Context ) error {
46- return ctx .Response (0 , []byte ("not found" ))
47- })
48- go s .Serve ("127.0.0.1:0" ) // nolint
49- defer s .Stop () // nolint
50-
51- <- s .accepting
52-
53- // client
54- client , err := net .Dial ("tcp" , s .Listener .Addr ().String ())
55- if err != nil {
56- panic (err )
57- }
58- defer client .Close () // nolint
59-
60- packedMsg , _ := s .Packer .Pack (& message.Entry {ID : 1 , Data : []byte ("ping" )})
61- beforeBench (b )
62- for i := 0 ; i < b .N ; i ++ {
63- _ , _ = client .Write (packedMsg )
64- }
65- }
66-
6739func Benchmark_OneHandler (b * testing.B ) {
6840 s := NewServer (& ServerOption {
6941 DoNotPrintRoutes : true ,
7042 })
7143 s .AddRoute (1 , func (ctx * Context ) error {
72- return ctx .Response (2 , []byte ("pong" ))
73- })
74- go s .Serve ("127.0.0.1:0" ) // nolint
75- defer s .Stop () // nolint
76-
77- <- s .accepting
78-
79- // client
80- client , err := net .Dial ("tcp" , s .Listener .Addr ().String ())
81- if err != nil {
82- panic (err )
83- }
84- defer client .Close () // nolint
85-
86- packedMsg , _ := s .Packer .Pack (& message.Entry {ID : 1 , Data : []byte ("ping" )})
87- beforeBench (b )
88- for i := 0 ; i < b .N ; i ++ {
89- _ , _ = client .Write (packedMsg )
90- }
91- }
92-
93- func Benchmark_ManyHandlers (b * testing.B ) {
94- s := NewServer (& ServerOption {
95- DoNotPrintRoutes : true ,
44+ return nil
9645 })
97-
98- var m MiddlewareFunc = func (next HandlerFunc ) HandlerFunc {
99- return func (ctx * Context ) error {
100- return next (ctx )
101- }
102- }
103-
104- s .AddRoute (1 , func (ctx * Context ) error {
105- return ctx .Response (2 , []byte ("pong" ))
106- }, m , m )
107-
10846 go s .Serve ("127.0.0.1:0" ) // nolint
10947 defer s .Stop () // nolint
11048
@@ -124,14 +62,14 @@ func Benchmark_ManyHandlers(b *testing.B) {
12462 }
12563}
12664
127- func Benchmark_OneRouteCtxGetSet (b * testing.B ) {
65+ func Benchmark_OneHandlerCtxGetSet (b * testing.B ) {
12866 s := NewServer (& ServerOption {
12967 DoNotPrintRoutes : true ,
13068 })
13169 s .AddRoute (1 , func (ctx * Context ) error {
13270 ctx .Set ("key" , "value" )
133- v : = ctx .MustGet ("key" ).(string )
134- return ctx . Response ( 2 , [] byte ( v ))
71+ _ = ctx .MustGet ("key" ).(string )
72+ return nil
13573 })
13674 go s .Serve ("127.0.0.1:0" ) // nolint
13775 defer s .Stop () // nolint
@@ -152,14 +90,14 @@ func Benchmark_OneRouteCtxGetSet(b *testing.B) {
15290 }
15391}
15492
155- func Benchmark_OneRouteMessageGetSet (b * testing.B ) {
93+ func Benchmark_OneHandlerMessageGetSet (b * testing.B ) {
15694 s := NewServer (& ServerOption {
15795 DoNotPrintRoutes : true ,
15896 })
15997 s .AddRoute (1 , func (ctx * Context ) error {
16098 ctx .Message ().Set ("key" , []byte ("val" ))
161- v : = ctx .Message ().MustGet ("key" ).([]byte )
162- return ctx . Response ( 2 , v )
99+ _ = ctx .Message ().MustGet ("key" ).([]byte )
100+ return nil
163101 })
164102 go s .Serve ("127.0.0.1:0" ) // nolint
165103 defer s .Stop () // nolint
@@ -180,95 +118,6 @@ func Benchmark_OneRouteMessageGetSet(b *testing.B) {
180118 }
181119}
182120
183- func Benchmark_OneRouteJsonCodec (b * testing.B ) {
184- s := NewServer (& ServerOption {
185- Codec : & JsonCodec {},
186- DoNotPrintRoutes : true ,
187- })
188- s .AddRoute (1 , func (ctx * Context ) error {
189- req := make (map [string ]string )
190- ctx .MustBind (& req )
191- return ctx .Response (2 , map [string ]string {"data" : "pong" })
192- })
193- go s .Serve ("127.0.0.1:0" ) // nolint
194- defer s .Stop () // nolint
195-
196- <- s .accepting
197-
198- // client
199- client , err := net .Dial ("tcp" , s .Listener .Addr ().String ())
200- if err != nil {
201- panic (err )
202- }
203- defer client .Close () // nolint
204-
205- packedMsg , _ := s .Packer .Pack (& message.Entry {ID : 1 , Data : []byte (`{"data": "ping"}` )})
206- beforeBench (b )
207- for i := 0 ; i < b .N ; i ++ {
208- _ , _ = client .Write (packedMsg )
209- }
210- }
211-
212- func Benchmark_OneRouteProtobufCodec (b * testing.B ) {
213- s := NewServer (& ServerOption {
214- Codec : & ProtobufCodec {},
215- DoNotPrintRoutes : true ,
216- })
217- s .AddRoute (1 , func (ctx * Context ) error {
218- var req pb.Sample
219- ctx .MustBind (& req )
220- return ctx .Response (2 , & pb.Sample {Foo : "test-resp" , Bar : req .Bar + 1 })
221- })
222- go s .Serve ("127.0.0.1:0" ) // nolint
223- defer s .Stop () // nolint
224-
225- <- s .accepting
226-
227- // client
228- client , err := net .Dial ("tcp" , s .Listener .Addr ().String ())
229- if err != nil {
230- panic (err )
231- }
232- defer client .Close () // nolint
233-
234- data , _ := s .Codec .Encode (& pb.Sample {Foo : "test" , Bar : 1 })
235- packedMsg , _ := s .Packer .Pack (& message.Entry {ID : 1 , Data : data })
236- beforeBench (b )
237- for i := 0 ; i < b .N ; i ++ {
238- _ , _ = client .Write (packedMsg )
239- }
240- }
241-
242- func Benchmark_OneRouteMsgpackCodec (b * testing.B ) {
243- s := NewServer (& ServerOption {
244- Codec : & MsgpackCodec {},
245- DoNotPrintRoutes : true ,
246- })
247- s .AddRoute (1 , func (ctx * Context ) error {
248- var req msgpack.Sample
249- ctx .MustBind (& req )
250- return ctx .Response (2 , & msgpack.Sample {Foo : "test-resp" , Bar : req .Bar + 1 })
251- })
252- go s .Serve ("127.0.0.1:0" ) // nolint
253- defer s .Stop () // nolint
254-
255- <- s .accepting
256-
257- // client
258- client , err := net .Dial ("tcp" , s .Listener .Addr ().String ())
259- if err != nil {
260- panic (err )
261- }
262- defer client .Close () // nolint
263-
264- data , _ := s .Codec .Encode (& msgpack.Sample {Foo : "test" , Bar : 1 })
265- packedMsg , _ := s .Packer .Pack (& message.Entry {ID : 1 , Data : data })
266- beforeBench (b )
267- for i := 0 ; i < b .N ; i ++ {
268- _ , _ = client .Write (packedMsg )
269- }
270- }
271-
272121func beforeBench (b * testing.B ) {
273122 Log = & mutedLogger {}
274123 b .ReportAllocs ()
0 commit comments