Files
kubevpn/pkg/daemon/unix_socket_test.go
naison 1a9593f140 feat: optimize code (#96)
optimize code and fix testcase
2023-11-23 12:35:34 +08:00

60 lines
1.3 KiB
Go

package daemon
import (
"context"
"fmt"
"io"
"net"
"net/http"
"os"
"path/filepath"
"testing"
"time"
"golang.org/x/net/http2"
"golang.org/x/net/http2/h2c"
)
func TestHttpOverUnix(t *testing.T) {
file := filepath.Join(os.TempDir(), "kubevpn.socks")
client := http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
TLSHandshakeTimeout: 10 * time.Second,
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
var d net.Dialer
d.Timeout = 30 * time.Second
d.KeepAlive = 30 * time.Second
return d.DialContext(ctx, "unix", file)
},
},
}
go func() {
listener, err := net.Listen("unix", file)
if err != nil {
t.Fatal(err)
}
defer listener.Close()
downgradingServer := &http.Server{}
defer downgradingServer.Close()
var h2Server http2.Server
err = http2.ConfigureServer(downgradingServer, &h2Server)
if err != nil {
t.Fatal(err)
}
downgradingServer.Handler = h2c.NewHandler(http.HandlerFunc(http.DefaultServeMux.ServeHTTP), &h2Server)
downgradingServer.Serve(listener)
}()
time.Sleep(time.Second * 2)
//var resp *http.Response
resp, err := client.Get("http://test" + "/ws")
if err != nil {
t.Fatal(err)
}
all, _ := io.ReadAll(resp.Body)
fmt.Println(string(all))
}