tcp_server_test.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package server
  2. import (
  3. "crypto/tls"
  4. "fmt"
  5. "net"
  6. "testing"
  7. "time"
  8. )
  9. const (
  10. testTCPHost = "localhost:12345"
  11. )
  12. var testEchoData = "hello"
  13. type testEchoHandler struct{}
  14. func (h testEchoHandler) Handle(conn net.Conn) {
  15. buf := make([]byte, 1024)
  16. for {
  17. length, err := conn.Read(buf)
  18. if err != nil {
  19. fmt.Println(err)
  20. }
  21. length, err = conn.Write(buf[:length])
  22. if err != nil {
  23. fmt.Println(err)
  24. }
  25. }
  26. }
  27. func validateTCPServer(t *testing.T, addr string) {
  28. cli, err := net.Dial("tcp", addr)
  29. if err != nil {
  30. t.Fatal(err)
  31. }
  32. _, err = cli.Write([]byte(testEchoData))
  33. if err != nil {
  34. t.Fatal(err)
  35. }
  36. buf := make([]byte, 1024)
  37. length, err := cli.Read(buf)
  38. if err != nil {
  39. t.Fatal(err)
  40. }
  41. gotData := string(buf[:length])
  42. t.Log(gotData)
  43. if gotData != testEchoData {
  44. t.Errorf("echo server test failed. want: %s, got: %s", testEchoData, gotData)
  45. }
  46. }
  47. func validateTLSServer(t *testing.T, addr string) {
  48. conf := &tls.Config{
  49. InsecureSkipVerify: true,
  50. }
  51. cli, err := tls.Dial("tcp", addr, conf)
  52. if err != nil {
  53. t.Fatal(err)
  54. }
  55. _, err = cli.Write([]byte(testEchoData))
  56. if err != nil {
  57. t.Fatal(err)
  58. }
  59. buf := make([]byte, 1024)
  60. length, err := cli.Read(buf)
  61. if err != nil {
  62. t.Fatal(err)
  63. }
  64. gotData := string(buf[:length])
  65. t.Log(gotData)
  66. if gotData != testEchoData {
  67. t.Errorf("echo server test failed. want: %s, got: %s", testEchoData, gotData)
  68. }
  69. }
  70. func TestTCPServer(t *testing.T) {
  71. initLog("test", "debug")
  72. h := testEchoHandler{}
  73. svr := &TCPServer{
  74. addr: testTCPHost,
  75. handler: h,
  76. useTls: false,
  77. }
  78. err := svr.Start()
  79. if err != nil {
  80. t.Fatal(err)
  81. }
  82. time.Sleep(time.Millisecond * 100)
  83. validateTCPServer(t, testTCPHost)
  84. }