예제 #1
0
        public void FailedToLogToRedis_FailedConnectionToRedis()
        {
            var errorHandler    = new Log4NetErrorHandler();
            var mockMultiplexer = BuildFailingConnectionMultiplexer();
            var mockAppender    = BuildSuccessAppender(mockMultiplexer, errorHandler);

            var loggingEvent = new LoggingEvent(typeof(AppenderTests), null, "LoggerName", Level.Info, "Example of a Redis Stream logging entry", null);

            mockAppender.Object.DoAppend(loggingEvent);

            Assert.NotNull(errorHandler.LogException);
            Assert.IsAssignableFrom <RedisConnectionException>(errorHandler.LogException);
        }
예제 #2
0
        public void SuccessfulLogger()
        {
            var errorHandler    = new Log4NetErrorHandler();
            var mockDatabase    = BuildDatabase("SUCCESS_ID");
            var mockMultiplexer = BuildSuccessConnectionMultiplexer(mockDatabase);
            var mockAppender    = BuildSuccessAppender(mockMultiplexer, errorHandler);

            var loggingEvent = new LoggingEvent(typeof(AppenderTests), null, "LoggerName", Level.Info, "Example of a Redis Stream logging entry", null);

            mockAppender.Object.DoAppend(loggingEvent);

            Assert.Null(errorHandler.LogException);
        }
예제 #3
0
        public void FailedToLogToRedis_IncorrectReturnMessageId()
        {
            var errorHandler    = new Log4NetErrorHandler();
            var mockDatabase    = BuildDatabase(RedisValue.Null);
            var mockMultiplexer = BuildSuccessConnectionMultiplexer(mockDatabase);
            var mockAppender    = BuildSuccessAppender(mockMultiplexer, errorHandler);

            var loggingEvent = new LoggingEvent(typeof(AppenderTests), null, "LoggerName", Level.Info, "Example of a Redis Stream logging entry", null);

            mockAppender.Object.DoAppend(loggingEvent);

            Assert.NotNull(errorHandler.LogException);
            Assert.IsAssignableFrom <RedisException>(errorHandler.LogException);
        }
예제 #4
0
        public void Logging_ConfigurationElementsMissing()
        {
            var errorHandler    = new Log4NetErrorHandler();
            var mockDatabase    = BuildDatabase("SUCCESS_ID");
            var mockMultiplexer = BuildSuccessConnectionMultiplexer(mockDatabase);
            var mockAppender    = BuildSuccessAppender(mockMultiplexer, errorHandler);

            mockAppender.SetupProperty(_ => _.RedisConnectionString, null);
            mockAppender.SetupProperty(_ => _.RedisStreamName, null);

            var loggingEvent = new LoggingEvent(typeof(AppenderTests), null, "LoggerName", Level.Info, "Example of a Redis Stream logging entry", null);

            mockAppender.Object.DoAppend(loggingEvent);

            Assert.NotNull(errorHandler.LogException);
            Assert.IsAssignableFrom <InvalidOperationException>(errorHandler.LogException);
            Assert.Equal("Logging configuration elements are not correctly set.", errorHandler.Message);
        }
예제 #5
0
        private Mock <RedisStreamAppender> BuildSuccessAppender(Mock <IConnectionMultiplexer> mockMultiplexer, Log4NetErrorHandler errorHandler)
        {
            var mockAppender = new Mock <RedisStreamAppender>()
            {
                CallBase = true
            };

            //mockAppender.Setup(_ => _.RedisConnectionString).Returns("a");
            //mockAppender.Setup(_ => _.RedisStreamName).Returns("b");
            mockAppender.SetupProperty(_ => _.RedisConnectionString, "a");
            mockAppender.SetupProperty(_ => _.RedisStreamName, "b");
            mockAppender.Setup(_ => _.ConnectToRedis())
            .Returns(mockMultiplexer.Object);

            mockAppender.Object.Threshold    = Level.Info;
            mockAppender.Object.ErrorHandler = errorHandler;
            mockAppender.Object.Layout       = new PatternLayout("%date [%thread] %-5level %logger [%property{NDC}] - %message%newline");

            return(mockAppender);
        }