public void AddTenant()
        {
            var registryHost = new InMemoryRegistryHost();
            var hostBuilder  = new WebHostBuilder()
                               .ConfigureServices(services =>
            {
                services.AddNanophone(() => registryHost);
            })
                               .Configure(app =>
            {
                app.AddTenant(nameof(ApplicationBuilderExtensionsShould), "1.0.0", new Uri("http://localhost:1234"));

                var serviceRegistry = app.ApplicationServices.GetService <ServiceRegistry>();
                Assert.NotNull(serviceRegistry);

                var instances = serviceRegistry.FindAllServicesAsync().Result;
                Assert.Equal(1, instances.Count);
            });

            using (new TestServer(hostBuilder))
            {
                // ConfigureServices
                // Configure
            }
        }
        private async Task <IRegistryHost> GetInMemoryRegistryHost()
        {
            var registryHost = new InMemoryRegistryHost();
            await registryHost.KeyValuePutAsync("key1", "value1");

            await registryHost.KeyValuePutAsync("key2", "value2");

            await registryHost.KeyValuePutAsync("folder/key3", "value3");

            await registryHost.KeyValuePutAsync("folder/key4", "value4");

            return(registryHost);
        }
Exemplo n.º 3
0
        public Task AddRemoveTenantAndHealthCheck()
        {
            var registryHost = new InMemoryRegistryHost();
            var hostBuilder  = new WebHostBuilder()
                               .ConfigureServices(services =>
            {
                services.AddNanophone(() => registryHost);
            })
                               .Configure(async app =>
            {
                // add tenant
                var registryInformation = app.AddTenant(nameof(ApplicationBuilderExtensionsShould), "1.0.0", new Uri("http://localhost:1234"));
                Assert.NotNull(registryInformation);

                var serviceRegistry = app.ApplicationServices.GetService <ServiceRegistry>();
                Assert.NotNull(serviceRegistry);

                var instances = await serviceRegistry.FindAllServicesAsync();
                Assert.Equal(1, instances.Count);

                // add health check
                Assert.Null(app.AddHealthCheck(registryInformation, new Uri("http://localhost:4321")));

                // remove health check
                Assert.False(app.RemoveHealthCheck(nameof(AddRemoveTenantAndHealthCheck)));

                // remove tenant
                Assert.True(app.RemoveTenant(registryInformation.Id));
                instances = await serviceRegistry.FindAllServicesAsync();
                Assert.Equal(0, instances.Count);
            });

            using (new TestServer(hostBuilder))
            {
                // ConfigureServices
                // Configure
            }

            return(Task.FromResult(0));
        }
        public async Task BeRegistered()
        {
            var registryHost    = new InMemoryRegistryHost();
            var serviceRegistry = new ServiceRegistry(registryHost);

            // add tenant
            var    uri         = new Uri("http://localhost:1234");
            var    tenant      = new WebApiRegistryTenant(uri);
            string serviceName = nameof(WebApiRegistryTenantShould);
            await serviceRegistry.AddTenantAsync(tenant, serviceName, serviceName);

            // register
            var instance = (await registryHost.FindAllServicesAsync())
                           .FirstOrDefault(x => x.Name == serviceName);

            Assert.Equal(uri.Host, instance.Address);

            // dergister
            await registryHost.DeregisterServiceAsync(instance.Id);

            instance = (await registryHost.FindAllServicesAsync())
                       .FirstOrDefault(x => x.Name == serviceName);
            Assert.Null(instance);
        }