server_test.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package server
  2. import (
  3. "fmt"
  4. "log"
  5. "strconv"
  6. "testing"
  7. "time"
  8. "github.com/google/uuid"
  9. "github.com/gorilla/websocket"
  10. )
  11. func BenchmarkTest1(b *testing.B) {
  12. fmt.Println(b.N)
  13. for i := 0; i < b.N; i++ {
  14. _ = fmt.Sprintf("%d", i)
  15. }
  16. }
  17. func BenchmarkServer_WebsocketPressure(b *testing.B) {
  18. b.ReportAllocs()
  19. b.ResetTimer()
  20. b.SetParallelism(10)
  21. fmt.Println(b.N)
  22. b.RunParallel(func(p *testing.PB) {
  23. for p.Next() {
  24. websocketConnect()
  25. }
  26. })
  27. }
  28. func websocketConnect() {
  29. conn, _, err := websocket.DefaultDialer.Dial(
  30. fmt.Sprintf(`ws://127.0.0.1:10082/websocket/endpoint?X-Websocket-Header-ID=%s`, uuid.NewString()),
  31. // fmt.Sprintf(`ws://106.75.230.4:10082/websocket/endpoint?X-Websocket-Header-ID=%s`, uuid.NewString()),
  32. nil)
  33. if err != nil {
  34. log.Println(err)
  35. }
  36. defer conn.Close()
  37. message := Message{Type: MessageTypePingPong, RequestId: strconv.Itoa(int(time.Now().UnixMilli())), Content: "ping"}
  38. conn.SetWriteDeadline(time.Now().Add(time.Second * 60))
  39. err = conn.WriteMessage(websocket.TextMessage, serializationMessage(&message))
  40. if err != nil {
  41. log.Println(err)
  42. }
  43. go func() {
  44. for {
  45. //conn.SetReadDeadline(time.Now().Add(time.Second * 2))
  46. _, _, err = conn.ReadMessage()
  47. if err != nil {
  48. log.Println(err)
  49. return
  50. }
  51. //conn.SetReadDeadline(time.Now().Add(time.Second * 2))
  52. //log.Println(string(msg))
  53. }
  54. }()
  55. }