Chore: remove darwin code on test because orbstack can run it
This commit is contained in:
parent
45c10a17a6
commit
e4cd3e5306
@ -8,9 +8,9 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
"net"
|
||||||
|
"net/netip"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
|
||||||
"sync"
|
"sync"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@ -39,7 +39,7 @@ const (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
waitTime = time.Second
|
waitTime = time.Second
|
||||||
localIP = net.ParseIP("127.0.0.1")
|
localIP = netip.MustParseAddr("127.0.0.1")
|
||||||
|
|
||||||
defaultExposedPorts = nat.PortSet{
|
defaultExposedPorts = nat.PortSet{
|
||||||
"10002/tcp": struct{}{},
|
"10002/tcp": struct{}{},
|
||||||
@ -53,7 +53,6 @@ var (
|
|||||||
{HostPort: "10002", HostIP: "0.0.0.0"},
|
{HostPort: "10002", HostIP: "0.0.0.0"},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
isDarwin = runtime.GOOS == "darwin"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -64,13 +63,6 @@ func init() {
|
|||||||
homeDir := filepath.Join(currentDir, "config")
|
homeDir := filepath.Join(currentDir, "config")
|
||||||
C.SetHomeDir(homeDir)
|
C.SetHomeDir(homeDir)
|
||||||
|
|
||||||
if isDarwin {
|
|
||||||
localIP, err = defaultRouteIP()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
c, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
|
c, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -302,7 +294,7 @@ func testPingPongWithPacketConn(t *testing.T, pc net.PacketConn) error {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer l.Close()
|
defer l.Close()
|
||||||
|
|
||||||
rAddr := &net.UDPAddr{IP: localIP, Port: 10001}
|
rAddr := &net.UDPAddr{IP: localIP.AsSlice(), Port: 10001}
|
||||||
|
|
||||||
pingCh, pongCh, test := newPingPongPair()
|
pingCh, pongCh, test := newPingPongPair()
|
||||||
go func() {
|
go func() {
|
||||||
@ -437,7 +429,7 @@ func testLargeDataWithPacketConn(t *testing.T, pc net.PacketConn) error {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer l.Close()
|
defer l.Close()
|
||||||
|
|
||||||
rAddr := &net.UDPAddr{IP: localIP, Port: 10001}
|
rAddr := &net.UDPAddr{IP: localIP.AsSlice(), Port: 10001}
|
||||||
|
|
||||||
times := 50
|
times := 50
|
||||||
chunkSize := int64(1024)
|
chunkSize := int64(1024)
|
||||||
@ -570,7 +562,7 @@ func testSuit(t *testing.T, proxy C.ProxyAdapter) {
|
|||||||
|
|
||||||
pc, err := proxy.ListenPacketContext(context.Background(), &C.Metadata{
|
pc, err := proxy.ListenPacketContext(context.Background(), &C.Metadata{
|
||||||
NetWork: C.UDP,
|
NetWork: C.UDP,
|
||||||
DstIP: localIP,
|
DstIP: localIP.AsSlice(),
|
||||||
DstPort: 10001,
|
DstPort: 10001,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@ -580,7 +572,7 @@ func testSuit(t *testing.T, proxy C.ProxyAdapter) {
|
|||||||
|
|
||||||
pc, err = proxy.ListenPacketContext(context.Background(), &C.Metadata{
|
pc, err = proxy.ListenPacketContext(context.Background(), &C.Metadata{
|
||||||
NetWork: C.UDP,
|
NetWork: C.UDP,
|
||||||
DstIP: localIP,
|
DstIP: localIP.AsSlice(),
|
||||||
DstPort: 10001,
|
DstPort: 10001,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@ -590,7 +582,7 @@ func testSuit(t *testing.T, proxy C.ProxyAdapter) {
|
|||||||
|
|
||||||
pc, err = proxy.ListenPacketContext(context.Background(), &C.Metadata{
|
pc, err = proxy.ListenPacketContext(context.Background(), &C.Metadata{
|
||||||
NetWork: C.UDP,
|
NetWork: C.UDP,
|
||||||
DstIP: localIP,
|
DstIP: localIP.AsSlice(),
|
||||||
DstPort: 10001,
|
DstPort: 10001,
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -15,10 +15,7 @@ func startContainer(cfg *container.Config, hostCfg *container.HostConfig, name s
|
|||||||
}
|
}
|
||||||
defer c.Close()
|
defer c.Close()
|
||||||
|
|
||||||
if !isDarwin {
|
hostCfg.NetworkMode = "host"
|
||||||
hostCfg.NetworkMode = "host"
|
|
||||||
}
|
|
||||||
|
|
||||||
container, err := c.ContainerCreate(context.Background(), cfg, hostCfg, nil, nil, name)
|
container, err := c.ContainerCreate(context.Background(), cfg, hostCfg, nil, nil, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
@ -9,7 +9,6 @@ require (
|
|||||||
github.com/miekg/dns v1.1.55
|
github.com/miekg/dns v1.1.55
|
||||||
github.com/stretchr/testify v1.8.4
|
github.com/stretchr/testify v1.8.4
|
||||||
go.uber.org/automaxprocs v1.5.3
|
go.uber.org/automaxprocs v1.5.3
|
||||||
golang.org/x/net v0.14.0
|
|
||||||
)
|
)
|
||||||
|
|
||||||
replace github.com/Dreamacro/clash => ../
|
replace github.com/Dreamacro/clash => ../
|
||||||
@ -48,6 +47,7 @@ require (
|
|||||||
golang.org/x/crypto v0.12.0 // indirect
|
golang.org/x/crypto v0.12.0 // indirect
|
||||||
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
|
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
|
||||||
golang.org/x/mod v0.8.0 // indirect
|
golang.org/x/mod v0.8.0 // indirect
|
||||||
|
golang.org/x/net v0.14.0 // indirect
|
||||||
golang.org/x/sync v0.3.0 // indirect
|
golang.org/x/sync v0.3.0 // indirect
|
||||||
golang.org/x/sys v0.11.0 // indirect
|
golang.org/x/sys v0.11.0 // indirect
|
||||||
golang.org/x/text v0.12.0 // indirect
|
golang.org/x/text v0.12.0 // indirect
|
||||||
|
@ -1,70 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"net"
|
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"golang.org/x/net/route"
|
|
||||||
)
|
|
||||||
|
|
||||||
func defaultRouteIP() (net.IP, error) {
|
|
||||||
idx, err := defaultRouteInterfaceIndex()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
iface, err := net.InterfaceByIndex(idx)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
addrs, err := iface.Addrs()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
for _, addr := range addrs {
|
|
||||||
ip := addr.(*net.IPNet).IP
|
|
||||||
if ip.To4() != nil {
|
|
||||||
return ip, nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, errors.New("no ipv4 addr")
|
|
||||||
}
|
|
||||||
|
|
||||||
func defaultRouteInterfaceIndex() (int, error) {
|
|
||||||
rib, err := route.FetchRIB(syscall.AF_UNSPEC, syscall.NET_RT_DUMP2, 0)
|
|
||||||
if err != nil {
|
|
||||||
return 0, fmt.Errorf("route.FetchRIB: %w", err)
|
|
||||||
}
|
|
||||||
msgs, err := route.ParseRIB(syscall.NET_RT_IFLIST2, rib)
|
|
||||||
if err != nil {
|
|
||||||
return 0, fmt.Errorf("route.ParseRIB: %w", err)
|
|
||||||
}
|
|
||||||
for _, message := range msgs {
|
|
||||||
routeMessage := message.(*route.RouteMessage)
|
|
||||||
if routeMessage.Flags&(syscall.RTF_UP|syscall.RTF_GATEWAY|syscall.RTF_STATIC) == 0 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
addresses := routeMessage.Addrs
|
|
||||||
|
|
||||||
destination, ok := addresses[0].(*route.Inet4Addr)
|
|
||||||
if !ok {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if destination.IP != [4]byte{0, 0, 0, 0} {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
switch addresses[1].(type) {
|
|
||||||
case *route.Inet4Addr:
|
|
||||||
return routeMessage.Index, nil
|
|
||||||
default:
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0, fmt.Errorf("ambiguous gateway interfaces found")
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
//go:build !darwin
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"net"
|
|
||||||
)
|
|
||||||
|
|
||||||
func defaultRouteIP() (net.IP, error) {
|
|
||||||
return nil, errors.New("not supported")
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user