tcp_server_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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 pando"
  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. if gotData != testEchoData {
  43. t.Errorf("echo server test failed. want: %s, got: %s", testEchoData, gotData)
  44. }
  45. }
  46. func validateTLSServer(t *testing.T, addr string) {
  47. conf := &tls.Config{
  48. InsecureSkipVerify: true,
  49. }
  50. cli, err := tls.Dial("tcp", addr, conf)
  51. if err != nil {
  52. t.Fatal(err)
  53. }
  54. _, err = cli.Write([]byte(testEchoData))
  55. if err != nil {
  56. t.Fatal(err)
  57. }
  58. buf := make([]byte, 1024)
  59. length, err := cli.Read(buf)
  60. if err != nil {
  61. t.Fatal(err)
  62. }
  63. gotData := string(buf[:length])
  64. if gotData != testEchoData {
  65. t.Errorf("echo server test failed. want: %s, got: %s", testEchoData, gotData)
  66. }
  67. }
  68. func TestTCPServer(t *testing.T) {
  69. initLog("test", "debug")
  70. h := testEchoHandler{}
  71. svr := &TCPServer{
  72. addr: testTCPHost,
  73. handler: h,
  74. useTls: false,
  75. }
  76. err := svr.Start()
  77. if err != nil {
  78. t.Fatal(err)
  79. }
  80. time.Sleep(time.Millisecond * 100)
  81. validateTCPServer(t, testTCPHost)
  82. }