func_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package test
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "net/http"
  6. "strings"
  7. "testing"
  8. "time"
  9. "frp/utils/conn"
  10. )
  11. var (
  12. ECHO_PORT int64 = 10711
  13. HTTP_PORT int64 = 10710
  14. ECHO_TEST_STR string = "Hello World\n"
  15. HTTP_RES_STR string = "Hello World"
  16. )
  17. func TestEchoServer(t *testing.T) {
  18. c, err := conn.ConnectServer("0.0.0.0", ECHO_PORT)
  19. if err != nil {
  20. t.Fatalf("connect to echo server error: %v", err)
  21. }
  22. timer := time.Now().Add(time.Duration(5) * time.Second)
  23. c.SetDeadline(timer)
  24. c.Write(ECHO_TEST_STR)
  25. buff, err := c.ReadLine()
  26. if err != nil {
  27. t.Fatalf("read from echo server error: %v", err)
  28. }
  29. if ECHO_TEST_STR != buff {
  30. t.Fatalf("content error, send [%s], get [%s]", strings.Trim(ECHO_TEST_STR, "\n"), strings.Trim(buff, "\n"))
  31. }
  32. }
  33. func TestHttpServer(t *testing.T) {
  34. client := &http.Client{}
  35. req, _ := http.NewRequest("GET", fmt.Sprintf("http://127.0.0.1:%d", HTTP_PORT), nil)
  36. res, err := client.Do(req)
  37. if err != nil {
  38. t.Fatalf("do http request error: %v", err)
  39. }
  40. if res.StatusCode == 200 {
  41. body, err := ioutil.ReadAll(res.Body)
  42. if err != nil {
  43. t.Fatalf("read from http server error: %v", err)
  44. }
  45. bodystr := string(body)
  46. if bodystr != HTTP_RES_STR {
  47. t.Fatalf("content from http server error [%s], correct string is [%s]", bodystr, HTTP_RES_STR)
  48. }
  49. } else {
  50. t.Fatalf("http code from http server error [%d]", res.StatusCode)
  51. }
  52. }