package httpclent import ( "encoding/json" "fmt" "testing" "time" ) var ( codeDataMessageStr = ` { "code": 0, "data": null, "message": "error message" } ` codeDataMessageStrByte = []byte(codeDataMessageStr) errorMessageStr = ` { "error": { "message": "异常" } } ` errorMessageByte = []byte(errorMessageStr) ) type Demo struct { Code int `json:"code"` Message string `json:"message"` } func TestValidatorErrorMessage(t *testing.T) { fmt.Println(validatorErrorMessage(errorMessageByte)) } // BenchmarkValidatorErrorMessage-8 5073397 225 ns/op func BenchmarkValidatorErrorMessage(b *testing.B) { for i := 0; i < b.N; i++ { validatorErrorMessage(errorMessageByte) } } func TestCodeDataMessage(t *testing.T) { fmt.Println(validatorCodeDataMessage(codeDataMessageStrByte)) } // BenchmarkCodeDataMessage-8 3130287 397 ns/op func BenchmarkCodeDataMessage(b *testing.B) { for i := 0; i < b.N; i++ { validatorCodeDataMessage(codeDataMessageStrByte) } } // BenchmarkCodeDataMessage-8 812484 1560 ns/op func BenchmarkCodeDataMessageBindJson(b *testing.B) { for i := 0; i < b.N; i++ { demo := new(Demo) err := json.Unmarshal(codeDataMessageStrByte, demo) if err != nil { b.Fatal(err) } if demo.Code != 0 { // todo } } } func BenchmarkResponseBodyError(b *testing.B) { for i := 0; i < b.N; i++ { CheckResponseBodyHasError(codeDataMessageStrByte) } } func TestCurrent(t *testing.T) { go func() { for { AddValidatorResponseBody("k1", validatorCodeDataMessage) CheckResponseBodyHasError(codeDataMessageStrByte) } }() go func() { for { AddValidatorResponseBody("k1", validatorCodeDataMessage) CheckResponseBodyHasError(codeDataMessageStrByte) } }() go func() { for { AddValidatorResponseBody("k1", validatorCodeDataMessage) CheckResponseBodyHasError(codeDataMessageStrByte) } }() time.Sleep(time.Second * 100) }