validator_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package httpclent
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "testing"
  6. "time"
  7. )
  8. var (
  9. codeDataMessageStr = `
  10. {
  11. "code": 0,
  12. "data": null,
  13. "message": "error message"
  14. }
  15. `
  16. codeDataMessageStrByte = []byte(codeDataMessageStr)
  17. errorMessageStr = `
  18. {
  19. "error": {
  20. "message": "异常"
  21. }
  22. }
  23. `
  24. errorMessageByte = []byte(errorMessageStr)
  25. )
  26. type Demo struct {
  27. Code int `json:"code"`
  28. Message string `json:"message"`
  29. }
  30. func TestValidatorErrorMessage(t *testing.T) {
  31. fmt.Println(validatorErrorMessage(errorMessageByte))
  32. }
  33. // BenchmarkValidatorErrorMessage-8 5073397 225 ns/op
  34. func BenchmarkValidatorErrorMessage(b *testing.B) {
  35. for i := 0; i < b.N; i++ {
  36. validatorErrorMessage(errorMessageByte)
  37. }
  38. }
  39. func TestCodeDataMessage(t *testing.T) {
  40. fmt.Println(validatorCodeDataMessage(codeDataMessageStrByte))
  41. }
  42. // BenchmarkCodeDataMessage-8 3130287 397 ns/op
  43. func BenchmarkCodeDataMessage(b *testing.B) {
  44. for i := 0; i < b.N; i++ {
  45. validatorCodeDataMessage(codeDataMessageStrByte)
  46. }
  47. }
  48. // BenchmarkCodeDataMessage-8 812484 1560 ns/op
  49. func BenchmarkCodeDataMessageBindJson(b *testing.B) {
  50. for i := 0; i < b.N; i++ {
  51. demo := new(Demo)
  52. err := json.Unmarshal(codeDataMessageStrByte, demo)
  53. if err != nil {
  54. b.Fatal(err)
  55. }
  56. if demo.Code != 0 {
  57. // todo
  58. }
  59. }
  60. }
  61. func BenchmarkResponseBodyError(b *testing.B) {
  62. for i := 0; i < b.N; i++ {
  63. CheckResponseBodyHasError(codeDataMessageStrByte)
  64. }
  65. }
  66. func TestCurrent(t *testing.T) {
  67. go func() {
  68. for {
  69. AddValidatorResponseBody("k1", validatorCodeDataMessage)
  70. CheckResponseBodyHasError(codeDataMessageStrByte)
  71. }
  72. }()
  73. go func() {
  74. for {
  75. AddValidatorResponseBody("k1", validatorCodeDataMessage)
  76. CheckResponseBodyHasError(codeDataMessageStrByte)
  77. }
  78. }()
  79. go func() {
  80. for {
  81. AddValidatorResponseBody("k1", validatorCodeDataMessage)
  82. CheckResponseBodyHasError(codeDataMessageStrByte)
  83. }
  84. }()
  85. time.Sleep(time.Second * 100)
  86. }