Skip to content

Commit e536695

Browse files
committed
🐝 ss2022: minimize salt pool's impact on benchmarks
1 parent 0016bd5 commit e536695

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

ss2022/stream_test.go

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/database64128/shadowsocks-go/conn"
1010
"github.com/database64128/shadowsocks-go/netio"
1111
"github.com/database64128/shadowsocks-go/netiotest"
12+
"go.uber.org/zap"
1213
"go.uber.org/zap/zaptest"
1314
)
1415

@@ -347,9 +348,28 @@ func BenchmarkStreamClientDialServerHandleStream(b *testing.B) {
347348
server := serverConfig.NewStreamServer()
348349
server.ReplaceUserLookupMap(userLookupMap)
349350

350-
netiotest.BenchmarkStreamClientDialServerHandle(b, newClient, server)
351+
netiotest.BenchmarkStreamClientDialServerHandle(b, newClient, newStreamServerClearSaltPool(server))
351352
})
352353
}
353354
})
354355
}
355356
}
357+
358+
// streamServerClearSaltPool wraps a [StreamServer] and clears the salt pool after handling a stream connection.
359+
// This is useful in benchmarks where the salt pool significantly affects the results.
360+
type streamServerClearSaltPool struct {
361+
*StreamServer
362+
}
363+
364+
func newStreamServerClearSaltPool(server *StreamServer) *streamServerClearSaltPool {
365+
return &streamServerClearSaltPool{
366+
StreamServer: server,
367+
}
368+
}
369+
370+
// HandleStream implements [netio.StreamServer.HandleStream].
371+
func (s *streamServerClearSaltPool) HandleStream(rawRW netio.Conn, logger *zap.Logger) (req netio.ConnRequest, err error) {
372+
req, err = s.StreamServer.HandleStream(rawRW, logger)
373+
s.saltPool.Clear()
374+
return req, err
375+
}

0 commit comments

Comments
 (0)