Пример #1
0
        public async void PollingAddressChangeTest()
        {
            IAddressSelector selector = new PollingAddressSelector(_serviceRouteManager);

            await selector.SelectAsync(GetSelectContext());

            await selector.SelectAsync(GetSelectContext());

            var address = (IpAddressModel)await selector.SelectAsync(GetSelectContext());

            Assert.Equal(3, address.Port);

            //更新路由信息。
            await _serviceRouteManager.SetRoutesAsync(new[]
            {
                new ServiceRoute
                {
                    Address = new[]
                    {
                        new IpAddressModel("127.0.0.1", 0),
                        new IpAddressModel("127.0.0.1", 2)
                    },
                    ServiceDescriptor = new ServiceDescriptor
                    {
                        Id = "service1"
                    }
                }
            });

            address = (IpAddressModel)await selector.SelectAsync(GetSelectContext());

            Assert.Equal(0, address.Port);
            address = (IpAddressModel)await selector.SelectAsync(GetSelectContext());

            Assert.Equal(2, address.Port);

            ((TestServiceRouteManager)_serviceRouteManager).Reset();
        }
Пример #2
0
        public async void PollingAddressSyncTest()
        {
            IAddressSelector selector = new PollingAddressSelector(_serviceRouteManager);

            var context = GetSelectContext();

            var numbers = new List <int>();

            for (var i = 0; i < 500; i++)
            {
                var address = (IpAddressModel)await selector.SelectAsync(context);

                numbers.Add(address.Port);
            }

            var isOk = true;

            for (var i = 0; i < numbers.Count; i++)
            {
                if (numbers.Count == i + 1)
                {
                    break;
                }
                var current = numbers[i];
                var next    = numbers[i + 1];
                if (current == next - 1)
                {
                    continue;
                }
                isOk = false;
                break;
            }
            if (isOk)
            {
                Assert.True(true);
            }
            else
            {
                Assert.False(false, string.Join("", numbers));
            }
        }