8
8
"io/ioutil"
9
9
"net"
10
10
"testing"
11
- "time"
12
11
13
12
"github.com/lucas-clemente/quic-go"
14
13
"github.com/lucas-clemente/quic-go/congestion"
@@ -49,17 +48,18 @@ const (
49
48
func TestE2E (t * testing.T ) {
50
49
// Server and Client share the same obfuscator
51
50
obfuscator := obfs .NewXPlusObfuscator ([]byte (obfs_str ))
51
+ signal := make (chan struct {})
52
52
53
- go runServer (obfuscator )
53
+ go runServer (obfuscator , signal )
54
54
55
- err := runClient (obfuscator )
55
+ err := runClient (obfuscator , signal )
56
56
if err != nil {
57
57
t .Fail ()
58
58
}
59
59
}
60
60
61
61
// Simulate a server
62
- func runServer (obfuscator * obfs.XPlusObfuscator ) error {
62
+ func runServer (obfuscator * obfs.XPlusObfuscator , signal chan struct {} ) error {
63
63
// Load TLS server config
64
64
cer , err := tls .LoadX509KeyPair (certFile , keyFile )
65
65
if err != nil {
@@ -124,7 +124,9 @@ func runServer(obfuscator *obfs.XPlusObfuscator) error {
124
124
fmt .Println ("Failed to initialize server" )
125
125
}
126
126
127
+ serverBuffer := make ([]byte , len (test_request ))
127
128
fmt .Println ("Server up and running" )
129
+ signal <- struct {}{}
128
130
129
131
serverConn , err := l .Accept ()
130
132
defer serverConn .Close ()
@@ -133,8 +135,6 @@ func runServer(obfuscator *obfs.XPlusObfuscator) error {
133
135
return err
134
136
}
135
137
136
- time .Sleep (time .Second * 2 )
137
- serverBuffer := make ([]byte , len (test_request ))
138
138
fmt .Println ("Server starts reading from connection" )
139
139
_ , err = serverConn .Read (serverBuffer )
140
140
@@ -145,6 +145,7 @@ func runServer(obfuscator *obfs.XPlusObfuscator) error {
145
145
s := string (serverBuffer )
146
146
if s == test_request {
147
147
fmt .Println ("Server received the expected data from the client" )
148
+ signal <- struct {}{}
148
149
_ , err = serverConn .Write ([]byte (test_response ))
149
150
fmt .Println ("Server sent the response to the client" )
150
151
return err
@@ -154,7 +155,7 @@ func runServer(obfuscator *obfs.XPlusObfuscator) error {
154
155
}
155
156
156
157
// Simulate a client
157
- func runClient (obfuscator * obfs.XPlusObfuscator ) error {
158
+ func runClient (obfuscator * obfs.XPlusObfuscator , signal chan struct {} ) error {
158
159
// Load TLS client config
159
160
var clientTlsConfig = & tls.Config {
160
161
InsecureSkipVerify : false ,
@@ -188,6 +189,7 @@ func runClient(obfuscator *obfs.XPlusObfuscator) error {
188
189
EnableDatagrams : true ,
189
190
}
190
191
192
+ <- signal
191
193
client , err := NewClient (server_addr , protocol , []byte (auth_str ), clientTlsConfig , quicConfig ,
192
194
transport .DefaultClientTransport , client_up_mbps , client_down_mbps ,
193
195
congestionFactory , obfuscator )
@@ -207,14 +209,13 @@ func runClient(obfuscator *obfs.XPlusObfuscator) error {
207
209
}
208
210
209
211
// write data from clientConn for server to read
210
- time .Sleep (time .Second * 2 )
211
212
_ , err = clientConn .Write ([]byte (test_request ))
212
213
if err != nil {
213
214
return err
214
215
}
215
216
fmt .Println ("Client sent the data to the server" )
216
217
217
- time . Sleep ( time . Second * 5 )
218
+ <- signal
218
219
clientBuffer := make ([]byte , len (test_response ))
219
220
fmt .Println ("Client starts reading from connection" )
220
221
_ , err = clientConn .Read (clientBuffer )
0 commit comments