| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | package protocol_testimport (	"testing"	"time"	"v2ray.com/core/common/net"	. "v2ray.com/core/common/protocol"	. "v2ray.com/ext/assert")func TestServerList(t *testing.T) {	assert := With(t)	list := NewServerList()	list.AddServer(NewServerSpec(net.TCPDestination(net.LocalHostIP, net.Port(1)), AlwaysValid()))	assert(list.Size(), Equals, uint32(1))	list.AddServer(NewServerSpec(net.TCPDestination(net.LocalHostIP, net.Port(2)), BeforeTime(time.Now().Add(time.Second))))	assert(list.Size(), Equals, uint32(2))	server := list.GetServer(1)	assert(server.Destination().Port, Equals, net.Port(2))	time.Sleep(2 * time.Second)	server = list.GetServer(1)	assert(server, IsNil)	server = list.GetServer(0)	assert(server.Destination().Port, Equals, net.Port(1))}func TestServerPicker(t *testing.T) {	assert := With(t)	list := NewServerList()	list.AddServer(NewServerSpec(net.TCPDestination(net.LocalHostIP, net.Port(1)), AlwaysValid()))	list.AddServer(NewServerSpec(net.TCPDestination(net.LocalHostIP, net.Port(2)), BeforeTime(time.Now().Add(time.Second))))	list.AddServer(NewServerSpec(net.TCPDestination(net.LocalHostIP, net.Port(3)), BeforeTime(time.Now().Add(time.Second))))	picker := NewRoundRobinServerPicker(list)	server := picker.PickServer()	assert(server.Destination().Port, Equals, net.Port(1))	server = picker.PickServer()	assert(server.Destination().Port, Equals, net.Port(2))	server = picker.PickServer()	assert(server.Destination().Port, Equals, net.Port(3))	server = picker.PickServer()	assert(server.Destination().Port, Equals, net.Port(1))	time.Sleep(2 * time.Second)	server = picker.PickServer()	assert(server.Destination().Port, Equals, net.Port(1))	server = picker.PickServer()	assert(server.Destination().Port, Equals, net.Port(1))}
 |