12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package tests
- import (
- "bufio"
- "bytes"
- "fmt"
- "io/ioutil"
- "net"
- "net/http"
- "strings"
- "testing"
- "time"
- frpNet "github.com/fatedier/frp/utils/net"
- "github.com/stretchr/testify/assert"
- )
- var (
- TEST_STR = "frp is a fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet."
- TEST_TCP_PORT int64 = 10701
- TEST_TCP_FRP_PORT int64 = 10801
- TEST_TCP_EC_FRP_PORT int64 = 10901
- TEST_TCP_ECHO_STR string = "tcp type:" + TEST_STR
- TEST_UDP_PORT int64 = 10702
- TEST_UDP_FRP_PORT int64 = 10802
- TEST_UDP_ECHO_STR string = "udp type:" + TEST_STR
- TEST_UNIX_DOMAIN_ADDR string = "/tmp/frp_echo_server.sock"
- TEST_UNIX_DOMAIN_FRP_PORT int64 = 10803
- TEST_UNIX_DOMAIN_STR string = "unix domain type:" + TEST_STR
- TEST_HTTP_PORT int64 = 10704
- TEST_HTTP_FRP_PORT int64 = 10804
- TEST_HTTP_WEB01_STR string = "http web01:" + TEST_STR
- )
- func init() {
- go StartTcpEchoServer()
- go StartUdpEchoServer()
- go StartUnixDomainServer()
- go StartHttpServer()
- time.Sleep(500 * time.Millisecond)
- }
- func TestTcpServer(t *testing.T) {
- assert := assert.New(t)
- // Normal
- addr := fmt.Sprintf("127.0.0.1:%d", TEST_TCP_FRP_PORT)
- res, err := sendTcpMsg(addr, TEST_TCP_ECHO_STR)
- assert.NoError(err)
- assert.Equal(TEST_TCP_ECHO_STR, res)
- // Encrytion and compression
- addr = fmt.Sprintf("127.0.0.1:%d", TEST_TCP_EC_FRP_PORT)
- res, err = sendTcpMsg(addr, TEST_TCP_ECHO_STR)
- assert.NoError(err)
- assert.Equal(TEST_TCP_ECHO_STR, res)
- }
- func TestUdpEchoServer(t *testing.T) {
- assert := assert.New(t)
- // Normal
- addr := fmt.Sprintf("127.0.0.1:%d", TEST_UDP_FRP_PORT)
- res, err := sendUdpMsg(addr, TEST_UDP_ECHO_STR)
- assert.NoError(err)
- assert.Equal(TEST_UDP_ECHO_STR, res)
- func TestUnixDomainServer(t *testing.T) {
- assert := assert.New(t)
- // Normal
- addr := fmt.Sprintf("127.0.0.1:%d", TEST_UNIX_DOMAIN_FRP_PORT)
- res, err := sendTcpMsg(addr, TEST_UNIX_DOMAIN_STR)
- assert.NoError(err)
- assert.Equal(TEST_UNIX_DOMAIN_STR, res)
- }
- 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)
- }
- }
|