From 9b830fc432f0dcd852483d262c4702341110b461 Mon Sep 17 00:00:00 2001 From: Darien Raymond Date: Wed, 2 Dec 2015 23:41:34 +0000 Subject: [PATCH] update end 2 end test --- app/router/config/testing/config.go | 14 ++++++ app/router/rules/config/testing/router.go | 17 +++++++ app/router/rules/router.go | 3 +- common/log/log.go | 4 +- shell/point/config/testing/mocks/config.go | 27 ++++++++--- testing/scenarios/socks5_helper.go | 56 ++++++++++++++++++---- testing/scenarios/socks_end_test.go | 12 +++-- 7 files changed, 111 insertions(+), 22 deletions(-) create mode 100644 app/router/config/testing/config.go create mode 100644 app/router/rules/config/testing/router.go diff --git a/app/router/config/testing/config.go b/app/router/config/testing/config.go new file mode 100644 index 000000000..bd1d314bb --- /dev/null +++ b/app/router/config/testing/config.go @@ -0,0 +1,14 @@ +package testing + +type RouterConfig struct { + StrategyValue string + SettingsValue interface{} +} + +func (this *RouterConfig) Strategy() string { + return this.StrategyValue +} + +func (this *RouterConfig) Settings() interface{} { + return this.SettingsValue +} diff --git a/app/router/rules/config/testing/router.go b/app/router/rules/config/testing/router.go new file mode 100644 index 000000000..f8c4c6e12 --- /dev/null +++ b/app/router/rules/config/testing/router.go @@ -0,0 +1,17 @@ +package testing + +import ( + "github.com/v2ray/v2ray-core/app/router/rules/config" +) + +type RouterRuleConfig struct { + RuleList []*TestRule +} + +func (this *RouterRuleConfig) Rules() []config.Rule { + rules := make([]config.Rule, len(this.RuleList)) + for idx, rule := range this.RuleList { + rules[idx] = rule + } + return rules +} diff --git a/app/router/rules/router.go b/app/router/rules/router.go index b8c4752a6..1a72ce444 100644 --- a/app/router/rules/router.go +++ b/app/router/rules/router.go @@ -5,7 +5,6 @@ import ( "github.com/v2ray/v2ray-core/app/router" "github.com/v2ray/v2ray-core/app/router/rules/config" - "github.com/v2ray/v2ray-core/app/router/rules/config/json" v2net "github.com/v2ray/v2ray-core/common/net" ) @@ -31,7 +30,7 @@ type RouterFactory struct { } func (this *RouterFactory) Create(rawConfig interface{}) (router.Router, error) { - config := rawConfig.(*json.RouterRuleConfig) + config := rawConfig.(config.RouterRuleConfig) rules := config.Rules() for _, rule := range rules { if rule == nil { diff --git a/common/log/log.go b/common/log/log.go index e574c494e..e771cc26f 100644 --- a/common/log/log.go +++ b/common/log/log.go @@ -46,8 +46,8 @@ var ( debugLogger = noOpLoggerInstance infoLogger = noOpLoggerInstance - warningLogger = noOpLoggerInstance - errorLogger = noOpLoggerInstance + warningLogger = streamLoggerInstance + errorLogger = streamLoggerInstance ) type LogLevel int diff --git a/shell/point/config/testing/mocks/config.go b/shell/point/config/testing/mocks/config.go index 144694df8..5fadfbb4b 100644 --- a/shell/point/config/testing/mocks/config.go +++ b/shell/point/config/testing/mocks/config.go @@ -2,6 +2,7 @@ package mocks import ( routerconfig "github.com/v2ray/v2ray-core/app/router/config" + routertestingconfig "github.com/v2ray/v2ray-core/app/router/config/testing" v2net "github.com/v2ray/v2ray-core/common/net" "github.com/v2ray/v2ray-core/shell/point/config" ) @@ -37,7 +38,7 @@ func (this *PortRange) To() v2net.Port { } type InboundDetourConfig struct { - ConnectionConfig + *ConnectionConfig PortRangeValue *PortRange } @@ -46,7 +47,7 @@ func (this *InboundDetourConfig) PortRange() v2net.PortRange { } type OutboundDetourConfig struct { - ConnectionConfig + *ConnectionConfig TagValue string } @@ -61,7 +62,7 @@ func (config *LogConfig) AccessLog() string { type Config struct { PortValue v2net.Port LogConfigValue *LogConfig - RouterConfigValue routerconfig.RouterConfig + RouterConfigValue *routertestingconfig.RouterConfig InboundConfigValue *ConnectionConfig OutboundConfigValue *ConnectionConfig InboundDetoursValue []*InboundDetourConfig @@ -73,19 +74,31 @@ func (config *Config) Port() v2net.Port { } func (config *Config) LogConfig() config.LogConfig { + if config.LogConfigValue == nil { + return nil + } return config.LogConfigValue } func (this *Config) RouterConfig() routerconfig.RouterConfig { + if this.RouterConfigValue == nil { + return nil + } return this.RouterConfigValue } -func (config *Config) InboundConfig() config.ConnectionConfig { - return config.InboundConfigValue +func (this *Config) InboundConfig() config.ConnectionConfig { + if this.InboundConfigValue == nil { + return nil + } + return this.InboundConfigValue } -func (config *Config) OutboundConfig() config.ConnectionConfig { - return config.OutboundConfigValue +func (this *Config) OutboundConfig() config.ConnectionConfig { + if this.OutboundConfigValue == nil { + return nil + } + return this.OutboundConfigValue } func (this *Config) InboundDetours() []config.InboundDetourConfig { diff --git a/testing/scenarios/socks5_helper.go b/testing/scenarios/socks5_helper.go index 91f69be6b..357e725a2 100644 --- a/testing/scenarios/socks5_helper.go +++ b/testing/scenarios/socks5_helper.go @@ -3,6 +3,9 @@ package scenarios import ( "net" + routerconfig "github.com/v2ray/v2ray-core/app/router/config/testing" + _ "github.com/v2ray/v2ray-core/app/router/rules" + rulesconfig "github.com/v2ray/v2ray-core/app/router/rules/config/testing" v2net "github.com/v2ray/v2ray-core/common/net" v2nettesting "github.com/v2ray/v2ray-core/common/net/testing" _ "github.com/v2ray/v2ray-core/proxy/freedom" @@ -58,14 +61,14 @@ func socks5UDPRequest(address v2net.Address, payload []byte) []byte { return request } -func setUpV2Ray() (v2net.Port, error) { +func setUpV2Ray(routing func(v2net.Destination) bool) (v2net.Port, v2net.Port, error) { id1, err := config.NewID("ad937d9d-6e23-4a5a-ba23-bce5092a7c51") if err != nil { - return 0, err + return 0, 0, err } id2, err := config.NewID("93ccfc71-b136-4015-ac85-e037bd1ead9e") if err != nil { - return 0, err + return 0, 0, err } users := []*vmessjson.ConfigUser{ &vmessjson.ConfigUser{Id: id1}, @@ -88,14 +91,15 @@ func setUpV2Ray() (v2net.Port, error) { } pointB, err := point.NewPoint(&configB) if err != nil { - return 0, err + return 0, 0, err } err = pointB.Start() if err != nil { - return 0, err + return 0, 0, err } portA := v2nettesting.PickPort() + portA2 := v2nettesting.PickPort() configA := mocks.Config{ PortValue: portA, InboundConfigValue: &mocks.ConnectionConfig{ @@ -117,16 +121,52 @@ func setUpV2Ray() (v2net.Port, error) { }, }, }, + InboundDetoursValue: []*mocks.InboundDetourConfig{ + &mocks.InboundDetourConfig{ + PortRangeValue: &mocks.PortRange{ + FromValue: portA2, + ToValue: portA2, + }, + ConnectionConfig: &mocks.ConnectionConfig{ + ProtocolValue: "socks", + SettingsValue: &socksjson.SocksConfig{ + AuthMethod: "noauth", + UDPEnabled: false, + HostIP: socksjson.IPAddress(net.IPv4(127, 0, 0, 1)), + }, + }, + }, + }, + OutboundDetoursValue: []*mocks.OutboundDetourConfig{ + &mocks.OutboundDetourConfig{ + TagValue: "direct", + ConnectionConfig: &mocks.ConnectionConfig{ + ProtocolValue: "freedom", + SettingsValue: nil, + }, + }, + }, + RouterConfigValue: &routerconfig.RouterConfig{ + StrategyValue: "rules", + SettingsValue: &rulesconfig.RouterRuleConfig{ + RuleList: []*rulesconfig.TestRule{ + &rulesconfig.TestRule{ + TagValue: "direct", + Function: routing, + }, + }, + }, + }, } pointA, err := point.NewPoint(&configA) if err != nil { - return 0, err + return 0, 0, err } err = pointA.Start() if err != nil { - return 0, err + return 0, 0, err } - return portA, nil + return portA, portA2, nil } diff --git a/testing/scenarios/socks_end_test.go b/testing/scenarios/socks_end_test.go index 5d03796e2..3553d5b3f 100644 --- a/testing/scenarios/socks_end_test.go +++ b/testing/scenarios/socks_end_test.go @@ -12,6 +12,12 @@ import ( "github.com/v2ray/v2ray-core/testing/servers/udp" ) +var ( + EmptyRouting = func(v2net.Destination) bool { + return false + } +) + func TestTCPConnection(t *testing.T) { v2testing.Current(t) @@ -28,7 +34,7 @@ func TestTCPConnection(t *testing.T) { _, err := tcpServer.Start() assert.Error(err).IsNil() - v2rayPort, err := setUpV2Ray() + v2rayPort, _, err := setUpV2Ray(EmptyRouting) assert.Error(err).IsNil() for i := 0; i < 100; i++ { @@ -94,7 +100,7 @@ func TestTCPBind(t *testing.T) { _, err := tcpServer.Start() assert.Error(err).IsNil() - v2rayPort, err := setUpV2Ray() + v2rayPort, _, err := setUpV2Ray(EmptyRouting) assert.Error(err).IsNil() conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{ @@ -141,7 +147,7 @@ func TestUDPAssociate(t *testing.T) { _, err := udpServer.Start() assert.Error(err).IsNil() - v2rayPort, err := setUpV2Ray() + v2rayPort, _, err := setUpV2Ray(EmptyRouting) assert.Error(err).IsNil() conn, err := net.DialTCP("tcp", nil, &net.TCPAddr{