public async Task Process_ProcessesRenewLock()
        {
            ILogger         fakeLogger         = Substitute.For <ILogger>();
            ILoggerProvider fakeLoggerProvider = Substitute.For <ILoggerProvider>();

            fakeLoggerProvider.CreateLogger(Arg.Any <string>()).Returns(fakeLogger);
            var processor  = new ManagementRequestProcessor(fakeLoggerProvider);
            var lockTokens = new Guid[] { Guid.NewGuid(), Guid.NewGuid() };
            var request    = new Message(new Map {
                ["lock-tokens"] = lockTokens
            })
            {
                ApplicationProperties = new Amqp.Framing.ApplicationProperties
                {
                    ["operation"] = "com.microsoft:renew-lock"
                }
            };

            Message response = await TestAmqpHost.ProcessManagementRequestAsync(request, processor);

            var expirations = (response.Body as Map)?["expirations"] as DateTime[];

            response.ApplicationProperties["statusCode"].ShouldBe(200);
            expirations.Length.ShouldBe(2);
            fakeLogger.Received(1).Log(
                LogLevel.Debug,
                Arg.Any <EventId>(),
                Arg.Is <FormattedLogValues>(a => a.ToString() == "com.microsoft:renew-lock applied to 2 lock token(s)."),
                Arg.Any <Exception>(),
                Arg.Any <Func <FormattedLogValues, Exception, string> >());
        }
        public async Task Process_ReturnsSuccessStatusCodeInResponse()
        {
            var processor = new ManagementRequestProcessor(Substitute.For <ILoggerProvider>());
            var request   = new Message();

            Message response = await TestAmqpHost.ProcessManagementRequestAsync(request, processor);

            response.ApplicationProperties["statusCode"].ShouldBe(200);
        }
        public async Task Process_LogsUnsupportedOperation(string operation)
        {
            ILogger         fakeLogger         = Substitute.For <ILogger>();
            ILoggerProvider fakeLoggerProvider = Substitute.For <ILoggerProvider>();

            fakeLoggerProvider.CreateLogger(Arg.Any <string>()).Returns(fakeLogger);
            var processor = new ManagementRequestProcessor(fakeLoggerProvider);
            var request   = new Message
            {
                ApplicationProperties = new Amqp.Framing.ApplicationProperties
                {
                    ["operation"] = operation
                }
            };

            await TestAmqpHost.ProcessManagementRequestAsync(request, processor);

            fakeLogger.Received(1).Log(
                LogLevel.Debug,
                Arg.Any <EventId>(),
                Arg.Is <FormattedLogValues>(a => a.ToString() == $"Unsupported operation {operation}."),
                Arg.Any <Exception>(),
                Arg.Any <Func <FormattedLogValues, Exception, string> >());
        }
示例#4
0
        public static async Task <Message> ProcessManagementRequestAsync(Message message, ManagementRequestProcessor processor)
        {
            ContainerHost host = Open();

            try
            {
                host.RegisterRequestProcessor("$management", processor);
                Connection connection = await host.ConnectAsync();

                var session = new Session(connection);
                try
                {
                    return(await session.SendControlRequestAsync("$management", message));
                }
                finally
                {
                    await session.CloseAsync();

                    await connection.CloseAsync();
                }
            }
            finally
            {
                host.Close();
            }
        }
        public void Credit_Returns100()
        {
            var processor = new ManagementRequestProcessor(Substitute.For <ILoggerProvider>());

            processor.Credit.ShouldBe(100);
        }