1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- package core_test
- import (
- "testing"
- "google.golang.org/protobuf/proto"
- "google.golang.org/protobuf/types/known/anypb"
- . "github.com/v2fly/v2ray-core/v5"
- "github.com/v2fly/v2ray-core/v5/app/dispatcher"
- "github.com/v2fly/v2ray-core/v5/app/proxyman"
- "github.com/v2fly/v2ray-core/v5/common"
- "github.com/v2fly/v2ray-core/v5/common/net"
- "github.com/v2fly/v2ray-core/v5/common/protocol"
- "github.com/v2fly/v2ray-core/v5/common/serial"
- "github.com/v2fly/v2ray-core/v5/common/uuid"
- "github.com/v2fly/v2ray-core/v5/features/dns"
- "github.com/v2fly/v2ray-core/v5/features/dns/localdns"
- _ "github.com/v2fly/v2ray-core/v5/main/distro/all"
- "github.com/v2fly/v2ray-core/v5/proxy/dokodemo"
- "github.com/v2fly/v2ray-core/v5/proxy/vmess"
- "github.com/v2fly/v2ray-core/v5/proxy/vmess/outbound"
- "github.com/v2fly/v2ray-core/v5/testing/servers/tcp"
- )
- func TestV2RayDependency(t *testing.T) {
- instance := new(Instance)
- wait := make(chan bool, 1)
- instance.RequireFeatures(func(d dns.Client) {
- if d == nil {
- t.Error("expected dns client fulfilled, but actually nil")
- }
- wait <- true
- })
- instance.AddFeature(localdns.New())
- <-wait
- }
- func TestV2RayClose(t *testing.T) {
- port := tcp.PickPort()
- userID := uuid.New()
- config := &Config{
- App: []*anypb.Any{
- serial.ToTypedMessage(&dispatcher.Config{}),
- serial.ToTypedMessage(&proxyman.InboundConfig{}),
- serial.ToTypedMessage(&proxyman.OutboundConfig{}),
- },
- Inbound: []*InboundHandlerConfig{
- {
- ReceiverSettings: serial.ToTypedMessage(&proxyman.ReceiverConfig{
- PortRange: net.SinglePortRange(port),
- Listen: net.NewIPOrDomain(net.LocalHostIP),
- }),
- ProxySettings: serial.ToTypedMessage(&dokodemo.Config{
- Address: net.NewIPOrDomain(net.LocalHostIP),
- Port: uint32(0),
- NetworkList: &net.NetworkList{
- Network: []net.Network{net.Network_TCP, net.Network_UDP},
- },
- }),
- },
- },
- Outbound: []*OutboundHandlerConfig{
- {
- ProxySettings: serial.ToTypedMessage(&outbound.Config{
- Receiver: []*protocol.ServerEndpoint{
- {
- Address: net.NewIPOrDomain(net.LocalHostIP),
- Port: uint32(0),
- User: []*protocol.User{
- {
- Account: serial.ToTypedMessage(&vmess.Account{
- Id: userID.String(),
- }),
- },
- },
- },
- },
- }),
- },
- },
- }
- cfgBytes, err := proto.Marshal(config)
- common.Must(err)
- server, err := StartInstance(FormatProtobuf, cfgBytes)
- common.Must(err)
- server.Close()
- }
|