1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00
MiraiGo/binary/jce/reader_test.go
wdvxdr 9814f5295d
refactor(jce): use ReadMap & remove ReadMapF.
name                            old time/op    new time/op    delta
RequestDataVersion2_ReadFrom-8    5.58µs ± 1%    5.78µs ± 2%   +3.64%  (p=0.000 n=9+9)

name                            old speed      new speed      delta
RequestDataVersion2_ReadFrom-8  16.7MB/s ± 1%  16.1MB/s ± 2%   -3.52%  (p=0.000 n=9+9)

name                            old alloc/op   new alloc/op   delta
RequestDataVersion2_ReadFrom-8    5.40kB ± 0%    3.74kB ± 0%  -30.67%  (p=0.000 n=10+10)

name                            old allocs/op  new allocs/op  delta
RequestDataVersion2_ReadFrom-8       147 ± 0%       136 ± 0%   -7.48%  (p=0.000 n=10+10)
2021-08-12 23:24:58 +08:00

84 lines
1.5 KiB
Go

package jce
import (
"math/rand"
"testing"
"github.com/stretchr/testify/assert"
)
func TestJceReader_ReadSlice(t *testing.T) {
s := make([]int64, 50)
for i := range s {
s[i] = rand.Int63()
}
w := NewJceWriter()
w.WriteObject(s, 1)
r := NewJceReader(w.Bytes())
var result []int64
r.ReadSlice(&result, 1)
assert.Equal(t, s, result)
}
var test []*BigDataIPInfo
func BenchmarkJceReader_ReadSlice(b *testing.B) {
for i := 0; i <= 500; i++ {
test = append(test, &BigDataIPInfo{
Type: 1,
Server: "test1",
Port: 8080,
})
}
w := NewJceWriter()
w.WriteObject(test, 1)
src := w.Bytes()
b.SetBytes(int64(len(src)))
b.StartTimer()
var result = []BigDataIPInfo{}
for i := 0; i < b.N; i++ {
r := NewJceReader(src)
r.ReadSlice(&result, 1)
}
}
var req = RequestDataVersion2{
Map: map[string]map[string][]byte{
"1": {
"123": []byte(`123`),
},
"2": {
"123": []byte(`123`),
},
"3": {
"123": []byte(`123`),
},
"4": {
"123": []byte(`123`),
},
"5": {
"123": []byte(`123`),
},
}}
func TestRequestDataVersion2_ReadFrom(t *testing.T) {
// todo(wdv): fuzz test
w := NewJceWriter()
w.WriteObject(req.Map, 0)
src := w.Bytes()
result := RequestDataVersion2{}
result.ReadFrom(NewJceReader(src))
assert.Equal(t, req, result)
}
func BenchmarkRequestDataVersion2_ReadFrom(b *testing.B) {
w := NewJceWriter()
w.WriteObject(req.Map, 0)
src := w.Bytes()
b.SetBytes(int64(len(src)))
result := &RequestDataVersion2{}
for i := 0; i < b.N; i++ {
result.ReadFrom(NewJceReader(src))
}
}