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

Function TestCreateUDPStream

http3/client_test.go:96–162  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

94}
95
96func TestCreateUDPStream(t *testing.T) {
97 expectedRequest := "test udp request data\n"
98 expectedResponse := "test udp response data\n"
99
100 // Start target udp server
101 // We want to listen on the gateway IP so the proxy container can access it.
102 conn, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP(containerGateway)})
103 require.NoError(t, err, "net.ListenUDP")
104
105 go func() {
106 var buf [512]byte
107 n, addr, err := conn.ReadFromUDP(buf[0:])
108 require.NoError(t, err, "ReadFromUDP")
109 assert.Equal(t, expectedRequest, string(buf[0:n]), "Should receive correct UDP request")
110
111 logger.Info("ReadFromUDP", "buf", buf, "addr", addr)
112
113 // Write back the message over UPD
114 _, err = conn.WriteToUDP([]byte(expectedResponse), addr)
115 require.NoError(t, err, "conn.WriteToUDP")
116 }()
117
118 udpListenAddr := conn.LocalAddr()
119
120 urlSplit := strings.Split(udpListenAddr.String(), ":")
121 udpListenPort := urlSplit[len(urlSplit)-1]
122
123 // Now configure and start the MASQUE client
124 certDataFile := fmt.Sprintf("%s/testdata/h2o/server.crt", testutils.RootDir())
125 certData, err := os.ReadFile(certDataFile)
126 require.NoError(t, err, "Reading certData")
127
128 config := ClientConfig{
129 ProxyAddr: "localhost:8444",
130 // The h2o server we're using doesn't require an actual token so this can be anything
131 AuthToken: "fake-token",
132 Logger: logger,
133 CertData: certData,
134 Insecure: true,
135 }
136
137 c, err := NewClient(config)
138 defer func() {
139 if err := c.Close(); err != nil {
140 logger.Warn("Error closing", "err", err)
141 }
142 }()
143 require.NoError(t, err, "NewClient")
144
145 dockerHostURL := fmt.Sprintf("%v:%v", containerGateway, udpListenPort)
146
147 udpConn, err := c.CreateUDPStream(dockerHostURL)
148 require.NoError(t, err, "CreateUDPStream")
149 defer func() {
150 require.NoError(t, udpConn.Close(), "udpConn.Close()")
151 }()
152
153 _, err = udpConn.Write([]byte(expectedRequest))

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected