public void ResolveHost_RegisteredInDistributor_ShouldReturnNextHost() { var inMemoryProvider = new InMemoryRegistrationProvider(_inMemoryLoggerMock.Object, _configurationMock); var discovery = new RoundRobinDistribution(inMemoryProvider, _discoveryLoggerMock.Object); var uid = inMemoryProvider.Register("ClientApp", "https://www.someclient.com"); var host = discovery.ResolveHost(uid, "ClientApp"); Assert.AreEqual("https://www.someclient.com", host); }
public void ResolveHost_NoRegistration_ThrowsRpcException() { var discovery = new RoundRobinDistribution(_inMemoryProvider, _discoveryLoggerMock.Object); Assert.Throws <RpcException>(() => discovery.ResolveHost( new UUID() { Value = Guid.NewGuid().ToString() }, "SomeAppName")); }
public static void AddDiscoverio(this IServiceCollection serviceCollection) { var provider = serviceCollection.BuildServiceProvider(); var registrationProviderLogger = provider.GetService <ILogger <InMemoryRegistrationProvider> >(); var distributionLogger = provider.GetService <ILogger <RoundRobinDistribution> >(); var configuration = provider.GetService <IConfiguration>(); var inMemoryRegistrationProvider = new InMemoryRegistrationProvider(registrationProviderLogger, configuration); var roundRobinDistribution = new RoundRobinDistribution(inMemoryRegistrationProvider, distributionLogger); serviceCollection.AddSingleton <IRegistrationProvider, InMemoryRegistrationProvider>(x => inMemoryRegistrationProvider); serviceCollection.AddSingleton <IServiceDiscoveryLoadBalancer, RoundRobinDistribution>(x => roundRobinDistribution); }
public void ResolveHost_NotRegisteredInDistributor_ThrowsRpcException() { var uid = Guid.NewGuid().ToString(); var inMemoryProvider = new Mock <IRegistrationProvider>(); inMemoryProvider.Setup(x => x.HasRegistration(It.IsAny <UUID>())).Returns(true); var discovery = new RoundRobinDistribution(inMemoryProvider.Object, _discoveryLoggerMock.Object); Assert.Throws <RpcException>(() => discovery.ResolveHost( new UUID() { Value = uid }, "SomeAppName" ) ); }
public void ResolveHost_RegistrationExpiredInDistributor_ThrowsRpcException() { var inMemorySettings = new Dictionary <string, string> { { "Discoverio.Server:DeRegisterCycleFrequency", "1" }, { "Discoverio.Server:ElapsedTimeToDeRegister", "1" }, }; var configuration = new ConfigurationBuilder() .AddInMemoryCollection(inMemorySettings) .Build(); var inMemoryProvider = new InMemoryRegistrationProvider(_inMemoryLoggerMock.Object, configuration); var discovery = new RoundRobinDistribution(inMemoryProvider, _discoveryLoggerMock.Object); var uid = inMemoryProvider.Register("ClientApp", "https://www.someclient.com"); var host = discovery.ResolveHost(uid, "ClientApp"); Assert.AreEqual("https://www.someclient.com", host); Thread.Sleep(TimeSpan.FromSeconds(2)); Assert.Throws <RpcException>(() => discovery.ResolveHost(uid, "SomeAppName")); }