2015-10-08 20:40:36 +08:00
|
|
|
package main
|
|
|
|
|
|
2015-10-08 23:11:07 +08:00
|
|
|
import (
|
2015-10-16 23:21:38 +08:00
|
|
|
"github.com/TransX/log"
|
2015-10-08 20:40:36 +08:00
|
|
|
"net"
|
2015-10-08 23:11:07 +08:00
|
|
|
"testing"
|
|
|
|
|
"time"
|
2015-10-08 20:40:36 +08:00
|
|
|
)
|
|
|
|
|
|
2015-10-08 23:11:07 +08:00
|
|
|
func server(t *testing.T) {
|
|
|
|
|
listener, err := net.Listen("tcp4", "127.0.0.1:1244")
|
|
|
|
|
if err != nil {
|
2015-10-08 20:40:36 +08:00
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
for {
|
2015-10-08 23:11:07 +08:00
|
|
|
conn, err := listener.Accept()
|
2015-10-17 23:14:43 +08:00
|
|
|
log.Info("Test Server Incoming %s", conn.RemoteAddr().String())
|
2015-10-08 23:11:07 +08:00
|
|
|
if err != nil {
|
2015-10-08 20:40:36 +08:00
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
2015-10-08 23:11:07 +08:00
|
|
|
bytes := make([]byte, 32)
|
|
|
|
|
n, err := conn.Read(bytes)
|
2015-10-17 23:14:43 +08:00
|
|
|
log.Info("Test Server Receive %s", string(bytes[:n]))
|
2015-10-18 17:44:56 +08:00
|
|
|
_, err = conn.Write([]byte("OK"))
|
2015-10-16 23:21:38 +08:00
|
|
|
log.Info("Test Server write")
|
2015-10-08 23:11:07 +08:00
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
2015-10-08 20:40:36 +08:00
|
|
|
}
|
|
|
|
|
conn.Close()
|
2015-10-16 23:21:38 +08:00
|
|
|
log.Info("Test Server closed")
|
2015-10-08 20:40:36 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-08 23:11:07 +08:00
|
|
|
func client(t *testing.T) {
|
|
|
|
|
for {
|
|
|
|
|
conn, err := net.Dial("tcp4", "127.0.0.1:1200")
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
2015-10-08 20:40:36 +08:00
|
|
|
}
|
2015-10-18 17:44:56 +08:00
|
|
|
conn.Write([]byte("Client"))
|
|
|
|
|
log.Info("Test Client write")
|
2015-10-08 23:11:07 +08:00
|
|
|
bytes := make([]byte, 32)
|
|
|
|
|
n, err := conn.Read(bytes)
|
2015-10-16 23:21:38 +08:00
|
|
|
log.Info("Test Client read")
|
2015-10-08 23:11:07 +08:00
|
|
|
if err != nil {
|
2015-10-08 20:40:36 +08:00
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
2015-10-18 17:44:56 +08:00
|
|
|
log.Info("Test Client Receive %s", bytes[:n])
|
2015-10-08 23:11:07 +08:00
|
|
|
time.Sleep(time.Second * 2)
|
2015-10-08 20:40:36 +08:00
|
|
|
conn.Close()
|
2015-10-16 23:21:38 +08:00
|
|
|
log.Info("Test Client closed")
|
2015-10-08 23:11:07 +08:00
|
|
|
|
2015-10-08 20:40:36 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-08 23:11:07 +08:00
|
|
|
func TestTunnel(t *testing.T) {
|
2015-10-18 17:44:56 +08:00
|
|
|
log.LogTo("log.txt", "DEBUG")
|
2015-10-16 23:21:38 +08:00
|
|
|
log.Info("Test Start testing.")
|
2015-10-08 23:11:07 +08:00
|
|
|
go server(t)
|
|
|
|
|
go client(t)
|
2015-10-18 17:44:56 +08:00
|
|
|
trans1 := NewTransTCP()
|
|
|
|
|
go trans1.Start("1200", "127.0.0.1", "1201", "client")
|
|
|
|
|
trans2 := NewTransTCP()
|
|
|
|
|
trans2.Start("1201", "127.0.0.1", "1244", "server")
|
2015-10-08 23:11:07 +08:00
|
|
|
}
|