96 lines
1.6 KiB
Plaintext
96 lines
1.6 KiB
Plaintext
package ensureSendUtil
|
||
|
||
import (
|
||
"fmt"
|
||
"net"
|
||
"testing"
|
||
"time"
|
||
|
||
"goutil/debugUtil"
|
||
"goutil/zlibUtil"
|
||
)
|
||
|
||
// 保存接收的数据用于校验
|
||
var tcp_recv_msg = make([]byte, 0)
|
||
|
||
func init() {
|
||
debugUtil.SetDebug(true)
|
||
}
|
||
|
||
// 创建socket服务器,保存收到的数据
|
||
func server(addr string) net.Listener {
|
||
listener, err := net.Listen("tcp", addr)
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
|
||
go func() {
|
||
for {
|
||
conn, err := listener.Accept()
|
||
if err != nil {
|
||
return
|
||
}
|
||
|
||
for {
|
||
buff := make([]byte, 512)
|
||
_, err := conn.Read(buff)
|
||
if err != nil {
|
||
break
|
||
} else {
|
||
decompressed, err := zlibUtil.Decompress(buff[4:])
|
||
if err != nil {
|
||
panic(err)
|
||
} else {
|
||
tcp_recv_msg = append(tcp_recv_msg, decompressed...)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}()
|
||
|
||
return listener
|
||
}
|
||
|
||
func Test_tcp(t *testing.T) {
|
||
// 开启服务器
|
||
l := server("127.0.0.1:9559")
|
||
|
||
tcp, err := NewTCPSender("./test_tcp", "127.0.0.1:9559")
|
||
if err != nil {
|
||
t.Error(err)
|
||
}
|
||
|
||
// 发送消息
|
||
tcp.Write("tcp-msg-1")
|
||
time.Sleep(time.Millisecond * 50) // 等待协程发送数据
|
||
|
||
// 关闭连接和服务器
|
||
l.Close()
|
||
(tcp.(*tcpSender)).conn.Close()
|
||
|
||
// 发送消息,此数据会失败
|
||
tcp.Write("tcp-msg-2")
|
||
// time.Sleep(time.Millisecond * 50)
|
||
|
||
// 保存数据
|
||
tcp.Close()
|
||
|
||
// 重启,检查是否重发tcp-msg-2
|
||
l = server("127.0.0.1:9559")
|
||
tcp, err = NewTCPSender("./test_tcp", "127.0.0.1:9559")
|
||
if err != nil {
|
||
t.Error(err)
|
||
}
|
||
|
||
time.Sleep(time.Second * 2)
|
||
|
||
if string(tcp_recv_msg) != "tcp-msg-1tcp-msg-2" {
|
||
t.Error("message error. got " + string(tcp_recv_msg))
|
||
} else {
|
||
fmt.Println("TCP OK")
|
||
}
|
||
|
||
tcp.Close()
|
||
l.Close()
|
||
}
|