44 lines
1 KiB
Go
44 lines
1 KiB
Go
package mtprotoedge
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/iamxvbaba/td/bin"
|
|
"github.com/iamxvbaba/td/proto"
|
|
"github.com/iamxvbaba/td/tg"
|
|
)
|
|
|
|
func BenchmarkInboundPlan32RPCContainer(b *testing.B) {
|
|
ids := proto.NewMessageIDGen(time.Now)
|
|
messages := make([]proto.Message, 32)
|
|
var request bin.Buffer
|
|
if err := (&tg.HelpGetConfigRequest{}).Encode(&request); err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
requestBody := request.Copy()
|
|
for i := range messages {
|
|
messages[i] = proto.Message{
|
|
ID: ids.New(proto.MessageFromClient), SeqNo: 1 + i*2, Bytes: len(requestBody), Body: requestBody,
|
|
}
|
|
}
|
|
outerMsgID := ids.New(proto.MessageFromClient)
|
|
var container bin.Buffer
|
|
if err := (&proto.MessageContainer{Messages: messages}).Encode(&container); err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
body := container.Copy()
|
|
s := New(Options{})
|
|
cs := newConnState()
|
|
|
|
b.ReportAllocs()
|
|
b.SetBytes(int64(len(body)))
|
|
b.ResetTimer()
|
|
for i := 0; i < b.N; i++ {
|
|
plan, err := s.preflightInbound(cs, outerMsgID, 64, body)
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
plan.close()
|
|
}
|
|
}
|