MCPcopy Create free account
hub / github.com/Invisv-Privacy/masque / TestCreateUDPStream

Function TestCreateUDPStream

http2/client_test.go:196–255  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

194}
195
196func TestCreateUDPStream(t *testing.T) {
197 expectedRequest := "test udp request data\n"
198 expectedResponse := "test udp response data\n"
199
200 // Start target udp server
201 // We want to listen on the gateway IP so the proxy container can access it.
202 conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP(containerGateway)})
203 require.NoError(t, err, "net.ListenUDP")
204
205 go func() {
206 var buf [512]byte
207 n, addr, err := conn.ReadFromUDP(buf[0:])
208 require.NoError(t, err, "ReadFromUDP")
209 assert.Equal(t, expectedRequest, string(buf[0:n]), "Should receive correct UDP request")
210
211 logger.Info("ReadFromUDP", "buf", buf, "addr", addr)
212
213 // Write back the message over UPD
214 _, err = conn.WriteToUDP([]byte(expectedResponse), addr)
215 require.NoError(t, err, "conn.WriteToUDP")
216 }()
217
218 udpListenAddr := conn.LocalAddr()
219
220 urlSplit := strings.Split(udpListenAddr.String(), ":")
221 udpListenPort := urlSplit[len(urlSplit)-1]
222
223 // Now configure and start the MASQUE client
224 certDataFile := fmt.Sprintf("%s/testdata/h2o/server.crt", testutils.RootDir())
225 certData, err := os.ReadFile(certDataFile)
226 require.NoError(t, err, "Reading certData")
227
228 config := ClientConfig{
229 ProxyAddr: "localhost:8444",
230 // The h2o server we're using doesn't require an actual token so this can be anything
231 AuthToken: "fake-token",
232 Logger: logger,
233 CertData: certData,
234 }
235
236 c := NewClient(config)
237
238 dockerHostURL := fmt.Sprintf("%v:%v", containerGateway, udpListenPort)
239
240 udpConn, err := c.CreateUDPStream(dockerHostURL)
241 require.NoError(t, err, "CreateUDPStream")
242 defer func() {
243 require.NoError(t, udpConn.Close(), "udpConn.Close()")
244 }()
245
246 _, err = udpConn.Write([]byte(expectedRequest))
247 require.NoError(t, err, "udpConn.Write")
248
249 var buf [512]byte
250 n, err := udpConn.Read(buf[0:])
251 require.NoError(t, err, "udpConn.Read")
252
253 assert.Equal(t, expectedResponse, string(buf[0:n]), "Should receive correct UDP response")

Callers

nothing calls this directly

Calls 7

CreateUDPStreamMethod · 0.95
RootDirFunction · 0.92
LocalAddrMethod · 0.80
NewClientFunction · 0.70
CloseMethod · 0.45
WriteMethod · 0.45
ReadMethod · 0.45

Tested by

no test coverage detected