예제 #1
0
        public async Task BatchLogs()
        {
            _logCounter = 0;
            var mockLogger = new Mock <ISyncLogger>();

            mockLogger.Setup(logger =>
                             logger.LogSync(
                                 It.IsAny <LogRecord>()))
            .Callback((LogRecord lr) =>
            {
                Assert.IsTrue(FulcrumApplication.Context.IsInBatchLogger);
                Interlocked.Increment(ref _logCounter);
            })
            .Verifiable();
            FulcrumApplication.Setup.SynchronousFastLogger     = new BatchLogger(mockLogger.Object);
            FulcrumApplication.Setup.LogSeverityLevelThreshold = LogSeverityLevel.Information;

            var doLogging = new LogFiveTimesHandler(async c => await Task.CompletedTask);
            var options   = new NexusLinkMiddlewareOptions();

            options.Features.BatchLog.Enabled   = true;
            options.Features.BatchLog.Threshold = LogSeverityLevel.Warning;
            var handler = new Pipe.NexusLinkMiddleware(doLogging.InvokeAsync, options);
            var context = new DefaultHttpContext();

            Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger);
            await handler.InvokeAsync(context);

            Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger);
            mockLogger.Verify();
        }
        public async Task BatchLogs()
        {
            _logCounter = 0;
            var mockLogger = new Mock <ISyncLogger>();

            mockLogger.Setup(logger =>
                             logger.LogSync(
                                 It.IsAny <LogRecord>()))
            .Callback((LogRecord lr) =>
            {
                Assert.IsTrue(FulcrumApplication.Context.IsInBatchLogger);
                Interlocked.Increment(ref _logCounter);
            })
            .Verifiable();
            FulcrumApplication.Setup.SynchronousFastLogger     = new BatchLogger(mockLogger.Object);
            FulcrumApplication.Setup.LogSeverityLevelThreshold = LogSeverityLevel.Information;

#if NETCOREAPP
            var doLogging        = new LogFiveTimesHandler(async c => await Task.CompletedTask);
            var batchLogsHandler = new BatchLogs(doLogging.InvokeAsync, LogSeverityLevel.Warning);
            var context          = new DefaultHttpContext();
            Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger);
            await batchLogsHandler.InvokeAsync(context);

            Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger);
#else
            var handler = new BatchLogs(LogSeverityLevel.Warning)
            {
                InnerHandler = new LogFiveTimesHandler()
            };
            var invoker = new HttpMessageInvoker(handler);
            var request = new HttpRequestMessage(HttpMethod.Get, "https://v-mock.org/v2/smoke-testing-company/ver");
            Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger);
            await invoker.SendAsync(request, CancellationToken.None);

            Assert.IsFalse(FulcrumApplication.Context.IsInBatchLogger);
#endif
            mockLogger.Verify();
        }