...
1
16
17 package issue_test
18
19 import (
20 `sync`
21 `testing`
22
23 `github.com/bytedance/sonic`
24 )
25
26 type ByteStruct struct {
27 Bytes []byte
28 }
29
30 type ObjStruct struct {
31 Obj ByteStruct
32 }
33
34 func TestIssue213(t *testing.T) {
35
36 bytes := []byte("{\"Obj\":{\"Bytes\":\"eyJUZXN0Q29kZSI6MjIyMiwiVGVzdFN0cmluZyI6InRlc3Rfc3RyaW5n\", \"x\":0}}")
37 wg := sync.WaitGroup{}
38 for i:=0;i<1000;i++{
39 wg.Add(1)
40 go func(){
41 defer wg.Done()
42 var o *ObjStruct
43 if err := sonic.Unmarshal(bytes, &o); err != nil {
44 t.Fatal(err)
45 }
46 }()
47 }
48 wg.Wait()
49 }
50
51 func BenchmarkIssue213(b *testing.B) {
52
53 js := "{\"Obj\":{\"Bytes\":\"eyJUZXN0Q29kZSI6MjIyMiwiVGVzdFN0cmluZyI6InRlc3Rfc3RyaW5n\", \"x\":0}}"
54 b.ResetTimer()
55 for i:=0; i<b.N; i++ {
56 var o *ObjStruct
57 _ = sonic.UnmarshalString(js, &o)
58 }
59 }
60
View as plain text