public void HasHosts_GivenHasHosts_ReturnsTrue()
        {
            var hostDistributor = new HostDistributor();

            hostDistributor.AddHost("https://www.somehost.com");
            Assert.IsTrue(hostDistributor.HasHosts());
        }
        public void NextHost_OnlyOneHostQueriedMultipleTimes_ReturnsSameHostName()
        {
            var hostDistributor = new HostDistributor();

            hostDistributor.AddHost("https://www.somehost.com");
            Assert.AreEqual("https://www.somehost.com", hostDistributor.NextHost());
            Assert.AreEqual("https://www.somehost.com", hostDistributor.NextHost());
        }
        public void RemoveHost_GivenDoesNotHaveHostName_ThrowsRpcException()
        {
            var hostDistributor = new HostDistributor();

            hostDistributor.AddHost("https://www.somehost.com");

            Assert.Throws <RpcException>(() => hostDistributor.RemoveHost("https://www.OtherHost.com"));
        }
        public void HasHostName_GivenDoesNotHaveHostName_ReturnsFalse()
        {
            var hostDistributor = new HostDistributor();

            hostDistributor.AddHost("https://www.somehost.com");

            Assert.IsFalse(hostDistributor.HasHost("https://www.somehost2.com"));
        }
        public void AddHost_GivenExistingHostName_ThrowsRpcException()
        {
            var hostDistributor = new HostDistributor();

            hostDistributor.AddHost("https://www.somehost.com");

            Assert.Throws <RpcException>(() => hostDistributor.AddHost("https://www.somehost.com"));
        }
        public void RemoveHost_GivenHasHostName_RemovesHostName()
        {
            var hostDistributor = new HostDistributor();

            hostDistributor.AddHost("https://www.somehost.com");

            hostDistributor.RemoveHost("https://www.somehost.com");
            Assert.IsFalse(hostDistributor.HasHost("https://www.somehost.com"));
        }
예제 #7
0
        private void RegistrationCreated(object sender, RegistrationCreatedEventArgs e)
        {
            if (_hostDistributor.TryGetValue(e.Registration.AppName, out var hostDistributor) && hostDistributor.HasHost(e.Registration.Host))
            {
                throw new RpcException(new Grpc.Core.Status(StatusCode.AlreadyExists, $"Application name {e.Registration.AppName} with host {e.Registration.Host} already exists"));
            }

            _hostDistributor.AddOrUpdate(e.Registration.AppName,
                                         (x) =>
            {
                hostDistributor = new HostDistributor();
                hostDistributor.AddHost(e.Registration.Host);
                return(hostDistributor);
            },
                                         (x, h) =>
            {
                h.AddHost(e.Registration.Host);
                return(h);
            });

            _logger.LogInformation($"Registration received for host for application with appName {e.Registration.AppName} and host appName {e.Registration.Host}");
        }
        public void HasHosts_GivenDoesNotHasHosts_ReturnsFalse()
        {
            var hostDistributor = new HostDistributor();

            Assert.IsFalse(hostDistributor.HasHosts());
        }
        public void RemoveHost_InvalidHostName_ThrowsRpcException(string host)
        {
            var hostDistributor = new HostDistributor();

            Assert.Throws <RpcException>(() => hostDistributor.RemoveHost(host));
        }