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(); }
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)); } }