123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- package tests
- import (
- "bufio"
- "bytes"
- "fmt"
- "io/ioutil"
- "net"
- "net/http"
- "strings"
- "testing"
- "time"
- frpNet "github.com/fatedier/frp/utils/net"
- )
- var (
- ECHO_PORT int64 = 10711
- UDP_ECHO_PORT int64 = 10712
- HTTP_PORT int64 = 10710
- ECHO_TEST_STR string = "Hello World\n"
- HTTP_RES_STR string = "Hello World"
- )
- func init() {
- go StartEchoServer()
- go StartUdpEchoServer()
- go StartHttpServer()
- go StartUnixDomainServer()
- time.Sleep(500 * time.Millisecond)
- }
- func TestEchoServer(t *testing.T) {
- c, err := frpNet.ConnectTcpServer(fmt.Sprintf("127.0.0.1:%d", ECHO_PORT))
- if err != nil {
- t.Fatalf("connect to echo server error: %v", err)
- }
- timer := time.Now().Add(time.Duration(5) * time.Second)
- c.SetDeadline(timer)
- c.Write([]byte(ECHO_TEST_STR + "\n"))
- br := bufio.NewReader(c)
- buf, err := br.ReadString('\n')
- if err != nil {
- t.Fatalf("read from echo server error: %v", err)
- }
- if ECHO_TEST_STR != buf {
- t.Fatalf("content error, send [%s], get [%s]", strings.Trim(ECHO_TEST_STR, "\n"), strings.Trim(buf, "\n"))
- }
- }
- func TestHttpServer(t *testing.T) {
- client := &http.Client{}
- req, _ := http.NewRequest("GET", fmt.Sprintf("http://127.0.0.1:%d", HTTP_PORT), nil)
- res, err := client.Do(req)
- if err != nil {
- t.Fatalf("do http request error: %v", err)
- }
- if res.StatusCode == 200 {
- body, err := ioutil.ReadAll(res.Body)
- if err != nil {
- t.Fatalf("read from http server error: %v", err)
- }
- bodystr := string(body)
- if bodystr != HTTP_RES_STR {
- t.Fatalf("content from http server error [%s], correct string is [%s]", bodystr, HTTP_RES_STR)
- }
- } else {
- t.Fatalf("http code from http server error [%d]", res.StatusCode)
- }
- }
- func TestUdpEchoServer(t *testing.T) {
- addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:10712")
- if err != nil {
- t.Fatalf("do udp request error: %v", err)
- }
- conn, err := net.DialUDP("udp", nil, addr)
- if err != nil {
- t.Fatalf("dial udp server error: %v", err)
- }
- defer conn.Close()
- _, err = conn.Write([]byte("hello frp\n"))
- if err != nil {
- t.Fatalf("write to udp server error: %v", err)
- }
- data := make([]byte, 20)
- n, err := conn.Read(data)
- if err != nil {
- t.Fatalf("read from udp server error: %v", err)
- }
- if string(bytes.TrimSpace(data[:n])) != "hello frp" {
- t.Fatalf("message got from udp server error, get %s", string(data[:n-1]))
- }
- }
- func TestUnixDomainServer(t *testing.T) {
- c, err := frpNet.ConnectTcpServer(fmt.Sprintf("127.0.0.1:%d", 10704))
- if err != nil {
- t.Fatalf("connect to echo server error: %v", err)
- }
- timer := time.Now().Add(time.Duration(5) * time.Second)
- c.SetDeadline(timer)
- c.Write([]byte(ECHO_TEST_STR + "\n"))
- br := bufio.NewReader(c)
- buf, err := br.ReadString('\n')
- if err != nil {
- t.Fatalf("read from echo server error: %v", err)
- }
- if ECHO_TEST_STR != buf {
- t.Fatalf("content error, send [%s], get [%s]", strings.Trim(ECHO_TEST_STR, "\n"), strings.Trim(buf, "\n"))
- }
- }
|