| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | package protocol_testimport (	"testing"	"time"	v2net "v2ray.com/core/common/net"	. "v2ray.com/core/common/protocol"	"v2ray.com/core/testing/assert")func TestServerList(t *testing.T) {	assert := assert.On(t)	list := NewServerList()	list.AddServer(NewServerSpec(nil, v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(1)), AlwaysValid()))	assert.Uint32(list.Size()).Equals(1)	list.AddServer(NewServerSpec(nil, 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(nil, v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(1)), AlwaysValid()))	list.AddServer(NewServerSpec(nil, v2net.TCPDestination(v2net.LocalHostIP, v2net.Port(2)), BeforeTime(time.Now().Add(time.Second))))	list.AddServer(NewServerSpec(nil, 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)	server = picker.PickServer()	assert.Port(server.Destination().Port()).Equals(1)	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)}
 |