Files
kubevpn/pkg/daemon/ws_test.go
2023-10-29 17:11:53 +08:00

62 lines
1.3 KiB
Go

package daemon
import (
"context"
"fmt"
"io"
"net"
"net/http"
"strings"
"testing"
"time"
)
func TestName(t *testing.T) {
httpc := http.Client{
Transport: &http.Transport{
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", GetSockPath(false))
},
},
}
resp, err := httpc.Get("http://test" + "/ws")
if err != nil {
t.Fatal(err)
}
//c.Transport = transport // use the unix dialer
//uri := fmt.Sprintf("http://%s/%s", daemon.GetSockPath(false), "ws")
//resp, err := c.Get(uri)
//if err != nil {
// fmt.Println(err.Error())
// return
//}
all, _ := io.ReadAll(resp.Body)
fmt.Println(string(all))
}
type unixDialer struct {
net.Dialer
}
// overriding net.Dialer.Dial to force unix socket connection
func (d *unixDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
parts := strings.Split(address, ":")
return d.Dialer.Dial("unix", parts[0])
}
// copied from http.DefaultTransport with minimal changes
var transport http.RoundTripper = &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&unixDialer{net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
},
}).DialContext,
TLSHandshakeTimeout: 10 * time.Second,
}