Пример #1
0
        public async Task <Result> Define(string vhost, Action <VirtualHostLimitsConfigurator> configurator = null,
                                          CancellationToken cancellationToken = default)
        {
            cancellationToken.RequestCanceled();

            var impl = new VirtualHostLimitsConfiguratorImpl();

            configurator?.Invoke(impl);

            impl.Validate();

            VirtualHostLimitsRequest request = impl.Request.Value;

            var errors = new List <Error>();

            errors.AddRange(impl.Errors.Value);

            if (string.IsNullOrWhiteSpace(vhost))
            {
                errors.Add(new(){ Reason = "The name of the virtual host is missing." });
            }

            string url = $"api/vhost-limits/vhost/{vhost.ToSanitizedName()}";

            if (errors.Any())
            {
                return new FaultedResult {
                           DebugInfo = new (){ URL = url, Request = request.ToJsonString(Deserializer.Options), Errors = errors }
                }
            }
            ;

            return(await PutRequest(url, request, cancellationToken).ConfigureAwait(false));
        }
Пример #2
0
        public async Task Verify_cannot_define_limits4()
        {
            var services = GetContainerBuilder().BuildServiceProvider();
            var result   = await services.GetService <IBrokerObjectFactory>()
                           .DefineVirtualHostLimits("HareDu5", x =>
            {
                x.SetMaxConnectionLimit(0);
            });

            Assert.Multiple(() =>
            {
                Assert.IsTrue(result.HasFaulted);
                Assert.AreEqual(1, result.DebugInfo.Errors.Count);
                Assert.IsNotNull(result.DebugInfo);

                VirtualHostLimitsRequest request = result.DebugInfo.Request.ToObject <VirtualHostLimitsRequest>(Deserializer.Options);

                Assert.AreEqual(0, request.MaxConnectionLimit);
            });
        }
Пример #3
0
        public async Task Verify_cannot_define_limits9()
        {
            var services = GetContainerBuilder().BuildServiceProvider();
            var result   = await services.GetService <IBrokerObjectFactory>()
                           .Object <VirtualHostLimits>()
                           .Define(string.Empty, x =>
            {
                x.SetMaxQueueLimit(100);
                x.SetMaxConnectionLimit(0);
            });

            Assert.Multiple(() =>
            {
                Assert.IsTrue(result.HasFaulted);
                Assert.AreEqual(2, result.DebugInfo.Errors.Count);
                Assert.IsNotNull(result.DebugInfo);

                VirtualHostLimitsRequest request = result.DebugInfo.Request.ToObject <VirtualHostLimitsRequest>();

                Assert.AreEqual(100, request.MaxQueueLimit);
                Assert.AreEqual(0, request.MaxConnectionLimit);
            });
        }