From c96533f2788a72244ea815112cdcabb7eaef4e8f Mon Sep 17 00:00:00 2001 From: v2ray Date: Mon, 25 Jul 2016 21:43:31 +0200 Subject: [PATCH] test case for server picker --- common/protocol/server_picker_test.go | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 common/protocol/server_picker_test.go diff --git a/common/protocol/server_picker_test.go b/common/protocol/server_picker_test.go new file mode 100644 index 000000000..5da4fdfcf --- /dev/null +++ b/common/protocol/server_picker_test.go @@ -0,0 +1,52 @@ +package protocol_test + +import ( + "testing" + "time" + + v2net "github.com/v2ray/v2ray-core/common/net" + . "github.com/v2ray/v2ray-core/common/protocol" + "github.com/v2ray/v2ray-core/testing/assert" +) + +func TestServerList(t *testing.T) { + assert := assert.On(t) + + list := NewServerList() + list.AddServer(NewServerSpec(v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(1)), AlwaysValid())) + assert.Uint32(list.Size()).Equals(1) + list.AddServer(NewServerSpec(v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(2)), BeforeTime(time.Now().Add(time.Second)))) + assert.Uint32(list.Size()).Equals(2) + + server := list.GetServer(1) + assert.Port(server.Destination().Port()).Equals(2) + time.Sleep(2 * time.Second) + server = list.GetServer(1) + assert.Pointer(server).IsNil() + + server = list.GetServer(0) + assert.Port(server.Destination().Port()).Equals(1) +} + +func TestServerPicker(t *testing.T) { + assert := assert.On(t) + + list := NewServerList() + list.AddServer(NewServerSpec(v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(1)), AlwaysValid())) + list.AddServer(NewServerSpec(v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(2)), BeforeTime(time.Now().Add(time.Second)))) + list.AddServer(NewServerSpec(v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(3)), BeforeTime(time.Now().Add(time.Second)))) + + picker := NewRoundRobinServerPicker(list) + server := picker.PickServer() + assert.Port(server.Destination().Port()).Equals(1) + server = picker.PickServer() + assert.Port(server.Destination().Port()).Equals(2) + server = picker.PickServer() + assert.Port(server.Destination().Port()).Equals(3) + + time.Sleep(2 * time.Second) + server = picker.PickServer() + assert.Port(server.Destination().Port()).Equals(1) + server = picker.PickServer() + assert.Port(server.Destination().Port()).Equals(1) +}